Załóżmy, że w bashu zaczynasz pisać polecenie takie jak:
$ rm -rf /foo/bar/really/long/path/here
a potem zdaj sobie sprawę, że mimo wszystko nie chcesz tego wykonywać. Czy istnieje sposób na wyczyszczenie danych wejściowych za pomocą jednego lub dwóch naciśnięć klawiszy?
To, co ostatnio robiłem, to poprzedzanie echa i umieszczanie danych wejściowych w cudzysłowach (Ctrl + A echo "
, Ctrl + E "
), a następnie wciskanie enter. Czy jest szybszy sposób?
Odpowiedzi:
Naciśnij Ctrl-, Uaby usunąć wszystko przed kursorem. Usunięte polecenie zostanie zapisane w buforze. Naciśnij Ctrl-, Yaby wkleić usunięte polecenie.
(Opcjonalnie: naciśnij Endlub Ctrl-, Eaby najpierw przeskoczyć na koniec wpisu).
Możesz też nacisnąć Ctrl-, Caby przerwać wpisywanie.
źródło
stty -a
. I to zadziała z każdym programem, który nie modyfikuje aktywnie elementów sterujących terminala.Wypróbuj Ctrl+ U. To czyści linię wejściową.
źródło
Podczas wyszukiwania znalazłem krótkie odniesienie pod adresem http://www.ice2o.com/bash_quick_ref.html .
ctrl+ e(jeśli nie na końcu linii) plus ctrl+ uzrobi to.
źródło
Ctrl- U, Ctrl- Kteż załatwia sprawę.
Ctrl- Uusuwa wszystko od początku wiersza do kursora, Ctrl- Kusuwa wszystko od kursora do końca wiersza. (Czasami warto użyć tylko jednego z nich).
źródło
Istnieją dwie możliwości, aby to zrobić
ctrl+ c- czyści całą linię, bez względu na to, gdzie znajduje się kursor.
ctrl+ u- czyści linię od pozycji kursora do początku.
źródło
Naciśnięcie fajnego skrótu Esc#. Doda
#
znak na początku (w ten sposób czyni wiersz komentarzem), a następnie naciśnie klawisz Enter. Jeśli wtedy zdecydujesz, że nadal potrzebujesz polecenia, nadal masz je w swojej historii :)źródło
Naciśnięcie Escplusa Backspacew bash wyczyści wszystko aż do pozycji kursora.
(W Cygwin wyczyści to dane wejściowe aż do następnego słowa. Słowa są oddzielone spacjami, podkreśleniami, ...)
źródło
Weź pod uwagę, że użycie Ctrl- U(lub Ctrl- Ea potem Ctrl- U) zapisze to, co wyczyścisz w buforze, abyś mógł później wkleić to za pomocą Ctrl- Y.
źródło
Jeśli używasz Bash w trybie vi (ustaw go za pomocą
set -o vi
), naciśnij, Escaby przejść do normalnego trybu vi, i wpisz,dd
aby usunąć bieżącą linię!źródło
Jest to rozwinięcie odpowiedzi knittla, która przechowuje wiersz w historii konsoli, poprzedzając go hashem. Pokonanie wad schowka, takich jak przypadkowe nadpisanie lub brak możliwości przeglądania linii cięcia w celach informacyjnych.
Linia komentarza i nowy monit
Użyj dowolnego skrótu klawiszowego:
Znak krzyżyka
#
zostanie dodany do wiersza, zmieniając w ten sposób cały wiersz w komentarz. Zwróci również nowy monit, tak jakby użytkownik nacisnął klawisz enter. na przykładPobierz skomentowaną linię
Aby odzyskać stary wiersz z historii konsoli, użyj jednego z następujących skrótów:
Powtarzaj klawisz skrótu, aż pojawi się żądana linia.
Szybkie usuwanie prefiksu skrótu
Aby usunąć
#
przedrostek z linią, dostępnych jest kilka różnych opcji:Usuń pierwszy znak i natychmiast wykonaj polecenie:
Przesuń kursor, aby rozpocząć i usunąć pierwszy znak, bez wykonywania polecenia:
źródło
Aby usunąć bieżącą linię, spróbuj:
Ctrl- X, Ctrl-U
Alternatywnie możesz użyć:
Esc-D
który wymaga w ~ / .inputrc:
zobacz: http://codesnippets.joyent.com/posts/show/1690
źródło
"\e\e": kill-whole-line
(chociaż należy dwukrotnie nacisnąć klawisz esc)