Böyle bir yönlendirme “|>” sadece bir hata mıdır yoksa bir şey ifade eder mi?


9

Yanlışlıkla yazdım ama bash herhangi bir hata yazdırmadı (ama boş bir dosya yarattı), bu yüzden belki de aslında bir şey ifade ettiğini düşündüm? (örneğin tarih |> tmp.txt)


1
Komutun formda olmadığından emin misiniz date |> tmp.txt cmd2? Çünkü bu cevabı değiştiriyor.
Konrad Rudolph

Yanıtlar:


17

Bu sadece ikinci bölümün boş bir komut olduğu, sadece yönlendirmeyi içeren bir boru hattı gibi görünüyor. Olarak yazmak onu date | >fileyorumlamayı kolaylaştırabilir. Boş komut, dosyayı yeniden yönlendirmeyi işlemekten başka bir şey yapmaz.

date >| filediğer yandan noclobber, normalde >varolan dosyaların üzerine yazılmasını engelleyen kabuk seçeneği için bir geçersiz kılma işlevi görür .

$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo       # works

1

Evet, hata atmaz çünkü bash için > fileadlı bir dosyaya yönlendirme anlamına gelir file. Sizin durumunuzda olduğu gibi, dosyaya yeniden yönlendirilecek bir şey olmadığı için, bash fileiçinde hiçbir şey olmayan bir dosya adı oluşturur .

[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$ 

Komik. Zsh farklı bir davranışa sahiptir: komuttan sonra my_file, çıktısını içerir date.
NI

12
@NajibIdrissi, içinde zshsadece yönlendirmeler ve hiçbir komut olduğunda, zshishal $NULLCMD(komutu catvarsayılan olarak) ya da $READNULLCMDyalnızca olup olmadığını (varsayılan olarak bir çağrı cihazı) giriş yönlendirmesi var.
Stéphane Chazelas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.