Saya mengerti bahwa jika Anda mengetiknya ls *
sebenarnya diperluas ke ls a b c
saat saat ini secara langsung memiliki file a
, b
dan c
.
Saya bertanya-tanya apakah ada cara untuk memperluas ini sebelum saya menekan enter. Mirip dengan cara kerja Ctrl + X , atau tab complete berfungsi.
Jadi untuk memperjelas diriku
$ ls *
<press magic key>
$ ls a b c
dengan cara yang mirip dengan:
$ ls ~/
<press tab>
$ ls /home/username
Saya pikir saya pernah melihat ini sebelumnya tetapi saya mungkin salah.
bash
autocomplete
globbing
bramp
sumber
sumber
Jawaban:
Anda dapat menggunakan
glob-expand-word
fungsi ini, dari manbash
:Tambahkan sesuatu seperti ini ke
~/.inputrc
:Jadi
$ ls *
diikuti oleh Ctrl-Xakan berkembang menjadi$ ls a b c
, dalam contoh Anda.sumber
bind -p | grep 'C-x'
untuk melihat mereka.C-x*
pada sistem saya.Dalam bash, kemampuan readline dipanggil
glob-expand-word
dan terikat CtrlX*secara default.sumber
Saat Anda dalam
vi
mode (set -o vi
), "kunci ajaib" adalah Esc*. Ini bekerja dengan keduanyabash
danksh
.sumber
Jadi untuk menggunakan ini bisa kita lakukan
ls *
Ctrl+x *atau
ls *
Esc *Perluas garis rumit sebelum menekan masuk
sumber
Alternatif untuk glob-expand-word (\ Cx *) adalah penyisipan-selesai (\ e *). Ini berfungsi tanpa tanda bintang di bagian akhir, tetapi juga termasuk pelengkapan lain seperti file tersembunyi. Saya telah memantulkan kembali keduanya di ~ / .putput:
glob-complete-word (\ eg) dapat digunakan untuk mengkonversi misalnya
/System/Library/Launch*/*Finder
menjadi/System/Library/LaunchAgents/com.apple.Finder.plist
.sumber