Von Belehrsammer Bash Benutzer. am Do, 7. Mai 2009 um 12:25 #
Vieleiche mag jetzt auch nochmal jemand so nett sein, zu erklären wie man die gleiche Funktionalität in der Z-Shell erreicht. Und bitte nicht mit RTFM antworten.
Würde mich auch mal interessieren. Entgegen aller Behauptung aller Vorposter ist diese Funktion _nicht_ in ZSH integriert und muss demzufolge mit einem dem obigen Script ähnlichem Syntax in die .zshrc oder besser in die .zshenv geschrieben werden.
bei der Z-Shell muss man lediglich die variable CDPATH setzen; dann wird die Z-Shell bei einem "cd dir" zunaechst im aktuellen verzeichnis nach einem unterverzeichnis "dir" suchen; falls kein unterverzeichnis "dir" existiert, so durchsucht die Z-Shell die verzeichnisse im pfad $CDPATH der reihe nach. falls $CDPATH auch die angabe "." fuer das aktuelle verzeichnis enthaelt, so wird es erst dann durchsucht, wenn die vorhergehenden verzeichnisse bereits durchsucht wurden.
hierbei wird also zunaechst explizit das aktuelle verzeichnis (".") durchsucht, dann das darueberliegende verzeichnis (".."), so dass man leicht in "parallele verzeichnisse" wechseln kann:
zsh> mkdir /tmp/bar /tmp/foo zsh> cd /tmp/foo zsh> cd bar zsh> pwd /tmp/bar
danach kommt das $HOME verzeichnis dran ("~"), gefolgt vom mit den eigenen webseiten ("~/public_html") und dem projektverzeichnis fuer das zshbuch. als letztes dann das verzeichnis mit den installierten dokumentationen.
zsh> cd zsh zsh> pwd /usr/share/doc/zsh
bei der suche ist natuerlich auch die expansion eines verzeichnispraefix moeglich:
und wer nach /usr/share/doc/zsh wechseln moechte, der kann das auch mit einer moeglichst eindeutigen angabe der praefixe der einzelnen komponenten machen:
zsh> cd /u/s/d/zsh[TAB] zsh> cd /usr/share/doc/zsh
Muhahah, und da macht Ihr alle so ein Geschrei drum? "nimm die z-shell", "schon mal ZSH gesehen?"...
CDPATH existiert genauso in der bash, ebenso wie in der ksh (unter meinem geliebten HP-UX).
Ich habe noch nie mit zsh gearbeitet, nutze aber schon seit 12 Jahren die CDPATH-Variable (in ksh/HP-UX, in Suses bash, Sidux bash, Fedora, Debian, ArchLinux und Ubuntu bash). Worüber redet Ihr hier eigentlich?
Warum kommt niemand auf die Idee so etwas einfach mal zu MACHEN, anstatt immer nur darüber schlau zu schreiben? Was lernt Ihr heute eigentlich noch? Neee, neee, neee
Jau echt. Wenn die ZSH wirklich so gut ist, verstehe ich auch nicht, warum die Bash noch immer der ultimative Standard ist und warum sie Perl als Shellskriptersatz nicht obsolet gemacht hat.
Gruß, ein anderer ZSH-Nutzer.
dann wird die Z-Shell bei einem "cd dir" zunaechst im aktuellen
verzeichnis nach einem unterverzeichnis "dir" suchen;
falls kein unterverzeichnis "dir" existiert, so durchsucht
die Z-Shell die verzeichnisse im pfad $CDPATH der reihe nach.
falls $CDPATH auch die angabe "." fuer das aktuelle verzeichnis
enthaelt, so wird es erst dann durchsucht, wenn die
vorhergehenden verzeichnisse bereits durchsucht wurden.
beispiel:
zsh> CDPATH=.:..:~:~/public_html:~/zshbuch.org:/usr/share/docs
hierbei wird also zunaechst explizit das
aktuelle verzeichnis (".") durchsucht,
dann das darueberliegende verzeichnis (".."), so dass
man leicht in "parallele verzeichnisse" wechseln kann:
zsh> mkdir /tmp/bar /tmp/foo
zsh> cd /tmp/foo
zsh> cd bar
zsh> pwd
/tmp/bar
danach kommt das $HOME verzeichnis dran ("~"), gefolgt
vom mit den eigenen webseiten ("~/public_html")
und dem projektverzeichnis fuer das zshbuch.
als letztes dann das verzeichnis mit
den installierten dokumentationen.
zsh> cd zsh
zsh> pwd
/usr/share/doc/zsh
bei der suche ist natuerlich auch die expansion
eines verzeichnispraefix moeglich:
zsh> CDPATH=.:~/public_html:~/talks:/etc:/usr/lib:/usr/share/doc
zsh> cd z[TAB]
~/zsh
~/zshbuch.org
~/public_html/zsh
~/talks/zsh/
/etc/zsh
/usr/lib/zsh
/usr/share/doc/zsh
/usr/share/doc/zip
/usr/share/locale/zh_CN/
/usr/share/man/zh_CN/
/usr/share/zoneinfo/
/usr/share/zsh
und wer nach /usr/share/doc/zsh wechseln moechte,
der kann das auch mit einer moeglichst eindeutigen
angabe der praefixe der einzelnen komponenten machen:
zsh> cd /u/s/d/zsh[TAB]
zsh> cd /usr/share/doc/zsh
enjoy! :)
--Sven
CDPATH existiert genauso in der bash, ebenso wie in der ksh (unter meinem geliebten HP-UX).
Ich habe noch nie mit zsh gearbeitet, nutze aber schon seit 12 Jahren die CDPATH-Variable (in ksh/HP-UX, in Suses bash, Sidux bash, Fedora, Debian, ArchLinux und Ubuntu bash). Worüber redet Ihr hier eigentlich?
Warum kommt niemand auf die Idee so etwas einfach mal zu MACHEN, anstatt immer nur darüber schlau zu schreiben? Was lernt Ihr heute eigentlich noch?
Neee, neee, neee