Sama seperti M-.
(meta-dot atau esc-dot atau alt-dot) adalah fungsi readline yank-last-arg
, M-C-y
(meta-control-y atau esc-ctrl-y atau ctrl-alt-y) adalah fungsi readline yank-nth-arg
. Tanpa menentukan n
, itu menarik argumen pertama dari perintah sebelumnya.
Untuk menentukan argumen, tekan Escape dan nomor atau tahan Alt dan tekan nomor. Anda dapat melakukan Alt- -untuk mulai menentukan angka negatif kemudian lepaskan Alt dan tekan digit (ini akan dihitung dari akhir daftar argumen.
Contoh:
Masukkan perintah berikut
$ echo a b c d e f g
a b c d e f g
Sekarang pada prompt berikutnya, ketik echo
(dengan spasi berikut), lalu
Tekan Alt- Ctrl- ydan sekarang Anda akan melihat:
$ echo a
tanpa menekan Enterlagi, lakukan hal berikut
Tekan Alt- 3 Alt- Ctrl-y
Tekan Alt- - 2 Alt- Ctrl-y
Sekarang Anda akan melihat:
$ echo ace
Ngomong-ngomong, Anda bisa meletakkannya echo
di jalur dengan memilih argumen 0:
Tekan Alt- 0 Alt- Ctrl-y
Edit:
Untuk menjawab pertanyaan yang Anda tambahkan ke sumber asli Anda:
Anda dapat menekan Alt- 0lalu berulang kali menekan Alt- .untuk menelusuri perintah sebelumnya (arg 0). Demikian pula Alt- -kemudian ulangi Alt- .akan memungkinkan Anda untuk melangkah melalui argumen berikutnya-ke-terakhir sebelumnya.
Jika tidak ada argumen yang sesuai pada baris tertentu dalam sejarah, bel akan berbunyi.
Jika ada kombinasi tertentu yang sering Anda gunakan, Anda dapat menentukan makro sehingga satu keystroke akan melakukannya. Contoh ini akan mengingat argumen kedua dari perintah sebelumnya dengan menekan Alt- Shift- Y. Anda dapat memilih keystroke yang tersedia yang Anda inginkan daripada yang ini. Anda dapat menekannya berulang kali untuk menelusuri yang sebelumnya.
Untuk mencobanya, masukkan makro di Bash prompt:
bind '"\eY": "\e2\e."'
Untuk membuatnya terus-menerus, tambahkan baris ini ke ~/.inputrc
file Anda :
"\eY": "\e2\e."
Sayangnya, ini sepertinya tidak berfungsi untuk arg 0 atau angka argumen negatif.
bind -lp
dan melihat bindings saat ini.-s
(baru di Bash 4) mencantumkan makro yang dibuat menggunakan-x
.M-.
juga:Alt-3
Alt-Ctrl-y
misalnya sama dengan menahanAlt
dan mengetik3.
. Jika Anda mengetik3.
beberapa kali tanpa melepaskanAlt
Anda pergi melalui argumen ketiga dari baris perintah sebelumnya.!$
mendapatkan elemen terakhir dari argumen baris perintah sebelumnya.sumber
!:3
memberi Anda yang ketiga!!
memberi Anda seluruh perintah terakhir. Berguna jika Anda lupa menggunakannyasudo
.!:1-2
membuat Anda semua kecuali yang terakhir dari 3 argumenecho foo{,bar} baz
, perintah dicatat sebagai dicetak dan diperluas setelahnya. Dengan di atas, gunakanecho !:1
setelah memutuskan untukecho foo{,bar}
dan kemudian berkembang keecho foo foobar
Untuk menggunakan argumen pertama, Anda dapat menggunakan
!^
atau!:1
Contoh:
Karena pertanyaan Anda adalah tentang menggunakan argumen lain, berikut adalah beberapa argumen yang berguna:
Empat bentuk pertama lebih sering digunakan. Bentuknya
!:2-
agak kontra-intuitif, karena tidak termasuk argumen terakhir.sumber
file3
darimv file1 file2 file3 target/
?Saya suka @ larsman menjawab begitu banyak sehingga saya harus belajar lebih banyak. Menambahkan jawaban ini untuk membantu orang lain menemukan bagian halaman manual dan mengetahui untuk apa google:
sumber
! ^ mungkin perintah untuk argumen pertama. Saya tidak yakin apakah ada cara untuk mendapatkan tanggal.
sumber
!:n
, tetapi menghitung dari akhir dan bukan dari awal?Anda juga bisa mendapatkan argumen dari perintah apa pun dalam riwayat Anda!
sumber
Diuji pada Ubuntu 18.04
Untuk menyisipkan argumen sebelumnya:
Di Linux Anda dapat mengulangi perintah untuk kembali dalam sejarah
Contoh:
Perintah terakhir adalah:
mv
foo
mv foo
Pintasan umum
Untuk mengulangi argumen dalam perintah sebelumnya
hanya bekerja di zsh
jalankan atau tambahkan ini ke
~/.zshrc
Sekarang gunakan Alt+ .untuk kembali seperti yang Anda inginkan, kemudian gunakan Alt+ :untuk beralih melalui argumen
Dengan asumsi perintah terakhir adalah
5
4
3
2
1
echo
sumber: https://stackoverflow.com/a/34861762/3163120
Untuk melihat semua pintasan tersedia
bind -lp
bindkey -L
Saya memperbarui ini di intisari ini https://gist.github.com/madacol/da38e42d7e45c2949a9f425cc20543e9
sumber
Alt .
di Zsh pada Mac mengetik≥
🤔bindkey -L
di zsh untuk melihat semua pintasan diikat, mungkin itu akan membantu menunjukkan masalah, atau bahkan menemukan perintah berguna lainnya. Dalam kasus saya misalnya: penjilidanAlt .
didefinisikan sebagaibindkey "^[." insert-last-word
.Ctrl L
(untuk menghapus layar) ->bindkey "^L" clear-screen
.Alt+Ctrl h
->bindkey "^[^H" backward-kill-word
(samaCtrl w
dengan menghapus kata terakhir)bindkey "^[^_" copy-prev-word
Pada dasarnya memiliki penggunaan dalam menghentak sebelumnya (perintah ini) argumen .
Misalnya, jika perintah berikut dikeluarkan:
maka,
Hello,
akan menjadi argumen pertama, dantoday?
yang keenam , yang adalah yang terakhir; artinya bisa dirujuk dengan mengetik:Alt+6 diikuti oleh Ctrl-Alt-6
Ctrlsecara tradisional dilambangkan sebagai karakter hat
^
ditambahkan di nama kunci, dan AltsebagaiM-
yang M eta awalan.Jadi cara pintas di atas dapat didefinisikan ulang
^My
untuk menarik.Juga, ada pintasan substitusi topi di baris perintah:
untuk mengganti string yang cocok pertama dengan perintah sebelumnya , yang berarti:
akan menghasilkan:
meninggalkan pertandingan kedua (
hello
) tidak berubah.Di atas hanyalah jalan pintas untuk:
substitusi event-level (*) untuk string yang pertama kali ditemukan (cocok) dalam perintah sebelumnya, sementara awalan bagian pertama dengan
g
sakelar akan berlaku untuk seluruh baris g secara lobal :seperti biasanya dilakukan dalam perintah terkait lainnya seperti
sed
,vi
, danregex
(ekspresi reguler) - cara standart untuk mencari ( string cocok ).Itulah yang saya pahami dengan menggunakannya sendiri dan mencoba sendiri dari apa yang saya baca dari berbagai sumber termasuk halaman manual, blog, dan forum.
Berharap itu akan memberikan beberapa cara misterius
bash
, shell Bourne-Again (permainan padash
shell, yang sendiri disebut Bourne shell setelah nama belakang penemunya), apa shell default di banyak distribusi termasuk server ( server OS ).sumber
! ^ akan memberi Anda param pertama,! $ akan memberi Anda param terakhir,!: n akan memberi Anda elemen ke-n.
sumber
Metode yang dijelaskan di akhir jawaban yang diterima juga berfungsi dengan argumen nol untuk saya. Saya memiliki garis-garis ini di
~/.inputrc
:\e2\e.
memiliki keunggulan dibandingkan\e2\e\C-y
dengan siklus melalui perintah sebelumnya jika ditekan berulang kali alih-alih memasukkan argumen kedua dari perintah sebelumnya beberapa kali.Untuk memasukkan seluruh perintah sebelumnya, Anda bisa mengetik
!!\e^
.\e^
adalahhistory-expand-line
.sumber
Jika Anda menggunakan mac Anda akan cenderung mendapatkan karakter yang diperluas dengan huruf ctrl +. Saya memiliki kunci hak-ruang-ruang-bar-opsi saya didefinisikan sebagai meta di terminal saya (iTerm2) diatur. Ini berarti saya menggunakan tombol untuk bernavigasi dengan kata dan menarik parameter dari perintah sebelumnya.
sumber