GNU/Linux >> Belajar Linux >  >> Linux

Jalankan kembali perintah sebelumnya dengan argumen yang berbeda

!:0 harus melakukan trik. Dari dokumentasi zsh:

   Word Designators
       A word designator indicates which word or words of a given command line
       are to be included in a history reference.  A `:' usually separates the
       event specification from the word designator.  It may be  omitted  only
       if  the  word designator begins with a `^', `$', `*', `-' or `%'.  Word
       designators include:

       0      The first input word (command).
       n      The nth argument.
       ^      The first argument.  That is, 1.
       $      The last argument.
       %      The word matched by (the most recent) ?str search.
       x-y    A range of words; x defaults to 0.
       *      All the arguments, or a null value if there are none.
       x*     Abbreviates `x-$'.
       x-     Like `x*' but omitting word $.

(Ini juga berfungsi dengan bash.) Ada juga !-1 jika Anda merasa lebih nyaman untuk mengetik.


#TL;DRAlt +0 +. :menyisipkan perintah terakhir tanpa argumen

Diuji pada Ubuntu 18.04 dengan pengaturan keybinding default (yaitu keybindings Emacs)

Anda dapat menggabungkan pintasan keyboard

Mari anggap perintah terakhir adalah:

mv foo bar

naik , Ctrl +w :perintah terakhir tanpa kata terakhir =mv foo

Alt +0 +. :argumen pertama dari perintah terakhir =mv

Beberapa pintasan berguna:

  • Alt +. :masukkan argumen terakhir dari perintah terakhir (ulangi untuk kembali ke riwayat)

  • Alt +angka +. :masukkan #n argumen terakhir dari perintah terakhir (ulangi untuk kembali ke riwayat)

  • Alt +- , angka , Alt +. , zsh: Alt +- +# +. :masukkan #n argumen pertama dari perintah terakhir (ulangi untuk kembali ke riwayat)

  • Potong perintah (relatif terhadap posisi kursor)

  • Ctrl +w :memotong kata terakhir

  • Alt +d :memotong kata berikutnya

  • Ctrl +k :memotong semuanya setelah

  • Ctrl +u , zsh: Alt +w :memotong semuanya sebelumnya

  • zsh: Ctrl +u :memotong seluruh perintah (Dalam bash Anda dapat menggabungkan Ctrl +u , Ctrl +k )

  • Ctrl +y :menempelkan karakter yang sebelumnya dipotong dengan perintah Potong apa saja . Dalam bash Anda dapat merangkai perintah potong , dan Ctrl +y akan menempelkan semuanya.

  • Ctrl +_ :undo last edit (sangat berguna ketika melebihi Ctrl +w )

  • Ctrl +kiri :pindah ke kata terakhir

  • Ctrl +benar :pindah ke kata berikutnya

  • rumah atau Ctrl +a :pindah ke awal perintah

  • selesai atau Ctrl +e :pindah ke akhir perintah

Untuk melihat semua pintasan yang tersedia

  • bash: bind -lp
  • zsh: bindkey -L

Sayangnya ada beberapa keterbatasan

"words" hanya mencakup a-zA-Z karakter, jadi karakter simbol apa pun akan menghentikan pintasan kata.

Jadi jika argumen terakhir adalah url dan Anda ingin menghapusnya dengan Ctrl +w itu akan menyakitkan.

Misalnya:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments

Untuk menghapus url itu menggunakan Ctrl +w , Anda harus mengulanginya 12 kali.

Alangkah baiknya memiliki pintasan serupa yang hanya berhenti di karakter spasi

Saya terus memperbaruinya di sini:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md


Linux
  1. Jalankan Script Dengan Argumen Sebagai Pengguna?

  2. Ubuntu - Jalankan perintah saat start-up dengan sudo

  3. Menggunakan riwayat bash untuk mendapatkan perintah sebelumnya, salin dan kemudian 'jalankan' tetapi dengan perintah yang dikomentari

  1. Perintah Nohup dengan Contoh

  2. Perintah JQ di Linux dengan Contoh

  3. Bagaimana saya bisa menjalankan perintah yang berbeda tetapi dengan argumen yang sama?

  1. Shell Script Wrapper Untuk Mencegah Menjalankan Perintah Tanpa Argumen?

  2. Jalankan Perintah Menggunakan Argumen yang Berasal Dari Array?

  3. argumen baris perintah untuk menjalankan docker