Ich möchte einen einfachen Weg, um den vollständigen Pfad zu einer Datei zu erhalten. Ich schreibe gerade folgendes:
echo `pwd`/file.ext
Beim Versuch, es zu verkürzen, habe ich einen Bash-Alias erstellt:
alias fp='echo `pwd`/'
Aber jetzt, wenn ich tippe fp file.ext
, erscheint ein Leerzeichen zwischen dem /
und dem file.ext
.
Gibt es einen solchen Befehl schon und ich vermisse ihn? Wenn nicht, wie würde ich vorgehen, um einen solchen Alias oder eine solche Funktion in Bash zu erstellen?
command-line
bash
Jens Erat
quelle
quelle
readlink -f
(oderrealpath
, ein älteres Dienstprogramm, das aus Kompatibilitätsgründen beibehalten wird) erweitert zusätzlich alle symbolischen Links, was nicht unbedingt wünschenswert ist.realpath
.pwd
VerwendenPWD
Sie anstelle des Befehls die Variable (auch in POSIX):Wenn Sie Windows unterstützen müssen, wird das Erkennen absoluter Pfade komplizierter, da jeder Port von Unix-Tools seine eigenen Regeln für die Übersetzung von Dateipfaden hat. Verwenden Sie bei Cygwin das
cygpath
Dienstprogramm.quelle
Um Ihre Frage mit dem zu beantworten, was Sie gerade verwenden:
Der Alias wird an der Stelle erweitert, an der Sie gerade tippen. Sie tippten:
das wird
Sie könnten eine Funktion verwenden, um dies zu vermeiden:
Sie können das wie gewohnt verwenden:
quelle
echo "`pwd`/$1"
*
in einem Verzeichnis aufgerufen wird, das andere Dateien enthält).fp *
ergibt,/tmp/4cc3ea0c1b34b
da dies der erste Parameter für die Funktion ist. Die anderen Parameter sind die anderen Dateien im Verzeichnis. sobald ich eine datei mit demSie können verwenden:
quelle
apt-cache search realpath
, dass die Coreutils und einfachen alten Realpath- Pakete vorhanden sind beide enthalten es. Sie können dannsudo apt-get install realpath
(odercoreutils
) eingeben, um es zu installieren.Von /programming//a/3915420/5795941
Dies ist der einzige Weg, der für mich akzeptabel ist. Erweitert keine Links wie Realpath und Readlink und ist die klassische Methode, die ich überall gesehen habe.
quelle