Skenario sederhana: Saya mencari wsdl
file yang hilang di tengah proyek.
$ find -name '*.wsdl'
./some/very/very/long/way/to/some/lost/directory/filename.wsdl
Sekarang saya tahu di mana itu, saya ingin melakukan sesuatu dengan file ini, katakan sunting. Alih-alih menyalin / menempel jalur di belakang perintah saya, apakah mungkin untuk menggunakan jalur yang dikembalikan find
sebelumnya? Sama seperti itu mungkin untuk mengakses argumen terakhir yang Anda ketikkan !$
atau Anda perintah terakhir dengan !!
.
Saya telah membaca bahwa itu mungkin terjadi $?
, tetapi itu hanya mengembalikan saya kesalahan:0: command not found
$ echo $?
0: command not found
Jawaban:
Jalankan perintah di substitusi perintah:
Output sekarang disimpan dalam
output
variabel yang dapat Anda gunakan sebanyak yang Anda suka.sumber
$?
tidak mengandung path.return
dalam pertanyaan. Jawaban Anda benar untuk pertanyaan di atas.$?
berisi status keluar dari perintah terakhirTidak ada variabel bash khusus untuk itu.
$?
berisi kode keluar dari perintah terakhir (0 = sukses,> 0 = kode kesalahan)Anda dapat menggunakan output
find
dengan-exec
flag, seperti ini:The
{}
diganti dengan nama file ditemukan olehfind
. Ini akan menjalankan perintah untuk setiap file yang ditemukan. Jika Anda ingin menjalankan perintah dengan semua file yang ditemukan sebagai argumen gunakan+
pada akhir seperti ini:Ini akan membuka satu instance emacs dengan semua file .wsdl yang ditemukan dibuka di dalamnya.
Solusi yang lebih umum adalah menyimpan output dalam variabel:
Ini bekerja dengan semua perintah, bukan hanya menemukan. Meskipun Anda mungkin juga menggunakan
xargs
:sumber
$?
untuk mengembalikan kode keluar dari perintah lain? mis. ping 1.1.1.1 -w 10; mengembalikan $?$?
berisi kode keluar dari perintah sebelumnya, apa pun itu. Jadi jawabannya adalah ya.Berikut ini hack cepat yang harus melakukan apa yang Anda inginkan dengan penekanan tombol minimal, jika Anda tidak keberatan bahwa perintah terakhir dijalankan dua kali.
Gunakan backtick, ala:
`!!`
misalnya
* sunting: Saya melihat pertanyaan "mungkin ditipu" di atas juga berisi jawaban ini. masih relevan langsung dengan yang satu ini, jadi tinggalkan saja, tapi maaf untuk korban penipuan.
sumber
git br | grep
dalam kasus saya)!!
itu jauh lebih mudah daripada menekan tombol atas? Dan kemudian Anda masih bisa melihat perintah Anda. Jika menjalankan perintah lagi dapat diterima, saya pikir hanya menekan itu semudah (dan sedikit lebih dapat dimengerti dan transparan),