2012-08-08 12 views

cevap

17

İstediğiniz şeyi yapmayacaksınız. Karşılaştırma:

echo '$HOME' 

için:

echo "$HOME" 

Ayrıca curl komut yararlı olabilir bir --silent seçeneği vardır.

+0

Çok yardımcı, bunu işaret ettiğin için teşekkür ederim. ama bunu php ile yapıyorum, eğer php ile bu ifadeyi nasıl çalıştırabilirim? – thevoipman

+0

PHP'yi başımın üstünden bilmiyorum, ama eminim ki bir dosya olup olmadığını görmek için nispeten basit bir mekanizma var. –

4

Kullanım wget:

-nc, --no-clobber: Mevcut dosyalar indirmek istiyorum indirmeleri atlayın.

Örnek:

if ! [ -f /home/$outputfile ]; then 
    curl -o /home/$outputfile "url" 
fi 

Ayrıca unutmayın sizin örnekte, tek tırnak içine $url var olduğunu: Sadece bir if bloğun içine curl için çağrı koyabilirsiniz

wget -nc -q -O "/home/$outputfile" "$url" 
+1

wget ile nasıl kullanılacağı konusunda bana rehberlik edebilir misiniz? – thevoipman

+2

Başlangıçta wget kullanıyordum, ancak sonra yeni indirilen dosyanın indirildiği zaman damgası olmasını istediğim için kıvrım değiştirdim. wget kullanarak, yeni zaman damgası oluşturmaz, ancak bunun yerine kopyalanan kaynaktan ne olursa olsun. Yeni zaman damgalarını nasıl oluşturabilirim? – thevoipman

+0

'-N', wget’te zaman damgası. –

1

curl, -O ve -J ile kullanıldığında dosyaların atlanmasını destekleyebilir, ancak davranışı tutarsızdır.

temelde yerine URL'den bir dosya adı çıkarma Sunucu tarafından belirlenen Content-Disposition dosya adı kullanmak -O (--remote-name) seçeneğini söyler -J (--remote-header-name). Bu şekilde, curl, sunucunun hangi dosya adının döneceğini bilmez, bu nedenle güvenlik önlemi için mevcut dosyayı yok sayabilir.

Kaynak: Örneğin Re: -J "Refusing to overwrite..."

: önce de belirtildiği gibi

$ curl -LJO -H 'Accept: application/octet-stream' 'https://api.github.com/repos/x/y/releases/assets/12345 
Warning: Refusing to overwrite my_file.bin: File 
Warning: exists 
curl: (23) Failed writing body (0 != 16384) 

Ancak, öngörülemeyen davranıştır ve tüm dosyalar için çalışmaz.

2

Kıvrılma seçeneğini -C - kullanabilirsiniz. Bu seçenek, bozuk bir yüklemeyi sürdürmek için kullanılır, ancak dosya zaten tamamlanmışsa, indirme işlemini atlar. -C argümanının tek bir tire olduğunu unutmayın. Bir dezavantaj, kıvrımın dosya boyutunu sormak için uzak sunucuya kısa bir süre ile hala temas etmesi olabilir.