ฉันพยายามดูจำนวนไฟล์ใน/tmp/
ไดเรกทอรีของฉัน สำหรับสิ่งนี้ฉันคิดว่าคำสั่งนี้จะทำงาน:
watch sh -c 'ls /tmp/|wc -l'
แต่ดูเหมือนว่าจะทำงานเหมือนls
ไม่มีข้อโต้แย้ง คือผมอยู่ในและฉันได้รับจำนวนไฟล์ที่มีแทน~
/tmp/
ฉันพบวิธีแก้ปัญหาซึ่งดูเหมือนจะทำงานได้:
watch sh -c 'ls\ /tmp/|wc -l'
แต่ทำไมฉันต้องหลบหนีช่องว่างระหว่างls
และ/tmp/
? คำสั่งถูกแปลงโดยwatch
เพื่อให้ls
เอาต์พุตถูกป้อนเข้าwc
แต่/tmp/
ไม่ถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังls
?
watch
อย่างไม่ถูกต้องคำสั่งที่คุณส่งไปwatch
นั้นจะถูกป้อนwatch
ไปยังsh -c
ดังนั้นคุณจึงมีผลในการทำsh -c
สองครั้ง
/tmp
เป็นอาร์กิวเมนต์ในกรณีที่ไม่ได้เป็นอาร์กิวเมนต์sh
ls
watch "sh -c 'ls /tmp | wc -l'"
การทำคำสั่งนี้ควรจะได้รับผลกระทบที่ต้องการ นี่ไม่ใช่ความผิดลองsh -c ls /tmp
และคุณจะได้รับไดเรกทอรีบ้านของคุณ (แต่ฉันไม่รู้ว่าทำไม ... )