Mnoho lidí z Linuxu nikdy neslyšelo o pushd a popd, ale jsou tu odjakživa. Mohou také výrazně urychlit proces procházení adresářů na příkazovém řádku. Provedeme vás, jak je používat.
Table of Contents
Co jsou push a popd?
Jedna z inovací Bill Joy začleněna v roce 1978 C Shell byl koncept zásobníku adresářů a prostředků k jeho manipulaci: pushd a popd. Napodobování je nejupřímnější forma lichotky, takže adresářový zásobník, pushd a popd byly brzy začleněny do jiných shellů (jako Bash) a dokonce i jiných operačních systémů.
Koncept zásobníku je jednoduchý. Položky jsou umístěny na hromádku po jedné, přičemž poslední přidaná položka vždy zaujímá nejvyšší pozici. Když jsou položky načteny ze zásobníku, jsou odstraněny v pořadí shora dolů. Stohy tohoto charakteru jsou často označovány jako Poslední dovnitř, první ven (LIFO) fronty.
Ve skutečnosti jsou pushd a popd o něco flexibilnější než toto, ale je to dobrý model, který je třeba mít na paměti.
Když mluvíme o zásobníku adresářů, pravděpodobně není překvapením, že „d“ v pushd a popd znamená „adresář“. Tyto příkazy vám umožňují vkládat adresáře do zásobníku adresářů nebo je z něj vytahovat.
Ale jak nám to prospívá?
Jak pushd naplní zásobník
Když použijete push, stanou se následující tři věci:
Adresář změníte stejně, jako kdybyste použili cd.
Název a cesta k adresáři jsou přidány do zásobníku.
Zásobník se zobrazí jako seznam adresářů oddělených mezerami.
V následujících příkladech si všimněte, jak se zásobník adresářů zvětšuje s každým novým příkazem pushd. Všimněte si také, že horní část zásobníku je vlevo – zde se objevují nové položky.
Po prvním příkazu pushd jsou v zásobníku dvě položky: adresář, který jste opustili, a ten, do kterého jste se přesunuli.
Pro náš příklad zadáme následující:
pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~
Poslední příkaz pushd nás vrátil do našeho domovského adresáře, takže první a poslední položky v zásobníku jsou vlnovka (~), která představuje náš domovský adresář. To ukazuje, že i když je adresář již v zásobníku, bude znovu přidán pro další příkazy push.
Všimněte si také, že položka zcela vlevo v zásobníku, což je naposledy přidaná položka, je váš aktuální adresář.
Velitelství dirs
K zobrazení zásobníku adresářů můžete použít příkaz dirs, jak je znázorněno níže:
dirs
Neovlivňuje zásobník, pouze jej zobrazuje. Některé z možností, které můžete použít s pushd, odkazují na pozici adresářů v zásobníku.
Pokud chcete vidět číselnou pozici každého adresáře, můžete použít volbu -v (svisle), jak je uvedeno níže:
dirs -v
Pokud byste místo vlnovky (~) raději viděli uvedenou cestu k domovskému adresáři, přidejte volbu -l (dlouhý formát), například takto:
dirs -v -l
Přidání adresáře do zásobníku
Jak jsme viděli, když použijete příkaz pushd, provede tři věci: změní váš adresář, přidá nový adresář do zásobníku a zobrazí zásobník. Pomocí volby -n (bez rotace) můžete přidat adresář do zásobníku, aniž byste změnili aktuální adresář.
Zde je náš zásobník adresářů:
dirs -v -l
Nyní jako parametr použijeme příkaz pushd s volbou -n a pas v adresáři /home/dave. Poté znovu zkontrolujeme zásobník adresářů.
Zadáme následující:
pushd -n /home/dave
dirs -v -l
Adresář /home/dave byl přidán do zásobníku ve slotu 1, což je druhé místo v zásobníku. Nemůže obsadit nejvyšší pozici, protože slot nula je vždy aktuální adresář.
Neopustili jsme aktuální adresář ~/Videos, takže nebyl otočen na jinou pozici v zásobníku.
Změna adresáře otočením zásobníku
Pomocí číselných parametrů s pushd se můžete přesunout do libovolného adresáře v zásobníku a zásobník se při tom otáčí. Adresář, který jste se rozhodli přesunout, se pak stane první položkou v zásobníku.
Na adresáře v zásobníku odkazujete jejich číslem pozice. Můžete počítat od horní nebo spodní části hromádky. Pro kladná čísla, například +3, počítejte shora; pro záporná čísla, například -2, počítejte ode dna.
Adresář /home/dave/Documents je na pozici tři. K přesunutí tohoto adresáře můžeme použít následující příkaz:
pushd +3
Adresáře v zásobníku nad adresářem, který jsme vybrali, se přesunou na konec zásobníku. Náš vybraný adresář nyní zaujímá nejvyšší pozici a my jsme se do tohoto adresáře přesunuli.
Pokud se chceme změnit do adresáře na konci zásobníku, můžeme použít následující příkaz:
pushd -0
Poslední adresář se přesune do prvního slotu a všechny ostatní se přesunou dolů v zásobníku. Přešli jsme do adresáře ~/Pictures.
Příkaz popd
K odstranění adresářů ze zásobníku můžete použít příkaz popd.
Pokud se podíváme na zásobník adresářů, vidíme, že adresář na pozici 1 je /home/dave. Abychom to odstranili ze zásobníku, napíšeme následující, abychom číslo předali popd:
dirs -v -l
popd +1
Adresář /home/dave byl odstraněn a ty, které byly v zásobníku pod ním, se posunuly o jedno místo výše.
Stejně jako můžeme s pushd, můžeme počítat ode dna zásobníku s popd. Chcete-li odstranit poslední adresář ze zásobníku, napíšeme:
popd -0
Adresář ~/Music je odstraněn z poslední pozice v zásobníku.
Chcete-li změnit adresář, něco udělat a pak přejít zpět do předchozího adresáře, můžete použít pushd a popd společně.
Pro přesun do jiného adresáře použijeme pushd. Použijeme popd k odstranění nejvyššího adresáře v zásobníku a přesuneme se do adresáře na druhé pozici. Toto je adresář, ze kterého jste se právě přestěhovali, takže se vrátíte zpět do adresáře, ve kterém jste byli původně.
Zadáme následující:
pushd ~
popd
Začali jsme v adresáři ~/Projects, přesunuli jsme se do domovského adresáře a pak se vrátili zpět do adresáře ~/Projects.
Otáčení přes celou sadu
Budeme ilustrovat, jak procházet zásobníkem s některými vnořenými adresáři, ale můžete použít libovolné adresáře kdekoli v systému souborů.
Naše nejhlubší úroveň hnízdění je:
/home/dave/Projects/htg/articles
Z domovského adresáře budeme postupně sestupovat každým adresářem, dokud se nedostaneme do adresáře článků. Poté se podíváme na zásobník adresářů.
Zadáme následující:
pushd ~/Projects
pushd htg
pushd articles
dirs -v -l
Když opakovaně zadáváte příkazy push +1, můžete cyklicky procházet zásobníkem adresářů. Pokud to děláte často, pushd +1 by bylo dobrým kandidátem na alias.
Zadejte následující:
pushd +1
Razítko přes zásobník
Je snadné vrátit se ke starým zvykům a použít cd ke změně adresáře. Pokud to uděláte, orazítkujete první adresář v zásobníku. To je nevyhnutelné, protože první slot je vyhrazen pro aktuální pracovní adresář – žádný z ostatních nemění pozici.
Chcete-li to provést, zadejte následující:
dirs -v -l
cd ~/Music
dirs -v -l
Poté, co si zvyknete na příkazy pushd a popd (a možná je použijete k vytvoření několika aliasů), budete mít super rychlý způsob přeskakování mezi adresáři.
To je důvod, proč se poflakujeme kolem příkazového řádku. Účinnost skály, že?