W tym scenariuszu często znajduję się. Jestem w trakcie pisania polecenia i muszę sprawdzić coś jeszcze przed jego wykonaniem.
Czy istnieje sposób na otwarcie jakiejś podpowłoki z zapamiętywaniem dotychczasowych danych wejściowych, a kiedy wychodzę z tej podpowrotki, wracam do miejsca, w którym byłem?
$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>
używam zsh
command-line
zsh
Panayiotis
źródło
źródło
screen
lub,tmux
aby uzyskać wiele wirtualnych terminali na konsoli.Odpowiedzi:
Istnieje kombinacja klawiszy, EscQktóra zapisuje bufor poleceń i pozwala wprowadzić nowe polecenie. Po uruchomieniu polecenia bufor zawiera to, co wpisałeś wcześniej. Jeśli musisz wykonać inne polecenie przed zakończeniem tego, możesz wpisać EscQponownie.
(Nie próbowałem otwierać podpowłoki po naciśnięciu EscQ.)
Zobacz http://zsh.sourceforge.net/Intro/intro_10.html i wyszukaj „esc-q”
źródło
Zazwyczaj używam Ctrl+, Uktóry usuwa bieżącą linię i zapisuje ją w buforze. Stamtąd robię wszystko, czego potrzebowałem przed
mylongcommand
. Następnie, gdy jestem gotowy, używam Ctrl+, Yaby wkleić zmylongcommand
powrotem mój monit.Pamiętaj o wpisaniu na wpół wpisanego polecenia podczas sprawdzania czegoś
źródło
Moje rozwiązanie tego problemu jest zdecydowanie low-tech i niezgrabne, ale opiera się na kluczowych sekwencji prawdopodobnie jesteś już obeznany z: Hit Ctrl+ A, potem #, potem ENTER.
Powoduje to wstawienie znaku „a”
#
na początku wiersza, czyniąc go komentarzem, a następnie wykonując go, a tym samym wypychając go do historii poleceń. Możesz następnie wprowadzić polecenie pomocnicze, a następnie przewinąć w górę historię poleceń do polecenia z komentarzem, usunąć#
i wykonać polecenie w razie potrzeby.źródło
Wpisuję Ctrl+, Zaby „zawiesić” polecenie, które wpisuję, i wpisuję inne polecenie. Po uruchomieniu tego polecenia (lub przerwaniu go za pomocą Ctrl+ C) zawieszone polecenie wraca do edycji (nawet zapamiętuje pozycję kursora). Jako dodatkową wygodę, jeśli wiersz poleceń jest pusty, gdy wpisuję Ctrl+ Z, klawisz wywołuje
bg
wbudowane (zamiast tego podwójne Ctrl+ Zwysyła uruchomione polecenie bezpośrednio w tło).(Wcześniej opublikowane na stronie Remember, wpisane na wpół polecenie, podczas gdy sprawdzam coś, co zawiera głównie rozwiązania dla bash, w których nie można zrobić nic tak wygodnego. Jest to nieco bardziej wyszukana wersja wbudowanego wiązania
M-q
dopush-line
.)To nie uruchamia podpowłoki: polecenie, które wpisujesz po „zawieszeniu” poprzedniego, działa w tej samej powłoce. Dzięki temu możesz np. Zmienić bieżący katalog, jeśli po wpisaniu polecenia masz zamiar uruchomić go w innym katalogu. Jeśli chcesz uruchomić nową instancję powłoki, możesz uruchomić
zsh
z powiązania klucza, ale nie sądzę, aby było to szczególnie przydatne.źródło