Mein Testskript:
#!/bin/bash
dirs -p >> work_note.txt
In einem Stapel von 10 Verzeichnissen erhalte ich nur das oberste 1 zurück. Wenn ich es ausführe dirs -p
oder dirs -v
die Befehlszeile verwende, erhalte ich den gesamten Stapel.
Ich bin für alle Tipps und Informationen zu dem, was mir fehlt, dankbar.
NOTIZ Mein Hauptziel ist es, einen Abmeldevorgang zu erstellen, der den DIRSTACK in eine Datei schreibt, damit ich mich an die Arbeit erinnern kann, die ich in einem Terminal erledigt habe. Normalerweise habe ich mehrere Terminals in Betrieb.
Antwort1
Dies DIRSTACK
ist eine lokale Variable und wird nicht an Skripte, Subshells, Kindprozesse usw. übergeben. Ich empfehle die Verwendung einer in Ihr geladenen Funktion .bashrc
anstelle eines Skripts.
Antwort2
Ich habe diesen Trick verwendet, um meinen Verzeichnisstapel bei jeder Sitzung abzurufen. Normalerweise habe ich ihn in einer Datei gespeichert. Ich kann ihn auch in andere Terminals importieren/exportieren.
Definieren Sie diese Funktion in Ihrer .bashrc
stackd ()
{
SAVEIFS=$IFS;
IFS=$(echo -en "\n\b");
builtin cd $@ && builtin pushd "$PWD" > /dev/null;
dirs -l -p >> $HOME/.iostackd/dirstack && sort -u -o $HOME/.iostackd/dirstack $HOME/.iostackd/dirstack > /dev/null;
IFS=$SAVEIFS
}
Überladen Sie Ihre eingebaute CD mit Alias
alias cd='stackd "$1"'