використовуючи команди 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.