Bagaimana cara menghapus perintah saya dengan cepat?

168

Saya menggunakan terminal untuk hampir semua tugas. Katakanlah saya telah memasukkan perintah besar seperti ini:

sudo a-huge-command

Apa cara termudah untuk menghapus seluruh perintah dengan satu pintasan, daripada terus menekan backspacetombol?

Saya seorang pemula Ubuntu yang ingin menggunakan Ubuntu secara profesional.

batman
sumber
13
Ini juga bermanfaat untuk dicatat bahwa Anda dapat mengatur bash(dan beberapa kerang lainnya) untuk memahami kunci vi: set -o vi. Anda kemudian dapat melakukan esc, dd(atau mengedit / mengganti seperti yang dapat Anda lakukan dalam vi [m]).
Wayne Werner
6
Beranda, '#', Enter
Alistair Buxton
5
ini adalah hack murah tapi untuk apa nilainya, saya biasanya hanya menekan panah sampai saya mendapatkan perintah yang sangat singkat (misalnya, ls) dan kemudian mundur - ini biasanya hanya beberapa pukulan kunci sehingga tidak sebesar itu kesepakatan.
KennyPeanuts
CTRL <- mengetuk beberapa kali biasanya memungkinkan saya kembali ke awal permintaan saya .. apakah ini yang Anda maksud?
marc-andre benoit

Jawaban:

177

Gunakan Ctrl+ Uuntuk memotong teks dari posisi kursor ke awal baris perintah. Kemudian, jika Anda mau, gunakan Ctrl+ Yuntuk menempelkan teks yang dipotong.

Jika Anda hanya ingin membuang baris perintah saat ini dan mendapatkan klik prompt bersih baru Ctrl+ C.

Untuk referensi lebih lanjut silakan periksa dokumentasi Ubuntu untuk Menggunakan Terminal

Eric Carvalho
sumber
Jawaban ini berfungsi untuk bash (default Ubuntu) dan tsch.
Nick
Saya pikir dash adalah default Ubuntu?
Chris
15
dashadalah penerjemah default untuk /bin/shperintah. bashadalah login default dan shell TTY.
darvids0n
9
Saya menemukan Ctrl + Ckebiasaan buruk, karena saya sering tidak sengaja mengirim sinyal ke program dengan permintaan mereka sendiri, membunuh mereka dan kehilangan kemajuan dan / atau momentum saya.
user606723
111

Ctrl+ Useharusnya membantu Anda.

Di bawah ini adalah sisa dari opsi yang tersedia. Diambil dari sini

UNIX memahami beberapa perintah tombol kontrol, perintah yang Anda masukkan dengan menahan tombol kontrol (ctrl) sambil menekan tombol kedua

CTRL+ S- membekukan layar dan menghentikan semua tampilan di layar agar tidak berlanjut (setara dengan tombol tidak-gulir) (kadang-kadang butuh beberapa saat untuk bekerja)

CTRL+ Q- batalkan pembekuan layar dan biarkan tampilan layar berlanjut

CTRL+ C- mengganggu program yang sedang berjalan

CTRL+ \- sama seperti CTRL - C tetapi lebih kuat (digunakan saat terminal tidak merespons)

CTRL+ Z- menangguhkan program yang sedang berjalan (gunakan perintah fg untuk melanjutkan program, lihat s $

CTRL+ H- menghapus karakter terakhir yang diketik

CTRL+ W- menghapus kata terakhir yang diketik

CTRL+ U- menghapus baris terakhir yang diketik

CTRL+ R- mencari teks dari sejarah

CTRL+ D- mengakhiri input teks untuk banyak program UNIX, termasuk surat dan tulisan.

catatan:

Ketika kami menghapus menggunakan CTRL+ Watau CTRL+ U, kami juga melakukan operasi (edit) "potong" (tarik masuk) (hapus dan simpan di buffer / clipboard). Untuk menempelkan (menarik keluar) string dalam buffer / clipboard, gunakan CTRL+ Y.

devav2
sumber
7
Sebenarnya ctrl-r mencari teks dari histori.
Eric Carvalho
@EricCarvalho Kamu benar. Menghapus opsi itu dari jawaban.
devav2
2
Ini adalah kode kontrol UNIX umum. Terminal ubuntu default berbasis-bash, yang berbeda.
OrangeDog
Ctrl-U menghapus dari kursor ke awal baris. Saya sering menggunakannya dengan menempatkan kursor tepat sebelum argumen ke perintah dari sejarah. Dengan begitu, saya bisa mengetikkan perintah baru menggunakan argumen yang sama - seperti mengubah lebih sedikit file menjadi file kate sehingga saya dapat mengedit file setelah saya melihatnya untuk melihat apakah perlu diedit.
Joe
1
@OrangeDog - Ini baik-baik saja - Saya menggunakan semua ini di terminal bash-bashed Ubuntu saya, dengan pengecualian CTR- \ satu.
belacqua
61

Saya biasanya menggunakan Alt+ Backspace. Jika Anda menggunakan bash, ini akan membiarkan Anda menghapus sampai karakter khusus sebelumnya ( /, ;, , dll). Jika Anda menggunakan zsh, itu akan menghapus garis miring dan titik koma juga. Ini jauh lebih cepat daripada hanya memukul Backspace.

Di bash, ini berbeda dengan Ctrl+ wdalam arti Ctrl+ wmenghapus kata sebelumnya ketika Alt+ Backspacedihapus hingga karakter khusus sebelumnya ditemukan. Dalam zsh, kedua kombinasi tombol melakukan hal yang sama

Percepatan-G
sumber
8
Ctrl + W melakukan hal yang sama.
hytromo
Tidak akan bekerja untuk terminal seperti rxvt.
sqram
1
@lyrae Bagi saya ini berfungsi dengan baik di rxvt, meskipun tidak di xterm. Dan itu hanya berfungsi jika set -o emacsdiatur.
Marco
Saya menggunakan ALT+Backspacejuga CTRL+C. Ini berfungsi di sembarang linux. :)
tftd
@ Kashermania: Tidak, ini berbeda. Ctrl + w menghapus kata dan Alt + Backspace menghapus sampai karakter khusus sebelumnya ( /, ;, ``, dll).
jobin
35

Berikut adalah daftar cara pintas keyboard yang dapat digunakan dengan bashshell.

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

Apa yang ingin Anda lakukan dicapai dengan Ctrl+ Catau Ctrl+ Udi akhir baris.

OrangeDog
sumber
Ini adalah daftar yang paling lengkap, Meskipun jawaban terbaiknya adalah Ctrl+Catau ( Ctrl+E Ctrl+U)
New Alexandria
Berapa banyak dalam daftar yang berlaku untuk tcsh, yang saya minati?
TCSGrad
@ shan23 Baca bagian "Perintah editor" man tcsh, atau gunakan bindkey -l. Sepertinya sangat berbeda.
OrangeDog
Perhatikan bahwa beberapa di antaranya akan gagal jika Anda menggunakan bindings vi untuk bash's (atau cangkang lain) Readline. Ini sebagian besar harus berlaku untuk tcsh juga; ini pesta pra-tanggal. bash juga memasukkan banyak pintasan riwayat yang bagus dari csh / tcsh.
belacqua
25

Alt+ #(yaitu, Alt+ Shift+ 3) akan mengomentari perintah saat ini dan melanjutkan pada baris berikutnya.

Misalnya, jika Anda mengetik t, e, s, t, Alt+ #, Anda akan mendapatkan:

you@computer$ #test
you@computer$ 

Jika Anda ingin mendapatkan perintah lama Anda kembali, Anda dapat menekan panah dan menghapus karakter hash ( Up, Home, Deleteatau Up, Ctrl+ A, Delete).

Saya pikir ini adalah fitur GNU Readline , karena berfungsi di Bash, Python, dan MySQL.

Semakin bertambah
sumber
22

Ctrl+ C- selain mengganggu perintah yang sedang berjalan, ini juga dapat digunakan untuk "menyela" input baris perintah Anda.

Berbeda dengan tanda Ctrl+ U, Anda masih akan melihat apa yang Anda ketikkan tetapi kursor Anda akan melompat ke baris baru dan Anda akan mendapatkan prompt baris perintah kosong.

Vilmantas Baranauskas
sumber
4
Saya lebih suka ini hanya karena ingatan otot, dan Anda masih dapat menyalin / menempelkan sesuatu yang penting karena baris perintah yang dibatalkan tetap ada.
ish
8

readlinePintasan Bash Ctrl+ X+ Ememang sangat berguna saat Anda bekerja pada baris perintah. Jika Anda sedang dalam proses memasukkan perintah panjang dan memutuskan bahwa Anda ingin membukanya di editor teks default Anda, yang harus Anda lakukan adalah menggunakan pintasan.

Itu menggunakan readlineperpustakaan Bash dan cara pintas khusus ini disebut edit-and-execute-command. Anda dapat mengatur editor default Anda dengan menempatkan export EDITOR="/usr/bin/vi"di ~/.bashrcatau ~/.bash_aliases.

Masukkan bind -Puntuk melihat readlinebinding Anda saat ini dan lihat man readlineatau manual Ubuntu online untuk informasi lebih lanjut.


sumber
7

Saya juga menggunakan Esc+ Backspaceuntuk menghapus semua karakter sebelumnya hingga karakter khusus. Ini sama dengan Alt+ Backspace. Berguna jika Anda hanya menghapus beberapa kata sekaligus.

jytou
sumber
3

Untuk vibinding utama

Saat menggunakan vipeta kunci suka bashdengan set -o viatau zshdengan bindkey -v:

Masukkan mode

Ini hanya keystroke yang sama seperti pada mode default / emacs:

Ctrl+U

menghapus dari posisi saat ini ke awal baris. Jadi itu menghapus seluruh baris jika kursor ada di akhir.

Mode normal

Ada beberapa cara untuk menghapus garis dalam dua kali penekanan tombol:

Hapus secara garis dd, dengan jumlah default satu baris:

dd

yang paling sederhana dalam hal tombol yang disentuh.

Cara lain adalah: Pergi ke mulai dari baris ^, dan hapus ke akhir baris dengan D:

^D

Keduanya menghapus seluruh baris, tidak hanya ke kiri, seperti Ctrl+ Udalam mode insert, atau varian bleow.

Jika Anda berada di akhir baris saat ini, jadi Anda tidak perlu menghapus apa pun di sebelah kanan, ini juga bisa dilakukan:

Hapus dari sini d, untuk memulai baris ^:

d^

Anda dapat menggunakan ini semua dari mode inset, Anda perlu melarikan diri biasa dulu untuk masuk ke mode normal. Misalnya untuk menghapus seluruh baris dari mode penyisipan, gunakan:

Escdd

Volker Siegel
sumber