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ể lskhô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 lsvà /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?
watchkhông chính xác. Lệnh mà bạn chuyển đến watchlần lượt được cung cấp watchcho sh -c, vì vậy bạn có hiệu lực thực hiện sh -chai 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 /tmpvà 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 ...)