Bunu daha önce yazılı olarak gördüm;
$ some-command >| /tmp/output.txt
Dikey borular standart yönlendirmelerde kullanılır, bir komutun çıktısını bir başkasına “boruya sokmak”, >|aslında >bu senaryoda olduğu gibi tamamen işe yaramaz mı?
Bunu daha önce yazılı olarak gördüm;
$ some-command >| /tmp/output.txt
Dikey borular standart yönlendirmelerde kullanılır, bir komutun çıktısını bir başkasına “boruya sokmak”, >|aslında >bu senaryoda olduğu gibi tamamen işe yaramaz mı?
Yanıtlar:
İşe yaramaz - düz >yönlendirme operatörünün özel bir şeklidir (ve belki de kafa karıştırıcı bir şekilde borularla ilgisi yoktur). bashve diğer birçok modern kabuğun noclobber, yeniden yönlendirmenin zaten var olan bir dosyanın üzerine yazmasını veya imha etmesini engelleyen bir seçeneği vardır. Örneğin, eğer noclobberdoğruysa ve dosya /tmp/output.txtzaten mevcutsa, bunun başarısız olması gerekir:
$ some-command > /tmp/output.txt
Ancak, açıkça ayarını geçersiz kılabilir noclobberile >|bile, yeniden yönlendirme çalışacaktır - yönlendirme operatörü noclobberayarlanır.
Şu noclobberanki ortamınızda ayarlanmış olup olmadığını öğrenebilirsiniz set -o.
Tarihsel not için, hem "noclobber" seçeneği hem de bypass özellikleri csh(70'lerin sonlarından) gelmektedir. kshkopyaladım (80'li yılların başında) ama >|bunun yerine kullanıldı >!. POSIX, kshsözdizimini belirtmiştir (bu nedenle bazı sistemlerde sh olarak kullanılan bash, daha yeni kül türevleri dahil tüm POSIX mermileri bunu desteklemektedir). Zsh, her iki sözdizimini de destekler. Herhangi bir Bourne kabuğu çeşidine eklendiğini sanmıyorum ama yanılıyor olabilirim.
shvardır noclobber, Mayıs 2002 hakkında beri
>|: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…