Czasami chcę uruchomić polecenie, jako argumenty tego polecenia chcę dostarczyć wiele plików znajdujących się w folderze głęboko w hierarchii systemu plików, np .:
command /this/is/a/long/path/foobar /this/is/a/long/path/quux
Miałem nadzieję, że będę mógł użyć rozszerzenia nawiasów i na pewno to działa:
command /this/is/a/long/path/{foobar,quux}
Jednak nazwy plików mogą być długie i chciałbym użyć uzupełniania nazw plików (klawisz TAB), ale nie wydaje się, aby działały one w nawiasach klamrowych, żadnych pomysłach?
$BASH_COMPLETION
. Ale nie wiem, czy tego właśnie chcesz ...BASH_COMPLETION
wiedza jest zardzewiała :( Ponadto muszę iść do domu za kilka minut ... Mam nadzieję, że ktoś odpowie na to pytanie za pomocąBASH_COMPLETION
(Jestem też zainteresowany;) Pozdrawiam.Odpowiedzi:
Trochę obejścia: w Bash,
[Ctrl]+u
usuwa z początku linii poleceń aż do kursora i umieszcza go w pamięci,[Ctrl]+y
„szarpie” (wkleja) z powrotem.Zakładając, że chcesz uruchomić polecenie
ls
i podaj go jako pliki argumentów z./deep/below/directory/
, mógłbyś:1) zacznij od wpisania długiej nazwy katalogu poprzedzonej spacją (spowoduje to zapisanie kilku naciśnięć klawiszy później):
./deep/below/directory/
(możesz użyć[Tab]
w razie potrzeby), a następnie[Ctrl]+u
, który usunie go i zachowa w pamięci (uwaga: musisz użyć './' na początku nazwy katalogu, jeśli jest to ścieżka względna, w przeciwnym razie bash nie uzupełni automatycznie nazw katalogów na początku linii poleceń )2) następnie wpisz polecenie (i jego opcje) oraz spację: ex:
ls -alFtr
3) używać
[Ctrl]+y
szarpnąć tutaj długą nazwę katalogu, a następnie wpisać początek szukanej nazwy i użyć[tab]
jak zwykle robi się autouzupełnianie jego nazwy (nazwa katalogu cięcia jest nadal w pamięci, gotowa do ponownego użycia)4) powtórz krok 3) tyle razy, ile to konieczne
5)
[Enter]
Długo do wpisania, ale znacznie szybciej do użycia ^^, spróbuj!
źródło