Pilih nama file unicode di Bash

9

Baik; misalkan saya di Bash dan saya punya beberapa file di folder. Beberapa dari mereka diberi nama file☠☡☢☣.txt, di mana ☠☡☢☣dimulai dengan karakter unik unicode yang tidak dapat diketik. Bagaimana saya merujuk ke salah satu dari mereka? Mendorong tab hanya pelengkapan otomatis ke file, lalu ingin Anda mengetikkan karakter gila. Apakah ada cara untuk memberi tahu bash "pilih yang ke-3 dalam daftar yang baru saja Anda berikan kepada saya"?

Erhannis
sumber

Jawaban:

9

Saya sarankan Anda mengatasinya dan menggunakan jenis pengikatan kunci lainnya dengan readline, seperti Shift+ TAB. Tambahkan yang berikut ke Anda ~/.inputrc:

"\e[Z": menu-complete

Kemudian mengeluarkan sebuah exec bash(ini harus membaca pengaturan di Anda ~/.inputrc). Sebagai sekali saja, alih-alih memulai kembali bash, Anda dapat mengatur ikatan yang sama dengan menjalankan bind '"\e[Z": menu-complete'.

Anda sekarang harus dapat menggunakan ShiftTABurutan berulang untuk menelusuri nama file yang cocok (daripada harus memasukkan karakter yang cocok berikutnya). Ini akan bekerja untuk perintah apa pun yang dikeluarkan (karena ini adalah perintah garis-baca standar yang terikat ke ShiftTABurutan) Seperti dicatat oleh OP, ini tidak mempengaruhi perilaku standar TABkunci, itu hanya menambah fungsionalitas ShiftTABkombo.

Drav Sloan
sumber
diedit untuk menyebutkan penggunaan exec bash, karena itu langkah yang cukup penting untuk membuatnya berfungsi! ;)
Drav Sloan
Terima kasih! Bagi siapa pun yang bertanya-tanya, ini sepertinya tidak mengubah fungsi normal; itu hanya menambahkan kombo tombol shift-tab.
Erhannis
Benar, silakan tinggalkan kunci tab saya sendiri !! :) Saya akan kecewa jika itu berubah: D
Drav Sloan
3

Cara lain yang kadang-kadang berfungsi adalah menggunakan ?atau *menggila kartu liar lalu mengetik beberapa "barang" lainnya hingga Anda mendapatkan kecocokan unik dengan penyelesaian tab.

lynxlynxlynx
sumber
2

Pergi ke direktori yang berisi file☠☡☢☣.txtdan masukkan ls -i. Anda akan melihat garis:

xxxxx file☠☡☢☣.txt

di mana xxxxxnomor indeks file☠☡☢☣.txt. Memasukkan:

find . -maxdepth 1 -inum xxxxx -exec /bin/mv -i {} bettername.txt \;

di mana xxxxxpada baris sebelumnya adalah nomor indeks tersebut diperoleh dari ls -i. Ini berganti nama file☠☡☢☣.txtmenjadi bettername.txt.

Greg Marks
sumber