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). bash
ve 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 noclobber
doğruysa ve dosya /tmp/output.txt
zaten mevcutsa, bunun başarısız olması gerekir:
$ some-command > /tmp/output.txt
Ancak, açıkça ayarını geçersiz kılabilir noclobber
ile >|
bile, yeniden yönlendirme çalışacaktır - yönlendirme operatörü noclobber
ayarlanır.
Şu noclobber
anki 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. ksh
kopyaladım (80'li yılların başında) ama >|
bunun yerine kullanıldı >!
. POSIX, ksh
sö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.
sh
vardır noclobber
, Mayıs 2002 hakkında beri
>|
: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…