sử dụng watch run 2 lệnh


42

Tôi phải xem hai lệnh trong cùng một cửa sổ đầu cuối. Ý tôi là

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

Nhưng nó chỉ hiển thị một đầu ra.

Vì vậy, những gì tôi nghĩ là có thể không thể sử dụng đồng hồ để chạy nhiều lệnh trên cùng một cửa sổ.

Nếu có cách nào, xin vui lòng cho tôi biết.

Cảm ơn bạn.

Câu trả lời:


67

Bạn có thể trích dẫn các lệnh:

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

Và họ sẽ bị xử tử cùng nhau.


Cảm ơn Oli. Thực ra PC văn phòng nên không dám làm thí nghiệm. Vì vậy, đăng ở đây cho giải pháp chắc chắn. Cảm ơn bạn.
rdʒɑ

Này bạn có chắc họ sẽ làm việc không? bởi vì khi thực thi tôi nhận được một số quyền bị từ chối lỗi "df:` / usr / raja / hostctrl / new ': Quyền bị từ chối "
rɑːdʒɑ

Đó dường như là một vấn đề riêng biệt. Bạn sẽ thấy vấn đề đó mà không được bọc trong đồng hồ.
Oli

3
Hãy nhận biết điều này hoạt động bởi vì các lệnh ví dụ trả về với true . Nếu lệnh đầu tiên trả về sai , lệnh thứ hai sẽ không được thực thi (vì boolean evaluation shortcut)
karatedog

3
FTR, lệnh của tôi sử dụng &&vì OP sử dụng &&. Sự kết hợp của các lệnh và liên kết của chúng là ngẫu nhiên cho câu trả lời.
Oli

19

Nếu bạn muốn đảm bảo cả hai lệnh thực thi, một trong những cách là tách chúng ra ;thay vì &&.

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

&&chỉ cho phép thực hiện lệnh thứ hai (toán hạng thứ hai, ở bên phải &&) nếu lệnh thứ nhất được thực hiện thành công (trạng thái thoát 0). Nếu đây là hành vi dự định, đi với &&.


1
Hình thức dấu chấm phẩy này có vẻ tốt nhất đối với tôi như là một câu trả lời cho câu hỏi ban đầu. Nếu bạn muốn "chạy hai lệnh", hãy sử dụng dấu chấm phẩy! Nếu bạn muốn "chạy một lệnh, thì có thể khác" sử dụng && ....
JeremyDoulass

3

Vì lợi ích hoàn toàn ...

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

'|| phần đúng 'khiến lệnh đầu tiên đánh giá là đúng ngay cả khi không thành công vì một số lý do. Điều này sẽ cho phép lệnh tiếp theo sau && thực thi bất kể đầu ra đầu tiên. Điều này rất có thể không cần thiết cho kịch bản, chỉ cần hiển thị nó là có thể.


-1

Để nhiều lệnh chạy đồng thời, sử dụng &toán tử đơn giữa các lệnh. Như:

dothis & dothat

Để xóa bất kỳ sự nhầm lẫn nào, đây là cách các nhà khai thác khác nhau làm việc:

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 sẽ không chạy song song cả hai lệnh, nếu c1 chạy thành công thì chỉ c2 sẽ chạy.
rɑːdʒɑ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.