使用watch run 2命令


42

我必须在同一终端窗口中观看两个命令。我的意思是

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

但是它只显示一个输出。

所以我在想的是可能无法使用watch在同一窗口上运行多个命令。

如果有任何方法,请告诉我。

谢谢。

Answers:


67

您可以引用以下命令:

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

它们将一起执行。


谢谢奥莉。实际上是办公室PC,所以不敢做实验。所以张贴在这里确定解决方案。谢谢。
rɑːdʒɑ

嘿,你确定他们会工作吗?因为当执行我收到拒绝错误某些许可” DF:`在/ usr /拉贾/ hostctrl /新“:权限被拒绝”
rɑːdʒɑ

这似乎是一个单独的问题。即使没有将其包裹在手表中,您也会看到该问题。
奥利(Oli)

3
请注意,这是可行的,因为这些示例命令返回true。如果第一个命令返回false,则第二个命令将不会执行(因为boolean evaluation shortcut
karatedog

3
FTR,我的命令使用&&OP ,因为OP使用&&。命令及其链接的组合与答案有关。
奥利

19

如果要确保两个命令都执行,一种方法是用;代替&&

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

&&&&仅当第一个命令执行成功(退出状态0)时,才允许执行第二个命令(第二个操作数,位于的右边)。如果这是预期的行为,请使用&&


1
在我看来,这种分号形式最适合作为对原始问题的解答。如果要“运行两个命令”,请使用分号!如果您想“运行一个命令,则可能执行另一个命令”,请使用&& ....
JeremyDouglass

3

为了完整起见...

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

'|| true”部分会导致第一个命令由于某种原因而失败,即使结果为true。无论first的输出如何,这将允许&&之后的下一个命令执行。对于场景而言,这很可能是不必要的,只是表明它是可能的。


-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ɑːdʒɑ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.