|
| psuh / pop af mapper i Linux? Fra : HG |
Dato : 17-07-07 09:41 |
|
Jeg vil gerne lave en push og pop mulighed på min Linux således, at jeg kan
pushe én eller flere mapper for derefter at poppe dem i den korrekte
rækkefølge.
Jeg har p.t. denne kode i min login fil:
alias push='pwd | tee -a /tmp/push'
alias pop='cd | cat /tmp/push | head --lines=-1 > /tmp/push'
Den virker bare ikke for godt. Den fjerner fint en linie fra /tmp/push filen
men den cd'er ikke dertil?
| |
Peter Makholm (17-07-2007)
| Kommentar Fra : Peter Makholm |
Dato : 17-07-07 10:36 |
|
"HG" <as234@REMOVE.gmail.com> writes:
> alias push='pwd | tee -a /tmp/push'
> alias pop='cd | cat /tmp/push | head --lines=-1 > /tmp/push'
>
> Den virker bare ikke for godt. Den fjerner fint en linie fra /tmp/push filen
> men den cd'er ikke dertil?
Nej, det vil nok være svært at få til at virke. Kommandoer der skifter
katalog skal være indbygget i din shell-process og når du begynder
med pipes og lignende kommer du hurtigt til at starte en subprocess.
Prøv at læse manualsiden builtins(7) og se om ikke pushd og popd kan
opfylde dine ønsker.
//Makholm
| |
HG (17-07-2007)
| Kommentar Fra : HG |
Dato : 17-07-07 10:48 |
|
> Nej, det vil nok være svært at få til at virke. Kommandoer der skifter
> katalog skal være indbygget i din shell-process og når du begynder
> med pipes og lignende kommer du hurtigt til at starte en subprocess.
>
> Prøv at læse manualsiden builtins(7) og se om ikke pushd og popd kan
> opfylde dine ønsker.
De er helt fine, mange tak
| |
Peter Makholm (17-07-2007)
| Kommentar Fra : Peter Makholm |
Dato : 17-07-07 11:14 |
|
Peter Makholm <peter@makholm.net> writes:
> Nej, det vil nok være svært at få til at virke. Kommandoer der skifter
> katalog skal være indbygget i din shell-process og når du begynder
> med pipes og lignende kommer du hurtigt til at starte en subprocess.
Måske ikke helt så svært som jeg oprindelig antog. Problemet er at en
kommandosekvens hvor shellen skal skrive til en fil, vil shellen som
det første åbne filen og dermed eventuelt trunkere den.
Hvis vi finder en måde at fjerne sidste linje i en fil, der ikke
baserer sig på shell redirects, så er det let nok:
alias pop='cd $(tail -n 1 /tmp/push; perl -ni -e "print pop@a;push@a,\$_" /tmp/push)'
alias push='pwd >> /tmp/push'
Men jeg vil nu stadigvæk nok anbefale pushd og popd, der er indbygget
i bash.
//Makholm
| |
|
|