використовуючи команди run run 2


42

Я повинен дивитися дві команди в одних і тих же термінальних вікнах. Я маю на увазі щось подібне

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

Але його показ лише один вихід.

Тож, про що я думаю, можливо, це неможливо використовувати годинник для запуску декількох команд у одному вікні.

Якщо є якийсь спосіб, будь ласка, дайте мені знати.

Дякую.

Відповіді:


67

Ви можете процитувати команди:

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

І вони будуть страчені разом.


Дякую Олі. насправді офісний ПК, так що не наважуючись робити експерименти. тому розміщено тут для впевненого рішення. Дякую.
rɑːdʒɑ

Ей, ви впевнені, що вони спрацюють? тому що при виконанні я отримую деякий дозвіл відхилено помилку "df:` / usr / raja / hostctrl / new ": Дозвіл відхилено"
rɑːdʒɑ

Здається, це окреме питання. Ви б побачили це питання навіть без його загортання в годинник.
Олі

3
Пам’ятайте, що це працює, тому що ці приклади команд повертаються з true . Якщо перша команда поверне помилкову, друга команда не буде виконана (через boolean evaluation shortcut)
karatedog

3
FTR, моя команда використовує, &&оскільки використовує ОП &&. Поєднання команд та їх зв’язування є випадковим для відповіді.
Олі

19

Якщо ви хочете переконатися, що обидві команди виконуються, один із способів - розділити їх ;замість, а не &&.

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

&&дозволяє виконувати другу команду (другий операнд, праворуч &&), лише якщо перша команда виконана успішно (статус виходу 0). Якщо це цілеспрямована поведінка, переходьте &&.


1
Ця крапка з комою здається мені найкращою як відповідь на початкове запитання. Якщо ви хочете «запустити дві команди», використовуйте крапку з комою! Якщо ви хочете "запустити одну команду, то, можливо, іншу" використовуйте && ....
JeremyDouglass,

3

Для повноти ...

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

'|| true 'частина змушує першу команду оцінювати як істинну, навіть якщо вона з якоїсь причини не вдається. Це дозволить виконати наступну команду після && незалежно від виходу першої. Це, швидше за все, непотрібне для сценарію, просто показуючи, що це можливо.


-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ʒɑ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.