Saya sering menjalankan perintah menggunakan subshell, dan kadang-kadang ingin memiliki subshell diperluas sebelum saya menjalankan sesuatu .. Dengan cara ini saya bisa memverifikasi apa yang saya lakukan, dan mungkin mengedit apa yang akan terjadi juga.
Misalnya, bagaimana saya bisa mendapatkan baris perintah berikut untuk diperluas sebelum saya menjalankannya, jadi saya bisa mengedit hasil subkulit?
misalnya
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
Saya ingin melihat subkulit diperluas sebelum saya menjalankan perintah, seperti:
$ mv /tmp/test.txt /tmp/new.txt
Apakah ada cara untuk melakukan ini?
bash
shell
command-history
subshell
Taman Brad
sumber
sumber
zsh
dan itu bagus dan melakukan ini, seperti yang Anda sarankan ... tip yang bagus! Saya akan meninggalkan jawaban asli di sini, karena itu adalahbash
pertanyaan.Jawaban:
shell-expand-line
(\e\C-e
) memperluas penggantian perintah di bash.$(!!)\e\C-e
akan menjalankan perintah sebelumnya lagi dan masukkan hasilnya:Ini juga memperluas penggantian perintah lainnya, tetapi tidak ada perintah seperti
shell-expand-word
.Di bash 4.0 atau lebih baru Anda juga bisa mengaktifkan
globstar
, mengetik**/file.txt
, dan menggunakanglob-complete-word
(\eg
) atauglob-expand-word
(\C-x*
).sumber
Berikut ini adalah trik praktis - tambahkan baris ini ke ~ / .inputrc (membuat file jika perlu):
Perhatikan bahwa Anda juga dapat melakukan salah satu dari yang berikut untuk hanya memperluas riwayat, atau alias Anda, atau keduanya:
atau
atau
Ini diperoleh dari blog ini , dan pertanyaan tentang SuperUser ini , yang sangat mirip:
sumber