Jak mogę szybko usunąć moje polecenia?

168

Używam terminala do prawie wszystkich zadań. Powiedzmy, że wprowadziłem takie wielkie polecenie:

sudo a-huge-command

Jaki jest najprostszy sposób, aby usunąć całe polecenie za pomocą jednego skrótu, zamiast backspacenaciskać klawisz?

Jestem nowicjuszem Ubuntu, który chce profesjonalnie używać Ubuntu.

ordynans
źródło
13
To też warto pamiętać, że można ustawić bash(i kilka innych muszle), aby zrozumieć klucze VI set -o vi. Następnie można zrobić esc, dd(lub w inny sposób edytować / wymienić można zrobić w vi [m]).
Wayne Werner,
6
Dom, '#', Enter
Alistair Buxton
5
to jest tani hack, ale za to, co jest warte, zwykle po prostu wciskam strzałkę w górę, dopóki nie dostaję naprawdę krótkiego polecenia (np. ls), a następnie cofnij - to zwykle tylko kilka klawiszy, więc nie jest tak duży ' rozdać.
KennyPeanuts,
CTRL <- wciśnięty kilka razy zwykle pozwala mi wrócić do początku mojego zapytania ... czy to masz na myśli?
marc-andre benoit

Odpowiedzi:

177

Użyj Ctrl+, Uaby wyciąć tekst z pozycji kursora na początek wiersza polecenia. Później, jeśli chcesz, użyj Ctrl+, Yaby wkleić wycięty tekst.

Jeśli chcesz po prostu odrzucić bieżący wiersz poleceń i uzyskać nowy czysty monit, naciśnij Ctrl+ C.

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Ubuntu dotyczącą korzystania z terminala

Eric Carvalho
źródło
Ta odpowiedź działa zarówno dla bash (domyślnie Ubuntu), jak i tsch.
Nick
Myślałem, że Dash jest domyślnym Ubuntu?
Chris
15
dashjest domyślnym interpreterem /bin/shpoleceń. bashjest domyślną powłoką logowania i TTY.
darvids0n
9
Uważam, że mam Ctrl + Czły nawyk, ponieważ często przypadkowo wysyłam sygnały do ​​programów z ich własną prośbą, zabijając je i tracąc postępy i / lub pęd.
user606723,
111

Ctrl+ Upowinien ci pomóc.

Poniżej znajdują się pozostałe dostępne opcje. Złapałem stąd

UNIX rozumie kilka poleceń klawisza sterującego, które wprowadzasz przytrzymując klawisz kontrolny (ctrl) podczas naciskania drugiego klawisza

CTRL+ S- zawiesza ekran i zatrzymuje kontynuowanie wyświetlania na ekranie (odpowiednik klawisza bez przewijania) (czasami praca trwa chwilę)

CTRL+ Q- odblokowuje ekran i pozwala kontynuować wyświetlanie ekranu

CTRL+ C- przerywa działający program

CTRL+ \- taki sam jak CTRL - C, ale silniejszy (używany, gdy terminal nie odpowiada)

CTRL+ Z- zawiesza uruchomiony program (użyj komendy fg, aby kontynuować program, patrz s $

CTRL+ H- usuwa ostatni wpisany znak

CTRL+ W- usuwa ostatnie wpisane słowo

CTRL+ U- usuwa ostatni wpisany wiersz

CTRL+ R- wyszukuje tekst z historii

CTRL+ D- kończy wprowadzanie tekstu dla wielu programów UNIX, w tym poczty i pisania.

Uwaga:

Kiedy usuwamy za pomocą CTRL+ Wlub CTRL+ U, wykonujemy również (edytuj) operację „cut” (szarpnięcie w) (usuwanie i przechowywanie w buforze / schowku). Aby wkleić (wyciągnąć) ciąg do bufora / schowka, użyj CTRL+ Y.

devav2
źródło
7
Właściwie ctrl-r przeszukuje tekst z historii.
Eric Carvalho,
@EricCarvalho Masz rację. Usunięcie tej opcji z odpowiedzi.
devav2
2
Są to ogólne kody kontrolne UNIX. Domyślny terminal ubuntu jest oparty na bash, co jest inne.
OrangeDog,
Ctrl-U usuwa kursor z początku linii. Często używam go, umieszczając kursor tuż przed argumentami polecenia z historii. W ten sposób mogę wpisać nowe polecenie przy użyciu tych samych argumentów - na przykład zmienić mniej pliku na plik Kate, aby móc edytować plik po obejrzeniu go, aby sprawdzić, czy potrzebne są jakieś zmiany.
Joe
1
@OrangeDog - są w porządku - używam ich wszystkich w moim terminalu bazowym Ubuntu, z wyjątkiem CTR- \ one.
belacqua
61

Zwykle używam Alt+ Backspace. Jeśli używasz bash, to pozwala usunąć aż poprzedni znak specjalny ( /, ;, , itd.). Jeśli używasz zsh, spowoduje to również usunięcie ukośników i średników. Jest o wiele szybszy niż zwykłe uderzenie Backspace.

W bashróżni się to od Ctrl+ ww tym sensie, że Ctrl+ wusuwa poprzednie słowo gdzieś Alt+ Backspaceusuwa, dopóki nie zostanie znaleziony poprzedni znak specjalny. W zshobie kombinacje klawiszy zrobić to samo

Przyspieszenie-G
źródło
8
Ctrl + W robi to samo.
hytromo
Nie zadziała jednak dla terminali takich jak rxvt.
sqram
1
@lyrae Dla mnie działa idealnie w rxvt, choć nie w xterm. I działa tylko, jeśli set -o emacsjest ustawiony.
Marco,
Używam ALT+Backspacerównież CTRL+C. Działa to na każdym systemie Linux. :)
tftd,
@hakermania: Nie, jest inaczej. Ctrl + W usuwa wyraz i Alt + Backspace usuwa aż do poprzedniego znaku specjalnego ( /, ;, ``, etc).
praca w
35

Oto lista skrótów klawiaturowych, których można używać z bashpowłoką.

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Lets you search through previously used commands
Ctrl + C    Kill whatever you are running or start a new prompt
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab         Auto-complete files and folder names

To, co chcesz zrobić, można osiągnąć za pomocą znaku Ctrl+ Club Ctrl+ Una końcu wiersza.

OrangeDog
źródło
To jest najbardziej kompletna lista, chociaż najlepszą odpowiedzią jest Ctrl+Club ( Ctrl+E Ctrl+U)
Nowa Aleksandria,
Ile na liście dotyczy tcsh, które mnie interesują?
TCSGrad
@ shan23 Przeczytaj sekcję „Polecenia edytora” man tcshlub użyj bindkey -l. Wygląda na to, że jest zupełnie inaczej.
OrangeDog,
Zauważ, że niektóre z nich zawiodą, jeśli używasz powiązań vi dla Readline bash (lub innej powłoki). Powinny one dotyczyć również tcsh; te starsze wersje. bash zawiera również wiele fajnych skrótów historii z csh / tcsh.
belacqua
25

Alt+ #(tj. Alt+ Shift+ 3) skomentuje bieżące polecenie i przejdzie do następnego wiersza.

Na przykład, jeśli wpiszesz t, e, s, t, Alt+ #, otrzymasz:

you@computer$ #test
you@computer$ 

Jeśli chcesz dostać z powrotem swoje stare polecenia, można nacisnąć strzałkę w górę i usunąć znak hash ( Up, Home, Deletelub Up, Ctrl+ A, Delete).

Myślę, że jest to cecha GNU Readline , ponieważ działa w Bash, Python i MySQL.

Śnieżna kula
źródło
22

Ctrl+ C- oprócz przerywania uruchomionych poleceń, może być również używany do „przerywania” wprowadzania danych z wiersza poleceń.

W przeciwieństwie do Ctrl+ U, nadal zobaczysz, co wpisałeś, ale kursor przeskoczy do nowej linii i pojawi się pusty wiersz polecenia.

Vilmantas Baranauskas
źródło
4
Wolę to po prostu ze względu na pamięć mięśni i nadal możesz kopiować / wklejać wszystko, co ważne, ponieważ przerwana linia poleceń pozostaje tam.
ish
8

readlineSkrót Bash Ctrl+ X+ Ejest bardzo przydatny podczas pracy z wierszem poleceń. Jeśli jesteś w trakcie wprowadzania długiego polecenia i zdecydujesz, że zamiast tego chcesz otworzyć go w domyślnym edytorze tekstów, wystarczy użyć skrótu.

Korzysta z readlinebiblioteki Basha, a ten konkretny skrót nazywa się edit-and-execute-command. Możesz ustawić domyślnego edytora, umieszczając export EDITOR="/usr/bin/vi"w ~/.bashrclub ~/.bash_aliases.

Enter bind -P, aby zobaczyć aktualne readlinepowiązania i odnoszą się do man readlinelub manpages Ubuntu w Internecie , aby uzyskać więcej informacji.


źródło
7

Używam również Esc+, Backspaceaby usunąć wszystkie poprzednie znaki, aż do znaku specjalnego. To samo jest Alt+ Backspace. Przydatne, jeśli usuwasz tylko kilka słów na raz.

jytou
źródło
3

Do vikluczowych powiązań

Kiedy usin viklucz mapa podoba się bashz set -o vilub zshz bindkey -v:

Tryb wstawiania

Jest to takie samo naciśnięcie klawisza, jak w trybie domyślnym / emacs:

Ctrl+U

usuwanie z aktualnej pozycji na początek linii. Usuwa więc całą linię, jeśli kursor znajduje się na końcu.

Tryb normalny

Istnieje wiele sposobów usunięcia linii za pomocą dwóch naciśnięć klawiszy:

Usuń linię dd, z domyślną liczbą jednej linii:

dd

który jest najprostszy pod względem dotkniętych klawiszy.

Innym sposobem jest: Przejdź do początku linii ^i usuń do końca linii za pomocą D:

^D

Obie usuwają całą linię, nie tylko w lewo, jak Ctrl+ Uw trybie wstawiania lub wariant odkurzania.

Jeśli obecnie znajdujesz się na końcu linii, więc nie musisz usuwać niczego po prawej stronie, spowoduje to również:

Usuń stąd d, aby rozpocząć linię ^:

d^

Możesz użyć ich wszystkich z trybu wstawiania, potrzebujesz zwykłej ucieczki, aby przejść do trybu normalnego. Na przykład, aby usunąć całą linię z trybu wstawiania, użyj:

Escdd

Volker Siegel
źródło