ใช้คำสั่ง watch run 2


41

ฉันต้องดูคำสั่งสองคำในหน้าต่างเทอร์มินัลเดียวกัน ฉันหมายถึงสิ่งที่ชอบ

watch du -h filename.txt && df -h

แต่มันแสดงเพียงหนึ่งเอาต์พุต

ดังนั้นสิ่งที่ฉันคิดว่าอาจเป็นไปไม่ได้ที่จะใช้นาฬิกาเพื่อเรียกใช้หลายคำสั่งในหน้าต่างเดียวกัน

หากมีวิธีใด ๆ โปรดแจ้งให้เราทราบ

ขอขอบคุณ.

คำตอบ:


66

คุณสามารถอ้างอิงคำสั่ง:

watch "du -h filename.txt && df -h"

และพวกมันจะถูกประหารชีวิตร่วมกัน


ขอบคุณ Oli จริง ๆ แล้ว office office จึงไม่กล้าทำการทดลอง โพสต์ที่นี่เพื่อแก้ปัญหาแน่นอน ขอขอบคุณ.
rɑːdʒɑ

เฮ้คุณแน่ใจว่าพวกเขาจะทำงาน เพราะเมื่อเอ็กซีคิวต์ฉันได้รับอนุญาตปฏิเสธข้อผิดพลาด "df:` / usr / raja / hostctrl / new ': การอนุญาตถูกปฏิเสธ "
rɑːdʒɑ

ดูเหมือนว่าจะเป็นปัญหาที่แยกจากกัน คุณจะเห็นว่าฉบับที่เจ็ดโดยไม่ถูกห่อไว้ในการเฝ้าดู
Oli

3
โปรดทราบว่างานนี้เพราะผู้คำสั่งตัวอย่างกลับมาพร้อมกับความจริง หากคำสั่งแรกคืนค่าเท็จคำสั่งที่สองจะไม่ถูกดำเนินการ (เพราะboolean evaluation shortcut)
karatedog

3
FTR คำสั่งของฉันใช้เพราะใช้สหกรณ์&& &&การรวมกันของคำสั่งและการเชื่อมโยงเป็นคำตอบที่บังเอิญ
Oli

19

หากคุณต้องการให้แน่ใจว่าคำสั่งทั้งดำเนินการอีกวิธีหนึ่งคือการแยกพวกเขาด้วยการแทน;&&

watch 'du -h filename.txt; df -h'

&&อนุญาตให้เรียกใช้งานคำสั่งที่สอง (ตัวถูกดำเนินการที่สองอยู่ทางด้านขวา&&) เฉพาะเมื่อคำสั่งแรกดำเนินการเสร็จสมบูรณ์ (สถานะออก0) &&ถ้าเรื่องนี้เป็นพฤติกรรมที่ตั้งใจไปกับ


1
แบบฟอร์มอัฒภาคนี้ดูเหมือนจะดีที่สุดสำหรับฉันเป็นคำตอบสำหรับคำถามเดิม หากคุณต้องการ "รันคำสั่งสองคำสั่ง" ใช้เครื่องหมายอัฒภาค! หากคุณต้องการที่จะ "เรียกใช้คำสั่งหนึ่งอาจจะเป็นอีกคำสั่ง" ใช้ && ....
JeremyDouglass

3

เพื่อความสมบูรณ์ ...

 watch 'du -h filename.txt || true && df -h'

เครื่องหมาย '| | ส่วน 'จริง' ทำให้คำสั่งแรกเพื่อประเมินว่าเป็นจริงแม้ว่ามันจะล้มเหลวด้วยเหตุผลบางอย่าง การทำเช่นนี้จะทำให้คำสั่งถัดไปหลังจาก && ดำเนินการไม่ว่าผลลัพธ์ของคำสั่งแรกจะเป็นอะไร นี่เป็นเรื่องที่ไม่จำเป็นที่สุดสำหรับสถานการณ์เพียงแสดงให้เป็นไปได้


-1

เพื่อให้หลายคำสั่งรันพร้อมกันให้ใช้&โอเปอเรเตอร์เดียวระหว่างคำสั่ง ชอบ:

dothis & dothat

หากต้องการล้างความสับสนให้ดำเนินการดังต่อไปนี้:

c1 & c2  # Run both commands parallelly
c1 ; c2  # Run both commands one by one
c1 && c2 # Run c2 only if c1 exits successfully
c1 || c2 # Run c2 only if c1 fails

c1 & c2 จะไม่เรียกใช้ทั้งสองคำสั่งแบบขนานหาก c1 ประสบความสำเร็จในการรันเฉพาะ c2 เท่านั้นที่จะทำงานได้
r 7dʒɑ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.