Dies ist mein erster Beitrag, daher ist es möglicherweise nicht möglich, ihn zu erreichen, aber ich danke Ihnen. Bitte zögern Sie nicht zu kommentieren, wenn es irgendwelche merkwürdigen Punkte oder Verbesserungen gibt.
In diesem Artikel wird ein Befehl (Skript) vorgestellt, der den vollständigen Pfad (absoluten Pfad) einer Datei in einem Verzeichnis unter Verwendung von Bash in einer allgemeinen Linux-Umgebung anzeigt (unter der Annahme eines Debian-Systems hier).
Ich habe es gemacht, weil ich beim Herunterladen der Datei in die Google Compute Engine (GCE) -Konsole den vollständigen Pfad der Datei benötigte.
In lf werden dieselben Dateien wie die von "ls" angezeigten in derselben Reihenfolge mit dem vollständigen Pfad angezeigt. lfa zeigt dieselben Dateien wie die von "ls -a" angezeigten in derselben Reihenfolge mit dem vollständigen Pfad an. Das heißt, die Punktdatei wird ebenfalls angezeigt. lft zeigt dieselben Dateien wie die von "ls -t" angezeigten in derselben Reihenfolge mit dem vollständigen Pfad an. Das heißt, die Aktualisierungszeiten werden in chronologischer Reihenfolge angezeigt.
Ermöglicht die Angabe mehrerer Dateinamen (Dateipfade) und Verzeichnisnamen (Verzeichnispfade) in Befehlsargumenten als Eingabe. Es spielt keine Rolle, ob es sich um einen relativen oder einen absoluten Pfad handelt. Wenn das Verzeichnis nicht enthalten ist, wird angenommen, dass es sich im aktuellen Verzeichnis befindet. Es wird nicht nach der PATH-Variablen usw. gesucht. Der Glob wird nicht von der Befehlsseite gesteuert.
Es wird in der Reihenfolge des eingegebenen Dateinamens und des Verzeichnisnamens verarbeitet. Wenn es sich um ein Verzeichnis handelt, wird der vollständige Pfad aller Dateien in diesem Verzeichnis zur Standardausgabe ausgegeben. Wenn es sich nicht um ein Verzeichnis handelt, drucken Sie den vollständigen Pfad der Datei zur Standardausgabe.
Wenn der im Argument angegebene Pfad nicht vorhanden ist, wird ein Fehler ausgegeben.
Die Implementierung wurde am Ende von ~ / .bashrc geschrieben. Wenn Sie den Readlink nicht verwenden können, verwenden Sie die folgende Zeile in den Kommentaren. Ich denke nicht, dass "--color = auto" notwendig ist, also können Sie es löschen.
~/.bashrc
function _lsfp ()
{
local dir file;
if [[ -d $1 ]]; then
dir=$(cd "$1";pwd);
ls --color=auto -1 $2 "$1" | while read file; do
echo "$dir/$file";
done;
elif [[ -e $1 ]]; then
readlink -f "$1"
# echo "$(cd $(dirname "$1");pwd)/${1##*/}";
else
echo "'$1' is not found." >&2;
fi
}
function lsfp ()
{
local arg;
[[ $# -eq 0 ]] && _lsfp "$(pwd)" || for arg in "$@";
do
_lsfp "$arg";
done
}
function lsfpa ()
{
local arg;
[[ $# -eq 0 ]] && _lsfp "$(pwd)" -a || for arg in "$@";
do
_lsfp "$arg" -a;
done
}
function lsfpt ()
{
local arg;
[[ $# -eq 0 ]] && _lsfp "$(pwd)" -t || for arg in "$@";
do
_lsfp "$arg" -t;
done
}
alias lf='lsfp'
alias lfa='lsfpa'
alias lft='lsfpt'
$ cd ~/
$ source ./.bashrc
$ lf
$ lfa
$ lft
$ lf ~/
Bash ist sehr praktisch. Ich werde es von nun an auf verschiedene Arten verwenden. Vielen Dank für das Lesen bis zum Ende.
Ich habe auch lfs hinzugefügt, die gekürzt und in der Reihenfolge ihrer Größe angezeigt werden (größte Reihenfolge). Der Funktionsname usw. hat sich geändert.
~/.bashrc
function __lsfp ()
{
local dir file;
if [[ -d $1 ]]; then
[[ $rl ]] && dir=$(readlink -f "$1") || dir=$(cd "$1";pwd);
ls --color=auto -1 $2 "$1" | while read ent; do
echo "$dir/$ent";
done;
elif [[ -e $1 ]]; then
[[ $rl ]] && readlink -f "$1" || echo "$(cd $(dirname "$1");pwd)/${1##*/}";
else
echo "'$1' is not found." >&2;
fi
}
function _lsfp ()
{
local opt arg rl;
which readlink >/dev/null 2>&1 && rl=1
[[ $1 =~ ^-[A-Za-z\-]$ ]] && { opt=$1; shift; }
[[ $# -eq 0 ]] && __lsfp "$(pwd)" $opt || for arg in "$@";
do
__lsfp "$arg" $opt;
done
}
alias lf='_lsfp --'
alias lfa='_lsfp -a'
alias lft='_lsfp -t'
alias lfs='_lsfp -S' #Nach Größe
Recommended Posts