Wyczyść polecenie z terminala w OS X

24

Powiedzmy, że wpisałem polecenie w terminalu „mv * .jpg .. \ photos” i podczas pisania zdaję sobie sprawę, że w ogóle nie chcę już wykonywać tego polecenia. Chcę po prostu usunąć całe oświadczenie. Nie chcę wyczyścić całego ekranu ani usunąć historii bashów. Chcę tylko przerwać bieżącą linię i usunąć ją.

Czy istnieje skrót klawiaturowy, czy muszę usunąć każdy znak?

Paul Alexander
źródło

Odpowiedzi:

36

Zakładając, że jesteś zaskoczony, użyj Ctrl+ U.

John T.
źródło
Dzięki! to zrobiło. Czy jest gdzieś udokumentowana lista skrótów klawiaturowych?
Paul Alexander
2
To działało również dla mnie w Zshell.
LandonSchropp
1
Działa to tylko wtedy, gdy kursor znajduje się na KONIEC linii. W sytuacjach, w których kursor znajduje się na początku, musisz użyć CTRL-K
Jarrod Nettles
Jak to powodujesz w skrypcie?
Jonny
7

Wiele programów, które czekają na wpisanie wiersza polecenia, a następnie wykonanie tego wiersza, w tym bash, bierze Ctrl+, Cco oznacza „Przerwij bieżące zadanie i wróć do głównego monitu”.

Kilka programów, w tym bash, przyjmuje Ctrl+ U( Wyczyść polecenie z terminala w OS X ), aby oznaczać „skasuj początek linii do kursora” (lub „skasuj całą linię”).

W bash, zauważalne różnice między Ctrl+ Ci Ctrl+ Uobejmują:

  • Możesz cofnąć Ctrl+ U, ale nie Ctrl+ C.
  • Ctrl+ Uzachowuje część linii za kursorem, jeśli istnieje.
  • Ctrl+ Uusuwa dotknięty tekst z ekranu; Ctrl+ Cpokazuje nowy monit poniżej bieżącej linii.

Czasami chcesz przestać pisać polecenie, ale wpisz je w historii powłoki, aby uruchomić później. Przydatną sztuczką jest umieszczenie #na początku wiersza i wykonanie go: ponieważ wiersz jest teraz komentarzem, nic nie zrobi. W bash istnieje jeden skrót klawiszowy: Alt+ #.

Gilles „SO- przestań być zły”
źródło
2

Istnieje readlinefunkcja, która prawdopodobnie nie jest związana z wywoływanym naciśnięciem klawisza kill-whole-line, która zabije całą linię, a nie tylko zabicie części przed kursorem ( unix-line-discardco jest nieco mylące i musi Ctrl- u).

Możesz powiązać to z dowolnym dostępnym naciśnięciem klawisza. Lubię ShiftAlt- Uponieważ jest to funkcja pokrewna. To naciśnięcie klawisza może być powiązane, do-lowercase-versionco oznacza, że ​​robi to, co robi niezmodyfikowana wersja (w tym przypadku upcase-word). Ponieważ tak naprawdę nie potrzebujemy do tego dwóch kluczy, użyjmy tego.

Możesz to wypróbować w wierszu polecenia, tworząc powiązanie w ten sposób:

bind '"\eU":kill-whole-line'

lub ustaw go jako trwały, umieszczając ten wiersz w swoim ~/.inputrcpliku:

"\eU":kill-whole-line

Aby cofnąć operację Ctrl- ulub ShiftAlt- U(lub dowolną operację, którą można cofnąć), naciśnij Ctrl- Shift- _(podkreślenie) lub Ctrl- x Ctrl- u(dwa naciśnięcia klawiszy). Możesz też wkleić (szarpać) to, co zabiłeś, naciskając Ctrl- yco można powtórzyć, jeśli chcesz wielu kopii tego tekstu.

Nawiasem mówiąc, jeśli chcesz zabić tekst od kursora do końca linii, możesz nacisnąć Ctrl- k. Zamiast wykonywać opisane powyżej powiązanie, możesz zabić całą linię, naciskając Ctrl- u Ctrl- k. Tylko część zabita w wyniku drugiego z tych naciśnięć klawiszy zostanie zapisana w buforze zabijania, ale nadal możesz cofnąć dwukrotnie, aby odzyskać je oba.

Wstrzymano do odwołania.
źródło