Mirip dengan !$, Anda gunakan !^untuk argumen pertama.
Will
13
ahh ... * nix ... kau cantik sekali ... setiap hari aku lebih mencintaimu
jx12345
Bagaimana kita bisa merujuk argumen kedua ke terakhir dari perintah sebelumnya? misalnya, Jika saya memberi echo tiger rabbit, bagaimana saya bisa merujuk tigerpada perintah berikut?
Chan Kim
3
Alt + .tidak bekerja dalam mode vi. Hanya FYI, untuk orang lain yang bingung di sini.
Brian McCutchon
160
Jika perintah sebelumnya memiliki dua argumen, seperti ini
ls a.txt b.txt
dan Anda ingin yang pertama, Anda bisa mengetik
!:1
memberi
a.txt
Atau jika Anda menginginkan keduanya, Anda bisa mengetik
!:1-2
memberi
a.txt b.txt
Anda dapat memperluas ini ke sejumlah argumen, misalnya:
@RNA, saya baru saja mencoba lagi untuk memastikan saya tidak memasukkan kesalahan ketik, dapatkah Anda memberikan sedikit lebih detail (mis. Baris perintah ubuntu, cygwin untuk windows? Pesan kesalahan? Baris sebelumnya?)
Robert Gowland
Saya menggunakan GNU bash, versi 3.2.51 (1) -release (x86_64-apple-darwin13) Hak Cipta (C) 2007 Free Software Foundation, Inc. Pesan kesalahannya adalah-bash: :1-2: bad word specifier
RNA
2
Saya mendapatkan hal yang sama jika tidak ada dua argumen di baris sebelumnya. Misalnya. baris 1 ls a.txtbaris 2ll !:1-2
Robert Gowland
kamu benar. Itu adalah kesalahan bodoh yang saya buat. Terima kasih!
RNA
Juga untuk mendapatkan semua argumen, !:^-$dapat digunakan atau tentu saja kode yang mirip dalam kombinasi dengan angka.
816-8055
88
!!:n dimana n posisi 0 berdasarkan argumen yang Anda inginkan.
Sebagai contoh:
echo 'one''two'# "one two"
echo !!:2# "two"
Itu ! prefix digunakan untuk perintah sebelumnya akses.
Perintah lain yang bermanfaat:
!$ - argumen terakhir dari perintah sebelumnya
!^ - Argumen pertama (setelah program / built-in / script) dari perintah sebelumnya
!! - perintah sebelumnya (sering diucapkan "bang bang")
Saya selalu menemukan ↑dan ↓kunci untuk bekerja juga.
Bucket
@Bucket keys pergi melalui perintah sebelumnya, sedangkan solusi yang disediakan oleh Antonio memungkinkan untuk pergi melalui argumen sebelumnya (argumen terakhir dari setiap perintah sebelumnya saja)
everyonesdesign
30
Jika Anda tahu nomor yang diberikan dalam riwayat untuk perintah tertentu, Anda bisa mengambil argumen apa pun dalam perintah itu menggunakan istilah berikut.
Gunakan berikut untuk mengambil argumen kedua dari perintah ketiga dalam sejarah,
!3:2
Gunakan berikut untuk mengambil argumen ketiga dari perintah terakhir kelima dalam sejarah,
!-5:3
Menggunakan tanda minus, Anda memintanya untuk menelusuri dari perintah terakhir dari sejarah.
Jawaban:
Anda bisa menggunakan
$_
atau!$
untuk mengingat argumen terakhir dari perintah sebelumnya.Juga
Alt + .
dapat digunakan untuk mengingat argumen terakhir dari salah satu perintah sebelumnya.sumber
!!:1
,,!!:2
dll. (!!:0
Adalah perintah sebelumnya sendiri.) Lihat gnu.org/software/bash/manual/bashref.html#History-Interaction!$
, Anda gunakan!^
untuk argumen pertama.echo tiger rabbit
, bagaimana saya bisa merujuktiger
pada perintah berikut?Alt + .
tidak bekerja dalam mode vi. Hanya FYI, untuk orang lain yang bingung di sini.Jika perintah sebelumnya memiliki dua argumen, seperti ini
dan Anda ingin yang pertama, Anda bisa mengetik
memberi
Atau jika Anda menginginkan keduanya, Anda bisa mengetik
memberi
Anda dapat memperluas ini ke sejumlah argumen, misalnya:
sumber
-bash: :1-2: bad word specifier
ls a.txt
baris 2ll !:1-2
!:^-$
dapat digunakan atau tentu saja kode yang mirip dalam kombinasi dengan angka.!!:n
dimanan
posisi 0 berdasarkan argumen yang Anda inginkan.Sebagai contoh:
Itu
!
prefix digunakan untuk perintah sebelumnya akses.Perintah lain yang bermanfaat:
!$
- argumen terakhir dari perintah sebelumnya!^
- Argumen pertama (setelah program / built-in / script) dari perintah sebelumnya!!
- perintah sebelumnya (sering diucapkan "bang bang")!n
- nomor perintahn
darihistory
!pattern
- pencocokan perintah terbarupattern
!!:s/find/replace
- perintah terakhir, gantikanfind
denganreplace
Info selengkapnya tentang riwayat perintah
sumber
!!:s/find/replace
, Anda juga bisa^find^replace
.!*
- semua argumen dari perintah sebelumnya (setelah skrip program / built-in /). misalnya:ls *.tmp *.cache rm !*
Di baris perintah Anda dapat menekan esc- .atau alt+.
Itu siklus melalui argumen terakhir dari perintah Anda sebelumnya.
sumber
↑
dan↓
kunci untuk bekerja juga.Jika Anda tahu nomor yang diberikan dalam riwayat untuk perintah tertentu, Anda bisa mengambil argumen apa pun dalam perintah itu menggunakan istilah berikut.
Gunakan berikut untuk mengambil argumen kedua dari perintah ketiga dalam sejarah,
!3:2
Gunakan berikut untuk mengambil argumen ketiga dari perintah terakhir kelima dalam sejarah,
!-5:3
Menggunakan tanda minus, Anda memintanya untuk menelusuri dari perintah terakhir dari sejarah.
sumber
! * menjalankan perintah baru dengan semua argumen sebelumnya.
sumber
$_
sebagai gantinya.Ya, Anda bisa menggunakan
!$
untuk mengingat argumen terakhir dari perintah sebelumnya.sumber