Wählen Sie in Bash den Unicode-Dateinamen

9

Okay; Angenommen, ich bin in Bash und habe mehrere Dateien in einem Ordner. Einige von ihnen sind benannt file☠☡☢☣.txt, wobei ☠☡☢☣mit verrückten untypisierbaren Unicode-Zeichen beginnt. Wie würde ich mich auf einen von ihnen beziehen? Wenn Sie die Tabulatortaste nur automatisch filedrücken, wird ein verrückter Charakter eingegeben. Gibt es eine Möglichkeit, bash zu sagen, "wähle den dritten in der Liste aus, die du mir gerade gegeben hast"?

Erhannis
quelle

Antworten:

9

Ich würde vorschlagen, dass Sie es umgehen und eine andere Art der Schlüsselbindung mit Readline verwenden, z. B. Shift+ TAB. Fügen Sie Folgendes hinzu ~/.inputrc:

"\e[Z": menu-complete

Dann geben Sie eine aus exec bash(dies sollte dann die Einstellungen in Ihrem lesen ~/.inputrc). Anstatt einmalig Bash neu zu starten, können Sie einmalig dieselbe Bindung durch Ausführen einrichten bind '"\e[Z": menu-complete'.

Sie sollten jetzt in der Lage sein, wiederholte ShiftTABSequenzen zu verwenden, um durch die übereinstimmenden Dateinamen zu blättern (anstatt das nächste übereinstimmende Zeichen eingeben zu müssen). Dies funktioniert für jeden ausgegebenen Befehl (da es sich um einen Standard-Lesezeilenbefehl handelt, der an die ShiftTABSequenz gebunden wird). Wie vom OP festgestellt, wirkt sich dies nicht auf das Standardverhalten des TABSchlüssels aus, sondern fügt lediglich die Funktionalität der ShiftTABKombination hinzu.

Drav Sloan
quelle
bearbeitet, um die Verwendung von zu erwähnen exec bash, da dies ein ziemlich wichtiger Schritt ist, damit es funktioniert! ;)
Drav Sloan
Vielen Dank! Für alle, die sich fragen, scheint dies die normale Funktionalität nicht zu ändern. Es wird lediglich die Umschalttaste hinzugefügt.
Erhannis
Richtig, bitte lass meine Tabulatortaste in Ruhe !! :) Ich wäre verärgert, wenn sich das ändern würde: D
Drav Sloan
3

Eine andere Möglichkeit, die manchmal funktioniert, besteht darin, Platzhalter zu verwenden ?oder zu *löschen und dann einen Teil des restlichen "Materials" einzugeben, bis Sie eine eindeutige Übereinstimmung mit der Tab-Vervollständigung erhalten.

lynxlynxlynx
quelle
2

Gehen Sie in das Verzeichnis mit file☠☡☢☣.txtund geben Sie ein ls -i. Sie sehen die Linie:

xxxxx file☠☡☢☣.txt

wo xxxxxist die Indexnummer von file☠☡☢☣.txt. Eingeben:

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

wobei xxxxxin der vorhergehenden Zeile die vorgenannte Indexnummer angegeben ist, aus der ls -i. Dies wird umbenannt file☠☡☢☣.txtin bettername.txt.

Greg Marks
quelle