Mange Linux-folk har aldrig hørt om pushd og popd, men de har eksisteret for evigt. De kan også dramatisk fremskynde processen med at navigere i mapper på kommandolinjen. Vi vil guide dig igennem, hvordan du bruger dem.
Indholdsfortegnelse
Hvad er pushd og popd?
En af nyskabelserne Bill Joy indarbejdet i hans 1978 C Shell var konceptet med en mappestak og midlerne til at manipulere den: pushd og popd. Da efterligning var den oprigtigste form for smiger, blev mappestakken, pushd og popd snart inkorporeret i andre skaller (som Bash) og endda andre operativsystemer.
Konceptet med stakken er simpelt. Elementer placeres på stakken et ad gangen, hvor det senest tilføjede element altid indtager den øverste position. Når genstande hentes fra stakken, fjernes de i rækkefølge fra toppen og nedad. Stakke af denne art omtales ofte som Sidst ind, først ud (LIFO) køer.
Faktisk er pushd og popd lidt mere fleksible end dette, men dette er en god model at huske på lige nu.
Da vi henviser til en mappestak, kommer det sandsynligvis ikke som nogen overraskelse, at “d” i pushd og popd står for “directory.” Disse kommandoer giver dig mulighed for at skubbe mapper ind på eller springe dem ud af mappestakken.
Men hvordan gavner det os?
Hvordan pushd udfylder stakken
Når du bruger pushd, sker der følgende tre ting:
Du ændrer mappen på samme måde, som hvis du havde brugt cd.
Navnet og stien til mappen føjes til stakken.
Stakken vises som en mellemrumssepareret liste over mapper.
I de følgende eksempler skal du bemærke, hvordan mappestakken vokser med hver ny pushd-kommando. Bemærk også, at toppen af stakken er til venstre – det er her, de nye poster vises.
Efter den første pushd-kommando er der to poster i stakken: den mappe, du forlod, og den, du flyttede til.
For vores eksempel skriver vi følgende:
pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~
Den sidste pushd-kommando tog os tilbage til vores hjemmemappe, så den første og sidste indgang i stakken er tilde (~), som repræsenterer vores hjemmemappe. Dette viser, at selvom en mappe allerede er i stakken, vil den blive tilføjet igen for andre pushd-kommandoer.
Bemærk også, at posten længst til venstre i stakken, som er den senest tilføjede post, er din nuværende mappe.
Dirs Kommando
Du kan bruge dirs-kommandoen, som vist nedenfor, til at vise mappestakken:
dirs
Det påvirker ikke stakken, det viser det bare. Nogle af de muligheder, du kan bruge med pushd, henviser til placeringen af mapperne i stakken.
Hvis du ønsker at se den numeriske position for hver mappe, kan du bruge -v (lodret) mulighed som vist nedenfor:
dirs -v
Hvis du hellere vil se den stavede sti til din hjemmemappe i stedet for tilde (~), skal du tilføje -l (langt format), som sådan:
dirs -v -l
Tilføjelse af en mappe til stakken
Som vi har set, når du bruger pushd-kommandoen, gør den tre ting: ændrer din mappe, tilføjer den nye mappe til stakken og viser stakken for dig. Du kan bruge -n (ingen rotation) mulighed for at tilføje en mappe til stakken uden at ændre den aktuelle mappe.
Her er vores mappestak:
dirs -v -l
Nu vil vi bruge pushd-kommandoen med -n-indstillingen og pas i /home/dave-mappen som en parameter. Derefter tjekker vi mappestakken igen.
Vi skriver følgende:
pushd -n /home/dave
dirs -v -l
Mappen /home/dave blev tilføjet til stakken i slot 1, som er andenpladsen i stakken. Den kan ikke indtage toppositionen, fordi slot nul altid er den aktuelle mappe.
Vi forlod ikke den aktuelle mappe, ~/Videos, så den blev ikke roteret til en anden position i stakken.
Ændring af mappe ved at rotere stakken
Du kan bruge numeriske parametre med pushd for at flytte til en hvilken som helst mappe i en stak, og stakken roterer, når du gør det. Den mappe, du har valgt at flytte, bliver derefter den første post i stakken.
Du refererer til mapperne i stakken ved deres positionsnummer. Du kan tælle fra toppen eller bunden af stakken. For positive tal, såsom +3, tæl fra toppen; for negative tal, såsom -2, tæl fra bunden.
Mappen /home/dave/Documents er i position tre. Vi kan bruge følgende kommando til at flytte den mappe:
pushd +3
Mapperne i stakken over den mappe, vi har valgt, flyttes til bunden af stakken. Vores valgte mappe indtager nu toppositionen, og vi er flyttet ind i den mappe.
Hvis vi vil skifte til mappen i bunden af stakken, kan vi bruge følgende kommando:
pushd -0
Den sidste mappe flyttes til den første plads, og alle de andre flyttes ned i stakken. Vi er ændret til mappen ~/Pictures.
popd-kommandoen
Du kan bruge popd-kommandoen til at fjerne mapper fra stakken.
Hvis vi ser på mappestakken, kan vi se, at mappen i position 1 er /home/dave. For at fjerne dette fra stakken, skriver vi følgende for at sende nummeret til popd:
dirs -v -l
popd +1
Mappen /home/dave blev fjernet, og dem, der var under den i stakken, er hver flyttet et sted op.
Ligesom vi kan med pushd, kan vi tælle fra bunden af stakken med popd. For at fjerne den sidste mappe fra stakken, skriver vi:
popd -0
~/Music-mappen fjernes fra den sidste position i stakken.
For at ændre mappen skal du gøre noget og derefter hoppe tilbage til den forrige mappe, du kan bruge pushd og popd sammen.
Vi bruger pushd til at flytte til en anden mappe. Vi bruger popd til at kassere den øverste mappe i stakken og flytte til mappen i den anden position. Dette er den mappe, du lige er flyttet ud af, så du falder tilbage til den mappe, du oprindeligt var i.
Vi skriver følgende:
pushd ~
popd
Vi startede i mappen ~/Projects, skubbede til hjemmemappen og gik derefter tilbage til mappen ~/Projects.
Roterer gennem hele stakken
Vi skal illustrere, hvordan man roterer gennem en stak med nogle indlejrede mapper, men du kan bruge alle mapper hvor som helst i filsystemet.
Vores dybeste niveau af rede er:
/home/dave/Projects/htg/articles
Fra hjemmebiblioteket går vi gradvist ned gennem hver mappe, indtil vi når til kataloget med artikler. Derefter vil vi se på mappestakken.
Vi skriver følgende:
pushd ~/Projects
pushd htg
pushd articles
dirs -v -l
Når du gentagne gange udsteder pushd +1-kommandoer, kan du cykle rundt og rundt gennem stakken af mapper. Hvis du gør dette ofte, ville pushd +1 være en god kandidat til et alias.
Indtast følgende:
pushd +1
Stempling over stakken
Det er nemt at vende tilbage til gamle vaner og bruge cd til at skifte mappe. Hvis du gør det, vil du stemple den første mappe i stakken. Dette er uundgåeligt, da den første plads er reserveret til den aktuelle arbejdsmappe – ingen af de andre ændrer position.
For at gøre dette skal du skrive følgende:
dirs -v -l
cd ~/Music
dirs -v -l
Når du har vænnet dig til pushd- og popd-kommandoerne (og måske bruger dem til at oprette et par aliaser), har du en superhurtig måde at hoppe mellem mapper på.
Det er derfor, vi hænger rundt på kommandolinjen. Effektivitet stener, ikke?