Tôi đang cố gắng xem số lượng tập tin trong /tmp/
thư mục của tôi . Đối với điều này, tôi nghĩ rằng lệnh này sẽ làm việc:
watch sh -c 'ls /tmp/|wc -l'
Nhưng nó dường như hoạt động như thể ls
không có đối số. Cụ thể, tôi đang ở ~
và tôi nhận được số lượng tệp ở đó thay vì /tmp/
. Tôi tìm thấy một cách giải quyết, có vẻ như hoạt động:
watch sh -c 'ls\ /tmp/|wc -l'
Nhưng tại sao tôi cần phải thoát khỏi không gian giữa ls
và /tmp/
? Làm thế nào là lệnh được chuyển đổi watch
để ls
đầu ra được đưa vào wc
, nhưng /tmp/
không được chuyển làm đối số ls
?
watch
không chính xác. Lệnh mà bạn chuyển đến watch
lần lượt được cung cấp watch
cho sh -c
, vì vậy bạn có hiệu lực thực hiện sh -c
hai lần.
/tmp
Đó là một đối số sh
, trong trường hợp đó, không phải là một đối số ls
.
watch "sh -c 'ls /tmp | wc -l'"
làm lệnh này sẽ nhận được ảnh hưởng mong muốn. Đây không phải là lỗi đồng hồ, hãy thửsh -c ls /tmp
và bạn sẽ nhận được thư mục nhà của mình (nhưng tôi không biết tại sao ...)