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.