[gelöst]Pfadangabe aufsplitten
[gelöst]Pfadangabe aufsplitten
Hallo zusammen,
ich möchte aus dem Ergebnis von pwd nur das letzte Verzeichnis als Ausgabe erhalten.
habt Ihr eine Idee ??
Danke
Gruß fk
ich möchte aus dem Ergebnis von pwd nur das letzte Verzeichnis als Ausgabe erhalten.
habt Ihr eine Idee ??
Danke
Gruß fk
Zuletzt geändert von fiberkill am 14.01.2015 13:59:56, insgesamt 1-mal geändert.
Re: Pfadangabe aufsplitten
Sowas?:
Code: Alles auswählen
$ mkdir -p test1/test2/test3
$ cd test1/test2/test3
$ pwd
/home/hikaru/test1/test2/test3
$ pwd | egrep -o '[^/]*$'
test3
Re: Pfadangabe aufsplitten
... oder einfach mit basename:
Code: Alles auswählen
basename $(pwd)
Re: Pfadangabe aufsplitten
cool, klappt.
Danke
Danke
Re: [gelöst]Pfadangabe aufsplitten
Gehört zum genialen Paket coreutils. Gibt noch weitere nette Software in dem Paket, die man sich mal anschauen sollte. Damit kann man recht schnell sein Linux-Wissen erweitern.
Code: Alles auswählen
dpkg -L coreutils|fgrep "/usr/bin/"
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: [gelöst]Pfadangabe aufsplitten
Code: Alles auswählen
echo ${PWD##*/}
Re: [gelöst]Pfadangabe aufsplitten
@ newdeb
Könntest Du kurz erleutern wie das funktioniert? Danke.
gruß heinz
Code: Alles auswählen
echo ${PWD##*/}
gruß heinz
Re: [gelöst]Pfadangabe aufsplitten
Das ist eine Bash-eigene* Stringmanipulation die in diesem Fall von $PWD das wegschneidet, was links (dafür das erste #) des Patterns */ steht (* ist hier eine Expansion). Dabei wird "gierig" vorgegangen (dafür das zweite #).
Siehe auch: [1] und [2]. Gefunden habe ich es hier [3]. Man lernt doch nie aus!
@newdeb: Danke!
*) ksh kann es wohl auch. Trotzdem bleibt es ein "Bashism".
[1] http://linuxint.com/DOCS/Linux_Docs/ope ... AE1F0211CE
[2] http://mywiki.wooledge.org/BashFAQ/073
[3] http://forum.ubuntuusers.de/topic/strin ... inem-buch/
Siehe auch: [1] und [2]. Gefunden habe ich es hier [3]. Man lernt doch nie aus!
@newdeb: Danke!
*) ksh kann es wohl auch. Trotzdem bleibt es ein "Bashism".
[1] http://linuxint.com/DOCS/Linux_Docs/ope ... AE1F0211CE
[2] http://mywiki.wooledge.org/BashFAQ/073
[3] http://forum.ubuntuusers.de/topic/strin ... inem-buch/
Re: [gelöst]Pfadangabe aufsplitten
Nein, das ist in POSIX! Siehe http://pubs.opengroup.org/onlinepubs/96 ... g_18_06_02hikaru hat geschrieben:Das ist eine Bash-eigene* Stringmanipulation [...]
Diese Formen mit %, %%, #, ## gibt's schon ziemlich lange. Die Bash hat aber noch einiges mehr, was nicht alles portabel ist.
@newdeb: Guter Vorschlag uebrigens!
Use ed once in a while!
Re: [gelöst]Pfadangabe aufsplitten
tcsh kann es nicht:Ist tcsh nicht POSIX-konform?
Code: Alles auswählen
$ echo ${PWD##*/}
Missing }.
$ echo $SHELL
/bin/csh
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: [gelöst]Pfadangabe aufsplitten
Diese Konstrukte sparen forks, die beim Aufruf externer Programme notwendig wären und zumindest die o.g. werden von bash, dash und ksh verstanden.Meillo hat geschrieben:Diese Formen mit %, %%, #, ## gibt's schon ziemlich lange.
Zu Zeiten der alten Bourne-Shell (unter Solaris noch bis zu Version 10 die Systemshell /bin/sh) musste man das mit externen Programmen machen.
(In der ksh93 lassen sich einige der Coreutils wie basename, cat, cat, wc, u.a. als Builtins über den /opt/ast/bin-Pfad aktivieren).
Re: [gelöst]Pfadangabe aufsplitten
tcsh ist eine csh, also keine Bourne-kompatible Shell und damit AFAIK gar nicht Teil von POSIX. Das ist eine andere Shell-Familie, bei der nur (zufaellig) Teile der Syntax gleich sind.hikaru hat geschrieben:tcsh kann es nicht:Ist tcsh nicht POSIX-konform?Code: Alles auswählen
$ echo ${PWD##*/} Missing }. $ echo $SHELL /bin/csh
Use ed once in a while!
Re: [gelöst]Pfadangabe aufsplitten
Danke hikaru für die Erklärung und die weiterführenden Links.
gruß heinz
gruß heinz