Wybierz wiele plików na długiej ścieżce (uzupełnianie nazwy pliku w rozszerzeniu nawiasów?)

4

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?

Anonymous
źródło
Nie przypuszczam, że możliwe jest cd do tego, który ma długą ścieżkę i uruchomić go stamtąd? Następnie polecenie jest tylko poleceniem foobar.exe.exe quuz plik2.exe.
Duall
Ten rodzaj uzupełnienia może być dołączony do twojego $BASH_COMPLETION. Ale nie wiem, czy tego właśnie chcesz ...
olibre
@olibre - czy mógłbyś podać przykład? Chciałbym to mieć również.
nerdwaller
@nerdwaller My 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.
olibre
@olibre Nie martw się, odniosę pracę domową, wiedza, od czego zacząć (to znaczy, że mam imię) jest ogromną pomocą. Dziękuję Ci!
nerdwaller

Odpowiedzi:

1

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!

Olivier Dulac
źródło
Oczywiście działa również z bezwzględnymi ścieżkami ^^ (mówię, że jako przyjaciel zapytał mnie, dlaczego nalegam na „./”: tylko po to, aby bash mógł autouzupełniać się podczas wpisywania nazwy katalogu)
Olivier Dulac