Ziŝaj Konsiletoj 2-a: Dosierujstakoj

Esperanto • English
Laste ĝisdatigita: la 18-an de marto 2022

Kion ni faras por ni, mortas kun ni. Kion ni faras por ili, porĉiame restas.
—Albert PIKE

jonny-caspari-A7ol2HfnycY-unsplash

Enhavotebelo

Enkonduko

Lastfoje mi skribis pri alinomoj kaj funkcioj, kial ilin uzi pol la komandlinian sperton plibonigi. En ĉi tiu artikolo, mi parolos pri simplaj manieroj kiel dosierujstakojn konservi.

Ĉiufoje la dosierujo ŝanĝiĝas per cd, la komandon pushd mi uzas por tiun dosierujon konservi sur la dosierujstako. Min ĉi tio ebligas por iri reen al la lasta dosierujo, antaŭ je pushd mi voku, per la uzo de popd. La aktualan valoron de la dosierujstako la komando dirs montras.

Unue la helpilojn ni difinu:

function d () { pushd $@ }
function - () { popd }
function ds () { dirs -l $@ }

La la jenan seancon ni konsideru:

% d ~/Downloads
% ds -v
0       /home/ebzzry/Downloads
% d /etc/nixos
% d /tmp
% ds -v
0       /tmp
1       /etc/nixos
2       /home/ebzzry/Downloads

En ĉi tiu punkto tri dosierujoj ekzistas en la dosierujstako. Se je popd mi kuros:

% -

La jenan mi akiros:

% pwd
/etc/nixos
% ds -v
0       /etc/nixos
1       /home/ebzzry/Downloads

Konservi

Onin dosierujstakoj permesas por movi tra la arboj kiujn ni nune prilaboras. Puŝi al la dosierujstakoj onin permesas por dosierujon viziti, en kiu, agojn ni faros tie, tiam iri reen al la lasta per elstakigado facile.

Bedaŭrinde, se novan ŝelon mi kreas, la stakon mi perdas. Je exec mi uzas por la ziŝan seancon reŝargi, certigante, ke miaj agorddosieroj estas ŝargitaj freŝe.

% exec zsh

Tion farante, la stakon kiun mi konstruis mi perdas. Por tion solvi, funkcion kiu la dosierujstakon de la aktuala seanco konservas, mi havas.

function z! () {
  dirs -lv | awk -F '\t' '{print $2}' | tac >! $HOME/.z
  exec zsh
}

Je z! kurante, la enhavon de la aktuala stako konservas, kaj la ŝelon reŝargas:

% pwd
/home/ebzzry
% d /etc/nixos
% d ~/Downloads
% d /var/lib
% z!

Restaŭri

Por iri kun z! funkcion kiu la konservitan dosierujstakon restaŭras mi havas:

function z+ () {
  if [[ -f $HOME/.z ]]; then
      local pwd=$PWD

      while read -r line; do
        pushd "$line"
      done < $HOME/.z

      pushd $pwd
  fi
}

Por restaŭri la konservitan dosierujstakon en la aktuala seanco aŭ al nova aparta instanco, rulu:

% z+
% ds -v
0       /var/lib
1       /home/ebzzry/Downloads
2       /etc/nixos
3       /home/ebzzry

Finrimarkoj

Dosierujstakojn mi uzas kiel maniero por la dosieroj kiujn mi interagas konservi por ke estos pli facile por ilin restaŭru al antaŭ funkcia stato. Ĉi tiujn du helpilojn havante, la laboron ĉe la komandlinio plifaciligas. Por la restantajn difinojn iru ĉi tien.