Bagaimana Anda mengingat argumen terakhir (n-th?) Dari perintah sebelumnya yang Anda gunakan dengan bash?


9

Seringkali saya mengeluarkan perintah berbeda pada file yang sama. Sebagai contoh:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

Apakah ada cara untuk menggunakan kembali argumen dari perintah sebelumnya di saat ini sehingga saya tidak perlu menulis ulang?

Jawaban:


15

alt-.memang bagus, tetapi jika Anda sudah tahu argumen nomor yang Anda inginkan, Anda bisa lebih cepat: !:nadalah nargumen ke-5 dari perintah sebelumnya.

Ini sering membantu untuk menggabungkan ini dengan ruang ajaib. Untuk mengaktifkannya, masukkan .inputrc Anda Space: magic-space. Dengan itu diaktifkan, ketika Anda mengetik spasi setelahnya !:2, itu akan segera diperluas ke nilainya alih-alih menunggu Anda untuk menekan enter. Menghemat Anda dari tidak sengaja mengambil argumen yang salah.


9

Dalam bash Anda dapat menggunakan cara pintas Alt+ ..
Memukulnya sekali, akan memberi Anda argumen terakhir. Memukul lebih banyak akan menggilir argumen terakhir Anda.


4

Dalam bash, penunjuk untuk "kata terakhir pada baris perintah sebelumnya" adalah !!$:

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

Anda juga dapat menggunakan "sintaks caret" untuk mengganti bagian awal dari baris perintah; ini berguna jika Anda ingin menjalankan beberapa perintah pada file yang sama:

file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`

Ada banyak kemungkinan lainnya; lihat "Penggantian riwayat" di halaman manual bash (1) untuk detailnya.


Sintaks caret itu sebenarnya lebih lambat daripada menekan panah ke atas dan mengedit sendiri baris perintah ...
badp

1
!!$dapat ditulis !$juga.
Mikel

3

Di bash, Anda juga bisa menggunakan $ _ untuk argumen baris perintah terakhir dari perintah terakhir yang Anda ketikkan:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

menjadi:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_

0

Salah satu cara yang relatif lambat adalah mengingat perintah sebelumnya dengan dan mengganti perintah sebelumnya dengan yang lebih baru.


Saya berharap sesuatu yang lebih cepat :)
badp
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.