Saya mengetiknya secara tidak sengaja tetapi bash tidak mencetak kesalahan (tetapi membuat file kosong) jadi saya pikir mungkin itu benar-benar berarti sesuatu? (misalnya tanggal |> tmp.txt)
Saya mengetiknya secara tidak sengaja tetapi bash tidak mencetak kesalahan (tetapi membuat file kosong) jadi saya pikir mungkin itu benar-benar berarti sesuatu? (misalnya tanggal |> tmp.txt)
Jawaban:
Itu tampaknya hanya pipa di mana bagian kedua adalah perintah kosong, hanya berisi pengalihan. Menulisnya sebagai date | >filemungkin membuatnya lebih mudah untuk ditafsirkan. Perintah kosong tidak melakukan apa-apa selain memproses pengalihan, membuat file.
date >| filedi sisi lain akan bertindak sebagai ganti untuk noclobberopsi shell, yang mencegah biasa >menimpa file yang ada.
$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo # works
Ya, itu tidak akan membuang kesalahan karena untuk bash > fileberarti mengarahkan ke file bernama file. Seperti dalam kasus Anda, tidak ada yang diarahkan ke file, bash hanya akan membuat nama file filetanpa apa pun di dalamnya.
[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_fileberisi output dari date.
zsh, ketika hanya ada pengalihan dan tidak ada perintah, zshjalankan $NULLCMDperintah ( catsecara default) atau $READNULLCMD(pager secara default) jika hanya ada pengalihan input .
date |> tmp.txt cmd2? Karena itu mengubah jawabannya.