Seleziona il nome file unicode in Bash


9

Ok; supponiamo che io sia in Bash e che abbia diversi file in una cartella. Molti di loro hanno un nome file☠☡☢☣.txt, dove ☠☡☢☣inizia con pazzi personaggi unicode non tipizzabili. Come potrei fare riferimento a uno di essi? Spingendo la scheda si completa automaticamente solo fino a quando filenon si desidera digitare un personaggio pazzo. C'è un modo per dire a bash "seleziona il terzo in quella lista che mi hai appena dato"?

Risposte:


9

Ti suggerirei di aggirare il problema e di utilizzare un altro tipo di associazione chiave con readline, come Shift+ TAB. Aggiungi quanto segue al tuo ~/.inputrc:

"\e[Z": menu-complete

Quindi emettere un exec bash(questo dovrebbe quindi leggere le impostazioni nel tuo ~/.inputrc). Come una tantum, invece di riavviare bash, è possibile impostare lo stesso binding eseguendo bind '"\e[Z": menu-complete'.

Ora dovresti essere in grado di utilizzare ShiftTABsequenze ripetute per scorrere i nomi dei file corrispondenti (anziché dover inserire il successivo carattere corrispondente). Questo funzionerà per qualsiasi comando emesso (poiché si tratta di un comando standard in linea di lettura che viene associato alla ShiftTABsequenza). Come notato dall'OP, ciò non influisce sul comportamento standard della TABchiave, ma aggiunge semplicemente la funzionalità della ShiftTABcombo.


modificato per menzionare l'uso di exec bash, in quanto è un passaggio abbastanza importante per farlo funzionare! ;)
Drav Sloan,

Grazie! Per chiunque si stia chiedendo, questo non sembra cambiare la normale funzionalità; aggiunge semplicemente la combinazione di tasti Maiusc-Tab.
Erhannis,

Corretto, per favore lascia solo il mio tasto tab !! :) Sarei arrabbiato se cambiasse: D
Drav Sloan,

3

Un altro modo che funziona a volte è quello di usare ?o *alterare i caratteri jolly e quindi digitare parte del resto di "roba" fino a ottenere una corrispondenza unica con il completamento della scheda.


2

Vai alla directory che contiene file☠☡☢☣.txte inserisci ls -i. Vedrai la linea:

xxxxx file☠☡☢☣.txt

dove xxxxxè il numero indice di file☠☡☢☣.txt. Accedere:

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

dove xxxxxsulla riga precedente è il numero di indice di cui sopra ottenuto da ls -i. Questo rinomina file☠☡☢☣.txtcome bettername.txt.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.