Pisanie w bash, gdy działa

3

Gdy wykonujesz czasochłonne operacje w bash, takie jak instalowanie nowego oprogramowania, czy jest możliwe napisanie tekstu, który pojawi się w monicie po zakończeniu operacji.

Na przykład

Wyobraź sobie, że biegasz:

apt-get install eclipse-platform

Potem zajmie to trochę czasu, gdy zobaczysz dziennik instalacji, tymczasem chcę utworzyć nowe foldery (obszary robocze), których później użyje Eclipse.

Czy jest to możliwe bez otwierania nowego terminala (lub karty)?

wir
źródło

Odpowiedzi:

4

Możesz uruchomić instalację w tle. To pozostawia pierwszy plan do pisania dla kolejnych poleceń. Zostaniesz powiadomiony o zakończeniu zadania w tle.

Sprawdź stronę podręcznika dla apt-get i poszukaj opcji, które sprawiają, że działa on cicho, bez pisania dużej ilości danych wyjściowych. Sprawdź opcje, które sprawiają, że działa on bez konieczności wprowadzania danych przez użytkownika (np. Potwierdzenia)

Użyj przekierowania, aby apt-get zapisywał komunikaty i błędy do plików, użyj ampersand i sufiksu, aby uruchomić polecenie w tle

nohup apt-get --be-quiet --dont-ask \
    install eclipse-platform > agiep.out 2>agiep.err &

Prawdopodobnie nie potrzebujesz nohup(patrz strona podręcznika). Wymyśliłem --be-quieti -dont-askdlatego sprawdzam man apt-getprawdziwe odpowiedniki (jeśli istnieją).

Zobacz także fgna stronie podręcznika twojej powłoki.

Uwaga: wiele z powyższych funkcji zależy od powłoki. Powinno być OK w bash, ksh i ich podobnych.

RedGrittyBrick
źródło
4

Jeśli dany program nie zużywa standardowego wejścia, możesz wprowadzić polecenia Enteri wykonać je po zakończeniu programu (o ile żaden z nich nie zużyje standardowego wejścia).

Ignacio Vazquez-Abrams
źródło
Dobrym poleceniem do wypróbowania tej techniki byłby taki, który daje słyszalny sygnał.
pavium
4

Istnieje wiele sposobów na osiągnięcie tego.

Możesz wstrzymać zadanie w dowolnym momencie, naciskając ctrl + z . Następnie, aby wznowić zadanie w tle, użyj polecenia bg . Możesz przywrócić zadanie na pierwszy plan za pomocą fg

Dlatego jeśli uruchomione jest apt-get, wykonaj ctrl + z , a następnie uruchom bg . sprawi to, że będzie działał w tle.

Możesz także czytać na ekranie lub byobu.

Yab
źródło
3

Jednym przydatnym aliasem, który jest dołączony do .bashrc Ubuntu (nie wiem, czy to także w debianie) jest ten:

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

Wykorzystuje powiadomienie-wysyłanie (środowisko pulpitu): Za pomocą powiadomienia-wysyłania można wysyłać powiadomienia z pulpitu do użytkownika za pomocą demona powiadomień z wiersza poleceń. Powiadomień tych można użyć do poinformowania użytkownika o zdarzeniu lub wyświetlenia jakiejś formy informacji bez wchodzenia mu w drogę.

Możesz wydać polecenie w podpowłoce w tle, aby kontynuować wykonywanie czynności w tej powłoce. Możesz także dodać kontrole, aby uzyskać różne wiadomości, jeśli polecenie poszło dobrze lub nie:

( sleep 5 && alert "sleeped OK" || alert "something nasty happened with sleep") &
hmontoliu
źródło
3

Jest to prawdopodobnie trochę przesada, szczególnie jeśli używasz czegoś takiego jak Gnome lub KDE, w którym możesz mieć wiele okien bash, ale powinieneś spojrzeć na ekran.

Screen pozwala na uruchamianie wielu sesji terminali w jednym oknie. Pozwala także wyjść z ekranu, ale pozostawić działające procesy w tle i w dowolnym momencie ponownie podłączyć wszystkie te procesy w tle, abyś nie mógł nawet powiedzieć, że chcesz wyjść.

Zasadniczo, aby uruchomić ekran, uruchom terminal, a następnie wpisz screen. Otrzymasz wiadomość o sobie, po prostu naciśnij Enter, aby przejść obok niego. Screen to pełnoprawny program, więc ledwo mam zamiar zarysować powierzchnię, ale oto kilka podstawowych zadań. To wszystko przy założeniu domyślnych konfiguracji (które, ponieważ nie korzystałeś z programu, powinny być takie same).

Istnieje zestaw meta klawiszy, które należy nacisnąć przed każdą komendą ekranową, w przeciwnym razie dane wejściowe trafią bezpośrednio, do której wyświetlana jest sesja terminalowa. Domyślny meta klucz to ctrl-a. Na przykład, aby utworzyć nowe okno, najpierw uderzyłbyś, ctrl-aa potem uderzyłeśc

Przydatne polecenia ekranowe

Aby utworzyć nowe okno: ctrl-a c

Aby przejść do następnego okna: ctrl-a n

Aby wrócić do okna: ctrl-a p

Aby przejść do okna: ctrl-a #gdzie # to numer sesji, na którą chcesz się przełączyć

Aby wyświetlić wszystkie otwarte okna: ctrl-a "

Aby zamknąć okno: wpisz exitjak zwykle

Aby odłączyć sesję: ctrl-a d

Aby ponownie dołączyć sesję: Podczas uruchamiania ekranu dodaj -ropcję

Jak zrobić to, o co prosiłeś

Aby zrobić to, o co prosiłeś, wykonaj następujące kroki

  1. Otwórz terminal

  2. rodzaj screen

  3. rodzaj apt-get install eclipse-platform

  4. rodzaj ctrl-a c

  5. Uruchom inne polecenia

Gdy przejdziesz do kroku 5, polecenie z kroku 3 będzie kontynuowane. Aby to sprawdzić w dowolnym momencie, po prostu wpisz ctrl-a p. Aby wrócić do miejsca, w którym pisałeś, wpisz inne polecenia ctrl-a n. Po zakończeniu możesz całkowicie zamknąć ekran i terminal, wpisując exitwszystkie okna. Ale jeśli jesteś w trakcie wykonywania zestawu poleceń i chcesz wrócić do tego wszystkiego później, po prostu odłącz sesję za pomocą ctrl-a d. Jeśli chcesz wrócić i zakończyć, po prostu uruchom ekran z opcją -rscreen -r

Ponownie jest to tylko prosty przykład i nie obejmuje wszystkiego, co można zrobić z ekranem. Ale jeśli wykonujesz dużo pracy na ekranie terminala, może być świetnym narzędziem.

rhololkeolke
źródło