ls
mencetak berbeda tergantung pada apakah output ke terminal atau ke yang lain.
misalnya:
$ ls .
file1 file2
$ ls . | head
file1
file2
Apakah ada cara untuk ls
mencetak pada satu baris seolah-olah ke terminal padahal tidak. Ada -C
argumen yang agak melakukan itu, tetapi itu akan membaginya menjadi beberapa baris.
$ ls
file1 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file2 file3 file4 file5 file6 file7 file8 file9
$ ls -C . | head
file1 file11 file13 file15 file17 file19 file3 file5 file7 file9
file10 file12 file14 file16 file18 file2 file4 file6 file8
Alasan saya ingin melakukan ini adalah karena saya ingin memonitor file dalam direktori yang berubah dengan cepat. Saya telah membangun baris perintah sederhana ini:
while [[ true ]] ; do ls ; done | uniq
Uniq mencegahnya mengirim spam ke terminal saya dan hanya menampilkan perubahan. Namun itu mencetak semuanya pada garis differnet, yang membuat uniq tidak berguna, dan meningkatkan jumlah noise. Secara teori orang bisa menggunakan watch
ini, tapi saya ingin melihat file segera setelah itu muncul / menghilang.
Ini adalah solusi terakhir:
while [[ true ]] ; do ls | tr '\n' ' ' ; done | uniq