Ruft den aktuellen Verzeichnisnamen (ohne vollständigen Pfad) in einem Bash-Skript ab
Wie kann ich nur das aktuelle Arbeitsverzeichnis Namen in ein bash-script, oder noch besser, nur ein terminal-Befehl.
pwd
gibt den vollständigen Pfad des aktuellen Arbeitsverzeichnisses, z.B. /opt/local/bin
aber ich will nur bin
InformationsquelleAutor der Frage Derek Dahmer | 2009-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keine Notwendigkeit für basename, und vor allem keine Notwendigkeit für eine subshell ausgeführt pwd (die fügt einen zusätzlichen, und teuren, Gabel-Betrieb); das Oberteil kann dies intern mit parameter expansion:
InformationsquelleAutor der Antwort Charles Duffy
Verwenden Sie die
basename
Programm. Für Ihren Fall:InformationsquelleAutor der Antwort Arkady
InformationsquelleAutor der Antwort DigitalRoss
Können Sie eine Kombination von " pwd " und "basename". E. g.
InformationsquelleAutor der Antwort mbelos
Wie etwa grep:
InformationsquelleAutor der Antwort Orange
sehr einfach
InformationsquelleAutor der Antwort Hani Sharabash
Wie ich die ausgewählte Antwort (Charles Duffy), aber seien Sie vorsichtig, wenn Sie in einer symlinked dir und Sie wollen, dass der name des target-dir. Leider denke ich nicht, dass es getan werden kann, in einem einzigen parameter expansion Ausdruck, vielleicht bin ich Irre. Sollte dies funktionieren:
Um dies zu sehen, ein experiment:
Berichte "bar"
DIRNAME
Zeigen die führenden Verzeichnisse eines Pfades (ohne Gabel-exec /usr/bin/dirname):
Diese wird z.B. verwandeln foo/bar/baz -> foo/bar
InformationsquelleAutor der Antwort FDS
Wenn Sie die Bourne-shell oder
${PWD##*/}
ist nicht verfügbar.InformationsquelleAutor der Antwort anomal
Dieser thread ist toll! Hier ist eine weitere Geschmack:
InformationsquelleAutor der Antwort rodvlopes
Überraschend, niemand erwähnt diese alternative, die verwendet nur die eingebauten bash-Befehle:
Als zusätzlichen bonus können Sie leicht die Namen des übergeordneten Verzeichnisses mit:
Diese Arbeit wird auf Bash-4.3-alpha oder neuer.
InformationsquelleAutor der Antwort Arton Dorneles
oder
InformationsquelleAutor der Antwort user3278975
normalerweise verwende ich diese in der sh-Skripte
können Sie diese zu automatisieren Dinge ...
InformationsquelleAutor der Antwort Dutch Glory
ODER
Drehen Sie den Internen Dateinamen Separator (IFS) wieder in einem Raum .
Es ist ein Leerzeichen nach dem IFS= .
InformationsquelleAutor der Antwort FireInTheSky
Können Sie die basename-Dienstprogramm, das löscht alle prefix mit /am Ende und das suffix (falls vorhanden, in string) string aus und druckt das
Ergebnis auf der standard-Ausgabe.
InformationsquelleAutor der Antwort niks_4143
Verwenden Sie einfach:
oder
InformationsquelleAutor der Antwort marcos
Unten grep mit regex funktioniert auch
InformationsquelleAutor der Antwort Abhishek Gurjar
Finden-jockeys da draußen wie mich:
InformationsquelleAutor der Antwort user2208522
Ich stark bevorzugen mit
gbasename
das ist Teil der GNU coreutils.InformationsquelleAutor der Antwort Steve Benner
Den folgenden Befehlen wird das Ergebnis beim Druck Ihres aktuellen Arbeitsverzeichnis in ein bash-Skript.
InformationsquelleAutor der Antwort Paul Sabou
Ich benutze dieses Befehl:
dirname "$0"
InformationsquelleAutor der Antwort Jeff Tian