Ketika saya menggunakan penyelesaian tab standar dalam bash atau zsh, saya mengetik bagian pertama nama file atau jalur, lalu tekan untuk menyelesaikan kata. Ini berfungsi baik kecuali saya berada di direktori yang penuh dengan file di mana semua variasi dalam nama file ada di akhir kata, mis. Direktori yang penuh dengan file bertanda waktu yang semuanya diawali dengan awalan yang sama:
foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log
Dalam hal ini, jika saya mengetik foo<tab>
Saya akan mendapatkan foo-20120701124
- Saya bisa tab lagi, dan melihat semua file ... Saya harus mengetikkan 3 karakter berikutnya untuk mendapatkan nama file yang unik.
Saya ingin tahu apakah ada cara untuk mengetik misalnya 4731.log
dan kemudian melengkapi awal kata. Saya menduga bahwa ini akan sulit di bash, karena bash selesai digunakan $COMP_CWORD
dan $COMP_KEY
untuk penyelesaian yang dapat diprogram, dan dari cara saya membacanya, saya tidak berpikir bahwa mereka akan memungkinkan untuk penyelesaian kata ke kiri. Saya tidak cukup tahu tentang penyelesaian di dalam zsh untuk mengetahui di mana harus mulai mencari di halaman manual.
sumber
for i in {1..10}; do touch $(date -d "$i days $RANDOM seconds ago" +%Y%m%d%H%M%S); done
... ini menciptakan serangkaian file yang terlihat seperti20120915165427 20120916121328 20120917180952
dll. Jika saya menggunakanls *09<tab>
, itu tidak berkembang, tapi*09*<tab>
tidak.