Jak przejść do poprzedniego katalogu roboczego w terminalu?


212

W terminalu, jak mogę zdefiniować klucz, aby przejść do poprzedniego katalogu, w którym znajdowałem się podczas zmiany katalogu za pomocą cdpolecenia?

Na przykład jestem w /opt/soft/bini wchodzę cddo /etc/squid3i chcę wrócić do pierwszego katalogu.

Odpowiedzi:


283

Możesz użyć

cd -

lub możesz użyć

cd $OLDPWD

3
Masz pojęcie, dlaczego nazwa katalogu jest drukowana na konsoli, gdy używasz „cd -”?
dtmland

4
Prawdopodobnie ponieważ stare powłoki nie wyświetlały nazwy bieżącego katalogu w pytaniu, pomocne było zobaczenie nazwy katalogu podczas pisania cd -. Na przykład, kiedy piszesz cd /usr/local, wiesz, że jesteś /usr/loal, ale kiedy piszesz cd -, nie zawsze pamiętasz, z którego katalogu pochodzisz. Dzięki temu nie musisz pisać cd -; pwd. Ale to wszystko spekulacje.
Raphael Ahrens,

2
Lub możesz użyć aliasingu: Ustaw alias, a alias -- -='cd -'następnie użyj -(1 znak) zamiast cd -(4 znaki). Szybciej:D
ADTC

2
Jak mógłbym bez tego żyć?
VSZM

1
@ AndréKuhlmann Możesz zrobić cd -dwa razy. Nie cd /; cd /usr; cd -; cd -powinno być w /usr. Ale może brakuje mi zrozumienia twojego pytania.
Raphael Ahrens

54

Pozostałe odpowiedzi są zdecydowanie kompletne w sensie bezpośredniej odpowiedzi. cd -i cd $OLDPWDzdecydowanie są to główne wybory. Jednak często stwierdzam, że wchodzenie w przepływ pracy pushdi popddziała lepiej.

Krótko mówiąc, jeśli przenosisz się do katalogu z ostatecznym zamiarem powrotu do miejsca, w którym zacząłeś, użyj pushd/ popd.

Rozszerzony przykład

Główną różnicę łatwo zilustrować na przykładzie.

$ cd dir1
$ pushd dir2

W tym momencie masz stos katalogów, który jest dir2, dir1. Uruchomienie pushdbez argumentów spowoduje powrót dir1do stosu teraz jako dir1, dir2. popdzrobiłby to samo, ale zostawiłby ci pusty stos katalogów. Nie różni się to zbytnio od tego, jak wyglądałby cd -przepływ pracy.

Jednak teraz możesz teraz wielokrotnie zmieniać katalogi i wracać do dir1. Na przykład,

$ cd dir1
$ pushd dir2
$ cd dir3

Jeśli pobiegniesz popdw tym momencie, wrócisz do dir1.


2
Możesz także układać katalogi w stos, więc wielokrotnie używaj pushdi wracaj do poprzedniego folderu podczas pracy popd.
Bernhard

1
Na pewno. Prawie podałem duży przykład, który obejmował sprawdzenie stosu dirs -v, ale dla mnie rzeczywistość jest taka, że ​​często wystarczy prosty przypadek. (Lub, co gorsza, popełniam błąd, próbując push +2lub podobnie). Pomyślałem też, że dziecko kroczy, aby nakłonić kogoś do wypróbowania pracy. :)
Josh Berry

Jak dostać cdsię na szczyt stosu bez wyskakiwania?
Jon Deaton

18

Powinieneś użyć:

cd ~-

robi to samo co cd -(z obecnie akceptowanej odpowiedzi) bez irytującego echa katalogu i jest łatwiejszy do wpisania niż cd "$OLDPWD"lub cd - > /dev/null.


2
Przekierowanie echa do pliku zerowego! To geniusz !!
Ram

2
Echo pokazuje nowy katalog, a nie poprzedni. I przydałoby mi się to, żebym wiedział, gdzie jestem teraz, zwłaszcza jeśli jestem w powłoce, która wyświetla tylko bieżącą nazwę katalogu (lub w ogóle nic) w wierszu poleceń, i jestem zbyt niezadowolony, aby zmienić monit o wyświetlenie pełnej ścieżki. Oczywiście, jeśli twój monit pokazuje już pełną ścieżkę, echo byłoby zbędne i irytujące. W takim przypadku myślę, że możesz spróbować zrobić alias -- -='cd "$OLDPWD"'to, używając -(1 znak) zamiast cd ~-(5 znaków). :)
ADTC

Źródło i wyjaśnienie: unix.stackexchange.com/a/330885/38213 Spoilery, - jest operandem, a ~ to aliasy ścieżek. Tak cd ~-/..działa, ale cd -/..nie działa!
Ray Foss

16
$ cd - 

przejdzie do poprzedniego katalogu roboczego.


3

Możesz „zdefiniować klucz” dla „cd -”, edytując plik „~ / .bashrc” i dołączając alias polecenia. Na przykład możesz dodać „cdc”, aby uzyskać „cd -”, co zapewni krótszy sposób na przejście do ostatniego katalogu poprzez dodanie:

alias cdc='cd -'

W ten sposób po prostu napiszesz „cdc” i umieści cię w ostatnim katalogu roboczym.


5
I mylę cię bez końca, gdy używasz systemu, w którym ten alias nie istnieje. Oszczędza to wpisywania jednej postaci co jakiś czas. Po co w ogóle zawracać sobie głowę?
CVn

2
„W terminalu, jak mogę zdefiniować klucz, aby przejść do poprzedniego katalogu” Nigdy się nie mylę. To tylko skrót, gdy jesteś w innym systemie, po prostu użyj długiej ręki.
Atari911

@ Atari911 świetne pytanie! oto odpowiedź: stackoverflow.com/questions/4200800 Oto co zrobiłem (związany F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(lub bardziej korzystnie przenieś go do inputrcpliku, jak wspomniano w odpowiedzi).
ADTC

1

cd ..przechodzi do poprzedniego folderu w drzewie folderu.
cd -idzie do folderu, który był wcześniej. To polecenie nie działało na niektórych dystrybucjach (ubuntu 16.04), działa w debian 9.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.