Jeśli jestem ~/blob
i mam plik~/blob/a_long_directory_name/c/x.x
mogę pisać
mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y
Czy jest jakiś skrót, w którym mogę wpisać coś krótszego, który używa ścieżki katalogu w pierwszym parametrze (choć nie w moim bieżącym katalogu), np.
mv blob/a_long_directory_name/c/x.x $same_dir/y.y
gdzie coś takiego $same_dir
wskazywałoby na reż. param 1
command-line
rename
cp
Michael Durrant
źródło
źródło
even_more
ścieżki względnej ...Dzięki bash możesz użyć rozszerzenia nawiasów klamrowych
źródło
Możesz użyć możliwości zamiany tekstu w powłoce. W
bash
, możesz użyć bestii, takiej jak:Aby to rozbić:
!#
to aktualnie wpisana linia:$
prosi o wybranie ostatniego słowa (zamień go na liczbę,n
aby wybraćn
„słowo) rozważanego ciągu (!#
w tym przypadku). Ostatnie słowo wpisanego do tej pory wiersza będzie poprzednim słowem.:gs^xx^yy
wykonuje globalne (g
) zastępowanie tekstu (s
) w wynikowym słowie, zastępując „xx” słowem „yy”.^
jest tylko separatorem dlas
polecenia pozwalającego na użycie/
w twoich wzorcach.Ta metoda jest nieco bardziej ogólna, ponieważ pozwala zastąpić dowolną część ścieżki („xx”) dowolnym innym słowem („yy”).
Wreszcie, podobnie jak przy każdej manipulacji historią, dobrze jest mieć ustawione odpowiednie opcje powłoki (np. In
~/.bashrc
). W tym przypadkuwyświetli edytowany wiersz po naciśnięciu klawisza return, dzięki czemu nadal możesz go edytować i sprawdzać, czy nie ma błędów.
Dlaczego nie używałbyś takiej konstrukcji, nie jestem pewien, ale w tym przypadku działa.
źródło
c/x.x
zevenmore/y.y
zachowaniem oryginalnego przedrostek ścieżki.$PWD
). Jasne, może nie jest to najbardziej eleganckie, ale wskazuje na to, że shell ma substytuty tekstu i oznaczenia słów, które niektórzy użytkownicy mogą nadal uważać za przydatne do badania.