Hapus perintah dari terminal di OS X

24

Katakanlah saya sudah mengetik perintah di terminal 'mv * .jpg .. \ photos' dan saat saya mengetik sadar saya tidak lagi ingin menjalankan perintah ini sama sekali. Saya ingin menghapus seluruh pernyataan. Saya tidak ingin menghapus seluruh layar atau menghapus riwayat bash. Saya hanya ingin membatalkan baris saat ini dan menghapusnya.

Apakah ada pintasan keyboard atau apakah saya harus benar-benar menghapus setiap karakter?

Paul Alexander
sumber

Jawaban:

36

Dengan asumsi Anda berada di bash, gunakan Ctrl+ U.

John T
sumber
Terima kasih! itu berhasil. Apakah ada daftar format pintasan keyboard yang didokumentasikan di suatu tempat?
Paul Alexander
2
Ini bekerja untuk saya di zshell juga.
LandonSchropp
1
Ini hanya berfungsi jika kursor Anda berada di AKHIR baris. Untuk situasi di mana kursor Anda berada di awal, Anda perlu menggunakan CTRL-K
Jarrod Nettles
Bagaimana Anda menyebabkan ini dalam skrip?
Jonny
7

Banyak program yang menunggu Anda mengetikkan baris perintah dan kemudian mengeksekusi baris itu, termasuk bash, mengambil Ctrl+ yang Cberarti "Batalkan tugas saat ini dan kembali ke prompt utama".

Beberapa program, termasuk bash, mengambil Ctrl+ U( Hapus perintah dari terminal di OS X ) yang berarti "hapus awal baris, hingga kursor" (atau "hapus seluruh baris").

Dalam bash, perbedaan yang dapat diamati antara Ctrl+ Cdan Ctrl+ Utermasuk:

  • Anda dapat membatalkan Ctrl+ U, tetapi tidak Ctrl+ C.
  • Ctrl+ Umempertahankan bagian garis setelah kursor, jika ada.
  • Ctrl+ Umenghapus teks yang terpengaruh dari layar; Ctrl+ Cmenunjukkan prompt baru di bawah garis saat ini.

Terkadang Anda ingin berhenti mengetik perintah tetapi memasukkannya dalam riwayat shell untuk menjalankannya nanti. Trik yang bermanfaat adalah meletakkan a #di awal baris dan menjalankannya: karena baris sekarang adalah komentar, itu tidak akan melakukan apa pun. Di bash, ada pintasan satu tombol: Alt+ #.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

Ada readlinefungsi yang mungkin tidak terikat pada keystroke yang disebut kill-whole-lineyang akan membunuh seluruh baris sebagai lawan hanya membunuh bagian sebelum kursor ( unix-line-discardyang agak keliru dan terikat ke Ctrl- u).

Anda dapat mengikat itu ke tombol apa pun yang tersedia. Saya suka ShiftAlt- Ukarena ini adalah fungsi terkait. do-lowercase-versionKeystroke itu mungkin terikat yang berarti melakukan apa pun yang versi unshifted lakukan (dalam hal ini upcase-word). Karena kita tidak benar-benar membutuhkan dua kunci untuk melakukan itu, mari kita gunakan yang itu.

Anda dapat mencobanya di baris perintah dengan membuat penjilidan dengan cara ini:

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

atau membuatnya gigih dengan meletakkan baris ini di ~/.inputrcfile Anda :

"\eU":kill-whole-line

Untuk membatalkan a Ctrl- uatau ShiftAlt- U(atau operasi apa pun yang dapat dibatalkan), tekan Ctrl- Shift- _(garis bawah) atau Ctrl- x Ctrl- u(dua kali penekanan tombol). Atau Anda dapat menempelkan kembali (menarik) apa yang Anda bunuh dengan menekan Ctrl- yyang dapat diulang jika Anda ingin banyak salinan teks itu.

Omong-omong, jika Anda ingin membunuh teks dari kursor ke akhir baris, Anda dapat menekan Ctrl- k. Jadi alih-alih melakukan penjilidan yang dijelaskan di atas, Anda dapat membunuh seluruh baris dengan menekan Ctrl- u Ctrl- k. Hanya bagian yang dibunuh oleh penekanan tombol kedua yang akan disimpan dalam buffer kill, tetapi Anda masih dapat melakukan undo dua kali untuk memulihkan keduanya.

Dijeda sampai pemberitahuan lebih lanjut.
sumber