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)
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)
Yanıtlar:
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
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]$
my_file, çıktısını içerir date.
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.
date |> tmp.txt cmd2? Çünkü bu cevabı değiştiriyor.