za pomocą zegarka uruchom 2 polecenia


42

Muszę oglądać dwa polecenia w tym samym oknie terminala. Mam na myśli coś takiego

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

Ale pokazuje tylko jeden wynik.

Myślę, że może nie być możliwe użycie funkcji watch do uruchamiania wielu poleceń w tym samym oknie.

Jeśli istnieje jakikolwiek sposób, daj mi znać.

Dziękuję Ci.

Odpowiedzi:


67

Możesz zacytować polecenia:

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

I zostaną straceni razem.


Dzięki Oli. właściwie komputer biurowy, więc nie odważę się eksperymentować. więc zamieszczono tutaj pewne rozwiązanie. Dziękuję Ci.
rɑːdʒɑ

Hej, jesteś pewien, że będą działać? ponieważ podczas wykonywania pojawia się błąd odmowy uprawnień „df:` / usr / raja / hostctrl / new ': Permission denied ”
rɑːdʒɑ

To wydaje się być osobną kwestią. Zobaczysz ten problem, nawet bez owinięcia go w zegarek.
Oli

3
Pamiętaj, że to działa, ponieważ te przykładowe polecenia zwracają wartość true . Jeśli pierwsze polecenie zwróci wartość false, drugie polecenie nie zostanie wykonane (z powodu boolean evaluation shortcut)
karatedog

3
FTR, moje polecenie używa, &&ponieważ używa OP &&. Kombinacja poleceń i ich łączenie jest przypadkowa w stosunku do odpowiedzi.
Oli

19

Jeśli chcesz mieć pewność, że oba polecenia zostaną wykonane, jednym ze sposobów jest oddzielenie ich ;zamiast &&.

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

&&umożliwia wykonanie drugiego polecenia (drugi argument po prawej stronie &&) tylko wtedy, gdy pierwsze polecenie zostało wykonane pomyślnie (status wyjścia 0). Jeśli jest to zamierzone zachowanie, idź z &&.


1
Ta forma średnika wydaje mi się najlepszą odpowiedzią na pierwotne pytanie. Jeśli chcesz „uruchomić dwa polecenia”, użyj średnika! Jeśli chcesz „uruchomić jedno polecenie, a może kolejne” użyj && ....
JeremyDouglass

3

Dla kompletności ...

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

„|| „prawda” powoduje, że pierwsze polecenie jest oceniane jako prawdziwe, nawet jeśli z jakiegoś powodu nie powiedzie się. Umożliwi to wykonanie następnego polecenia po && bez względu na wynik pierwszego. Jest to najprawdopodobniej niepotrzebne w przypadku tego scenariusza, po prostu pokazując, że jest to możliwe.


-1

Aby uruchomić wiele poleceń jednocześnie, użyj jednego &operatora między poleceniami. Lubić:

dothis & dothat

Aby usunąć wszelkie nieporozumienia, oto jak działają różni operatorzy:

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 i c2 nie uruchomią obu poleceń równolegle, jeśli c1 zakończy się powodzeniem, uruchomi się tylko c2.
rɑːdʒɑ
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.