Możesz użyć możliwości zamiany tekstu w powłoce. W bash
, możesz użyć bestii, takiej jak:
mv blob/a_long_directory_name/c/xx !#:$:gs^c/xx^evenmore/yy
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 dla s
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 przypadku
shopt -s histverify
wyś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.
even_more
ścieżki względnej ...