ls
in khác nhau tùy thuộc vào việc đầu ra là một thiết bị đầu cuối hoặc một cái gì đó khác.
ví dụ:
$ ls .
file1 file2
$ ls . | head
file1
file2
Có cách nào để ls
in ra trên một dòng như thể nó đến một thiết bị đầu cuối khi không. Có một -C
đối số sắp xếp điều đó, nhưng nó sẽ chia nó thành nhiều dòng.
$ 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
Lý do tôi muốn làm điều này là vì tôi muốn theo dõi các tệp trong một thư mục đang thay đổi nhanh chóng. Tôi đã xây dựng dòng lệnh đơn giản này:
while [[ true ]] ; do ls ; done | uniq
Các uniq ngăn nó spam thiết bị đầu cuối của tôi và chỉ hiển thị các thay đổi. Tuy nhiên, nó đã in tất cả trên các dòng differnet, điều này làm cho uniq trở nên vô dụng và làm tăng lượng nhiễu. Về lý thuyết người ta có thể sử dụng watch
cho việc này, nhưng tôi muốn xem một tập tin ngay khi nó xuất hiện / biến mất.
Đây là giải pháp cuối cùng:
while [[ true ]] ; do ls | tr '\n' ' ' ; done | uniq