Wybierz nazwę pliku Unicode w Bash

9

Ok; załóżmy, że jestem w Bash i mam kilka plików w folderze. Kilka z nich ma swoje nazwy file☠☡☢☣.txt, od których ☠☡☢☣zaczynają się szalone, nietypowe postacie z Unicode. Jak mam się odnieść do jednego z nich? Wciśnięcie karty tylko automatycznie się kończy file, a następnie chce, abyś napisał szaloną postać. Czy jest jakiś sposób, aby powiedzieć bashowi „wybierz 3. z listy, którą mi właśnie dałeś”?

Erhannis
źródło

Odpowiedzi:

9

Sugeruję obejście tego i użycie innego typu powiązania klucza z readline, takiego jak Shift+ TAB. Dodaj następujące elementy do ~/.inputrc:

"\e[Z": menu-complete

Następnie wydaj exec bash(powinno to odczytać ustawienia w twoim ~/.inputrc). Jednorazowo zamiast restartować bash, możesz skonfigurować to samo powiązanie, uruchamiając bind '"\e[Z": menu-complete'.

Powinieneś teraz być w stanie używać powtarzających się ShiftTABsekwencji, aby przechodzić między pasującymi nazwami plików (zamiast wprowadzać następny pasujący znak). Będzie to działać dla każdego wydanego polecenia (ponieważ jest to standardowe polecenie wiersza odczytu, które jest powiązane z ShiftTABsekwencją). Jak zauważył PO, nie wpływa to na standardowe zachowanie TABklucza, tylko dodaje funkcjonalność ShiftTABkombinacji.

Drav Sloan
źródło
edytowane, aby wspomnieć o użyciu exec bash, ponieważ jest to dość ważny krok, aby to zadziałało! ;)
Drav Sloan,
Dzięki! Dla każdego, kto się zastanawia, nie zmienia to normalnej funkcjonalności; po prostu dodaje kombinację klawiszy shift-tab.
Erhannis,
Poprawnie, zostaw mój klawisz tab w spokoju !! :) Byłbym zdenerwowany, gdyby to się zmieniło: D
Drav Sloan
3

Innym sposobem, który czasem działa, jest użycie ?lub *globowanie symboli wieloznacznych, a następnie wpisanie części pozostałych „rzeczy”, aż uzyskasz unikalne dopasowanie z uzupełnianiem tabulatorów.

lynxlynxlynx
źródło
2

Przejdź do katalogu zawierającego file☠☡☢☣.txti wprowadź ls -i. Zobaczysz linię:

xxxxx file☠☡☢☣.txt

gdzie xxxxxjest numerem indeksu file☠☡☢☣.txt. Wchodzić:

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

gdzie xxxxxw poprzednim wierszu znajduje się wyżej wymieniony numer indeksu uzyskany z ls -i. To zmienia nazwę file☠☡☢☣.txtna bettername.txt.

Greg Marks
źródło