Pesan itu adalah output pada stderr seperti semua pesan peringatan dan kesalahan.
Anda dapat menghapus semua output kesalahan:
tail -f file 2> /dev/null
Atau untuk memfilter hanya pesan kesalahan yang berisi truncate:
{ tail -f file 2>&1 >&3 3>&- | grep -v truncated >&2 3>&-;} 3>&1
Namun itu berarti bahwa Anda kehilangan status keluar dari tail. Beberapa shell memiliki pipefailopsi (diaktifkan dengan set -o pipefail) untuk pipa tersebut untuk melaporkan status keluar tailjika gagal. zshdan bashjuga dapat melaporkan status masing-masing komponen pipa dalam $pipestatus/ $PIPESTATUSarray mereka.
Dengan zshatau bash, Anda dapat menggunakan:
tail -f file 2> >(grep -v truncated >&2)
Tetapi berhati-hatilah karena grepperintah tersebut tidak ditunggu, jadi pesan kesalahan jika ada akhirnya ditampilkan setelah tailkeluar dan shell sudah mulai menjalankan perintah berikutnya dalam skrip.
Di zsh, Anda dapat mengatasinya dengan menuliskannya:
{ tail -f file; } 2> >(grep -v truncated >&2)
Itu dibahas dalam zshdokumentasi di info zsh 'Process Substitution':
Ada masalah tambahan dengan >(PROCESS); ketika ini dilampirkan ke perintah eksternal, shell induk tidak menunggu PROSES selesai dan karenanya perintah segera berikut tidak dapat mengandalkan hasil yang lengkap. Masalah dan solusinya sama seperti yang dijelaskan di bagian MULTIOS dalam catatan Redirection :: . Oleh karena itu dalam versi sederhana dari contoh di atas:
paste <(cut -f1 FILE1) <(cut -f3 FILE2) > >(PROCESS)
(perhatikan bahwa tidak ada MULTIOS yang terlibat), PROSES akan dijalankan secara asinkron sejauh menyangkut shell induk. Solusinya adalah:
{ paste <(cut -f1 FILE1) <(cut -f3 FILE2) } > >(PROCESS)
Proses ekstra di sini dihasilkan dari shell induk yang akan menunggu penyelesaiannya.
()daripada perintah yang rumit{}?