Komenda Linux cd ..

9

Powiedz, czy muszę to często robić:

cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/

Czy jest jakiś szybszy sposób, by nie zawsze pisać ../../../../tyle razy? Jakieś kreatywne pomysły?

Stan
źródło
2
dlaczego po prostu nie wykonać cd ../../../..i skończyć z tym?
Red Cricket
8
Możesz cieszyć się, pushda popdnawet cd -.
jscott,
1
Jeśli cofniesz się tak daleko, sensowne może być po prostu cd / actual / path / you / want, w zależności od głębokości folderów.
Drew Khoury,
To o wiele więcej wysiłku, niż jest warte. Jeśli poruszasz się między katalogami, łatwiej jest podać pełną ścieżkę lub po prostu użyć cd -( aby przejść do ostatniego katalogu ). Zwykle alias h="history|grep"tak, że zamiast tego mogę używać skrótów do historii. Coś w stylu h foo3, po czym następuje !450powtórzenie tego polecenia.
ewwhite
Otwórz kolejne okno terminala i nie wpisuj w ogóle cd ../../../ ..
Matt

Odpowiedzi:

18

Klasycznym sposobem na to jest ustawienie CDPATHzmiennej. W twoim przypadku można go ustawić na .:../../../../lub .:/path/to/the/parent/of/fooosiągnąć pożądany efekt. Następnie możesz po prostu zrobić cd foo/sub1/bar/desti dostać się tam, gdzie chcesz.

Zaletą tego jest to, że uzupełnianie tabulatorów cdrównież wygląda $CDPATHi będzie działać magicznie.

Dennis Kaarsemaker
źródło
9

Możesz użyć funkcji autojump, która automatycznie uczy się z poprzedniego polecenia cd i następnym razem musisz tylko określić unikalny ciąg z pełnej ścieżki. dawny. j foo, j foo1, j foo2

pragnesh
źródło
7

Możesz tworzyć skróty dla tych poleceń, dodając aliasy do pliku konfiguracyjnego bash (~ / .bashrc lub /etc/bash.bashrc)

alias cdd="cd ../../../../"

Następnie po wpisaniu cddwykona to polecenie.

Jason
źródło
3
Tak, czy function cdd () { cd ../../../../$1/bar/dest ; }tak, to możesz po prostu wpisać np cdd foo, cdd foo2.
Andrew Schulman,
0

Ostatnio natknąłem się na https://github.com/rupa/z , który pozwala przejść do ostatnio używanego katalogu przez regex. Więc możesz zrobić coś takiego:

z foo3.*dest

zamiast:

cd ../../../../foo3/sub1/bar/dest/

(pod warunkiem, że wcześniej odwiedziłeś ten katalog i nic bardziej aktualnego / często używanego nie pasuje do wyrażenia regularnego)

rjmunro
źródło