Ich habe gerade den Fehler gefunden: Wenn Sie echo $(ls -1 -tF | head -n 1)
verwenden, kann der Datei Globing-Mechanismus zu zusätzlichen Übereinstimmungen führen.
So würde echo "$(ls -1 -tF | head -n 1)"
dies vermeiden.
Wenn das Ergebnis eine ausführbare Datei ist, enthält es am Ende ein *.
Ich versuchte, die warum -F in einem Kommentar zu veröffentlichen, aber jetzt habe ich beschlossen, es setzen hier:
ich die folgenden Zeilen zu meinem .bashrc hinzugefügt, um eine Verknüpfung zu haben zuletzt geändert werden aufgelisteten Dateien oder Verzeichnisse:
function L {
myvar=$1; h=${myvar:="1"};
echo "last ${h} modified file(s):";
export L=$(ls -1 -tF|fgrep -v/|head -n ${h}| sed 's/\(\*\|=\|@\)$//g');
ls -l $L;
}
function LD {
myvar=$1;
h=${myvar:="1"};
echo "last ${h} modified directories:";
export LD=$(ls -1 -tF|fgrep/|head -n $h | sed 's/\(\*\|=\|@\)$//g'); ls -ld $LD;
}
alias ol='L; xdg-open $L'
alias cdl='LD; cd $LD'
So, jetzt kann ich L (oder L 5) die letzten (letzte 5) geänderten Dateien aufzulisten. Aber keine Verzeichnisse.
Und mit L; jmacs $ L Ich kann meinen Editor öffnen, um ihn zu bearbeiten. Traditionell habe ich meinen Alias lt = 'ls -lrt' verwendet, aber dann muss ich den Namen erneut eingeben ...
Jetzt nach mkdir ... verwende ich cdl, um zu diesem Verzeichnis zu wechseln.
ich ls -tr | Tail - n1 und das funktioniert immer .. – MostWanted
zitieren Sie Ihre Subshell, es wird mit 'file *' für ausführbare Dateien gleichgesetzt, die dann vor dem Echo erweitert wird. '-F, --classify Append-Indikator (eines von */=> @ |) an Einträge' – 123
Hier die Erklärung für die -F:' Funktion L { myvar = $ 1; h = $ {myvar: = "1"}; echo "letzte $ {h} modifizierte Datei (en):"; export L = $ (ls -1 -tF | fgrep -v/| head -n $ {h} | sed 's \ (\ * \ | = \ | @ \) $ // g'); ls -l $ L; } alias ol = 'L; xdg-open $ L ' ' –