Wiele osób używających systemu Linux być może nigdy nie natknęło się na polecenia pushd i popd, mimo że istnieją od dawna. Te polecenia mogą znacząco ułatwić nawigację po katalogach w terminalu. W tym artykule przedstawimy, jak z nich korzystać.
Czym są pushd i popd?
Jednym z pomysłów Billa Joya, wprowadzonym w 1978 roku w C Shell, była koncepcja stosu katalogów oraz metod jego obsługi: pushd i popd. Naśladowanie to najczystsza forma uznania, dlatego te polecenia szybko zostały zaadaptowane w innych powłokach, takich jak Bash, a nawet w różnych systemach operacyjnych.
Idea stosu jest dość prosta. Elementy są dodawane do stosu pojedynczo, przy czym ostatni dodany element znajduje się na górze. Gdy elementy są z tego stosu usuwane, są one pobierane w odwrotnej kolejności, czyli od góry do dołu. Tego typu stosy określane są jako kolejki LIFO (Last In, First Out).
W praktyce pushd i popd oferują nieco większą elastyczność, ale warto na początku zrozumieć tę podstawową koncepcję.
Oczywiście, ponieważ mówimy o stosie katalogów, litera „d” w pushd i popd oznacza „directory” (katalog). Te polecenia pozwalają na dodawanie katalogów do stosu lub ich usuwanie.
Jakie korzyści z tego płyną?
Jak działa pushd
Kiedy używasz polecenia pushd, dzieje się kilka rzeczy:
- zmieniasz katalog, tak jak w przypadku polecenia cd,
- nazwa i ścieżka do katalogu zostają dodane na stos,
- stos jest wyświetlany jako lista katalogów oddzielonych spacjami.
W poniższych przykładach zauważ, jak stos katalogów rośnie z każdym nowym poleceniem pushd. Nowe wpisy pojawiają się po lewej stronie.
Po pierwszym użyciu pushd na stosie znajdą się dwa katalogi: ten, z którego wyszedłeś, oraz ten, do którego przeszedłeś.
W naszym przykładzie wpisujemy:
pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~
Ostatnie polecenie pushd przeniosło nas z powrotem do katalogu domowego, więc na górze stosu znajdują się wpisy reprezentujące nasz katalog domowy (~). Warto zauważyć, że nawet jeśli katalog już jest na stosie, zostanie dodany ponownie, jeśli użyjemy kolejnych poleceń pushd.
Sprawdź również, że górny wpis stosu, czyli ten ostatnio dodany, reprezentuje bieżący katalog.
Polecenie dirs
Aby wyświetlić zawartość stosu katalogów, możesz użyć polecenia dirs:
dirs
To polecenie nie wpływa na stos, a jedynie go wyświetla. Możesz również użyć opcji -v (pionowo), aby zobaczyć numeryczną pozycję każdego katalogu:
dirs -v
Aby zobaczyć pełne ścieżki do katalogów zamiast tyldy (~), dodaj opcję -l (długi format):
dirs -v -l
Dodawanie katalogu do stosu
Jak wcześniej wspomniano, użycie polecenia pushd wykonuje trzy czynności: zmienia katalog, dodaje nowy katalog do stosu i wyświetla jego zawartość. Możesz skorzystać z opcji -n (bez rotacji), by dodać katalog do stosu bez zmiany bieżącego katalogu.
Oto nasz aktualny stos katalogów:
dirs -v -l
Teraz użyjemy polecenia pushd z opcją -n, aby dodać katalog /home/dave do stosu, a następnie sprawdzimy jego zawartość.
Wpisujemy:
pushd -n /home/dave
dirs -v -l
Katalog /home/dave został dodany do drugiej pozycji w stosie, ale nie zajmuje najwyższej pozycji, ponieważ górna pozycja zawsze zajmuje bieżący katalog.
Nie opuściliśmy katalogu ~ / Videos, więc pozostaje on na swoim miejscu w stosie.
Zmiana katalogu poprzez obracanie stosu
Możesz używać numerów pozycji z pushd, aby przejść do dowolnego katalogu na stosie, przy czym stos jest obracany. Katalog, do którego się przenosisz, staje się górnym wpisem na stosie.
Możesz odwoływać się do katalogów w stosie, używając ich numerów pozycji, licząc od góry lub dołu. Dla liczb dodatnich, jak +3, liczymy od góry, a dla liczb ujemnych, jak -2, liczymy od dołu.
Katalog /home/dave/Documents znajduje się na trzeciej pozycji. Aby się do niego przenieść, możemy użyć polecenia:
pushd +3
Katalogi powyżej wybranego katalogu przesuwają się w dół stosu, a wybrany katalog staje się górnym wpisem, a my przenosimy się do niego.
Jeśli chcemy przejść do katalogu na dole stosu, możemy użyć polecenia:
pushd -0
Ostatni katalog staje się górnym wpisem, a pozostałe przesuwają się w dół. W ten sposób przechodzimy do katalogu ~/Pictures.
Polecenie popd
Możesz użyć polecenia popd, aby usunąć katalogi ze stosu.
Sprawdzając stos katalogów, dostrzegamy, że katalog na pozycji 1 to /home/dave. Aby go usunąć, wpisujemy:
dirs -v -l
popd +1
Katalog /home/dave został usunięty, a te, które znajdowały się pod nim, przesunęły się o jedno miejsce w górę.
Podobnie jak w przypadku pushd, możemy liczyć od dołu stosu. Aby usunąć ostatni katalog, używamy:
popd -0
Katalog ~/Music jest usuwany z ostatniej pozycji w stosie.
Aby zmienić katalog, wykonać pewne działania, a następnie wrócić do poprzedniego katalogu, możesz wykorzystać jednocześnie polecenia pushd i popd.
Wykorzystujemy pushd, by przejść do innego katalogu, a następnie popd, by usunąć górny katalog ze stosu i wrócić do katalogu na drugiej pozycji. To pozwala nam wrócić do katalogu, z którego właśnie opuściliśmy.
Wpisujemy:
pushd ~
popd
Rozpoczęliśmy w katalogu ~/Projects, przeszliśmy do katalogu domowego, a następnie wróciliśmy do ~/Projects.
Obracanie całego stosu
Pokażemy, jak obracać stos w przypadku zagnieżdżonych katalogów, ale możesz użyć dowolnego katalogu w systemie plików.
Nasze najgłębsze zagnieżdżenie to:
/home/dave/Projects/htg/articles
Z katalogu domowego będziemy przechodzić przez każdy katalog, aż dotrzemy do katalogu articles. Następnie sprawdzimy zawartość stosu.
Wpisujemy:
pushd ~/Projects
pushd htg
pushd articles
dirs -v -l
Kiedy wielokrotnie wydajesz polecenie pushd +1, możesz obracać się w kółko po stosie katalogów. Jeśli robisz to często, pushd +1 może stać się doskonałym kandydatem na alias.
Wpisz:
pushd +1
Ryzyko nadpisania stosu
Łatwo wrócić do starych nawyków i zmieniać katalogi za pomocą cd. Jeśli to zrobisz, nadpiszesz pierwszy katalog na stosie. Jest to nieuniknione, ponieważ najwyższa pozycja jest zawsze zarezerwowana dla bieżącego katalogu roboczego – żaden z pozostałych nie zmienia pozycji.
Aby to zobaczyć, wpisz:
dirs -v -l
cd ~/Music
dirs -v -l
Pamiętaj, aby przyzwyczaić się do używania poleceń pushd i popd (możesz również stworzyć dla nich aliasy), aby uzyskać szybki sposób na przełączanie się między katalogami.
To właśnie sprawia, że praca w terminalu jest wydajniejsza. Wydajność ma znaczenie, prawda?
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.