Chciałbym zbudować krótką funkcję, aby wykonać następujące czynności. Powiedzmy, że przenoszę plik „file.tex” do mojego katalogu dokumentów:
mv file.tex ~/Documents
Następnie chciałbym przejść cd
do tego katalogu:
cd ~/Documents
Chciałbym uogólnić to na dowolny katalog, aby móc to zrobić:
mv file.tex ~/Documents
follow
i każ follow
poleceniu odczytać miejsce docelowe z poprzedniego polecenia, a następnie wykonaj je odpowiednio. W przypadku prostego katalogu nie oszczędza to dużo czasu, ale praca z katalogami zagnieżdżonymi byłaby ogromna, gdyby można było po prostu użyć
mv file.tex ~/Documents/folder1/subfolder1
follow
Myślałem, że będzie to stosunkowo proste i że mogę zrobić coś takiego:
follow()
{
place=`history 2 | sed -n '1p;1q' | rev | cut -d ' ' -f1 | rev`
cd $place
}
ale to nie działa. Jeśli echo $place
, otrzymuję żądany ciąg (testuję go ~/Documents
), ale zwraca ostatnie polecenie
No such file or directory
Katalog z pewnością istnieje. Jestem zagubiony. Czy możesz mi pomóc?
cd
alt +, .
aby zastąpić ostatni token poprzedniego polecenia. Powtórz tę czynność, aby cofnąć się w historii ostatnich tokenów. (Mówię token nie arg, ponieważ foo &
grab &
jako ostatni token.) Możesz użyć argumentu numerycznego (na przykład z klawiszem Escape + 3 alt +.).
file.tex
oryginalnej lokalizacji, dowiązania symboliczne są bardzo dobrą alternatywą, ponieważ wystarczy tylko raz połączyć, a wtedy zawsze będzie wskazywać najnowszą wersję.