2017-06-13 3 views
0

Ich verwende Bourne-Shell in Linux und ich versuche, eine Verknüpfung in meiner .profile zu erstellen, um schnell zwischen Unterverzeichnissen zu springen.Linux Verzeichnisverknüpfung ändern

Ich möchte eine Verknüpfung "cds" Sprung vom ersten Verzeichnis zum 2. unten erstellen. Dies sind nur Beispielverzeichnisse für sein Beispiel.

/web/site/dev1/css
/web/site/test1/css

Verbrauch: cds DEV1 test1

cds() { 
    echo `pwd` | sed -e "s/$1/$2/g" 
    cd `pwd` | sed -e "s/$1/$2/g" 
    pwd 
} 

das Echo funktioniert, aber die CD-Linie nicht. Kannst du mir sagen, warum es nicht funktioniert und wie es funktioniert? Danke für Ihre Hilfe.

+0

Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. Wenn Sie das Thema anderswo fühlen, dann [fragen Sie nach einer Migration] (http://meta.stackoverflow.com/q/254851) – jww

Antwort

1

In Ihrer Funktion, wenn Sie das tun

echo `pwd` | sed -e "s/$1/$2/g" 

die Ausgabe von echo wird in sed geleitet und die Änderung vorgenommen wird. sed wird seine Ausgabe auf die Standardausgabe drucken.

Allerdings ist cd nichts mit dem Ausgang schreiben, so dass Sie cd in das aktuelle Verzeichnis ing (pwd) und dann kochend die (leer) Ausgabe in sed das Verzeichnis zu ersetzen. Stattdessen können Sie cd mit dem Argument der Ausgabe pwd über sed piped aufrufen. Hier

ist der Code, den Sie stattdessen wollen:

cds() {   
    cd $(pwd | sed -e "s/$1/$2/g") 
    pwd 
} 

Zuerst dies wertet den Code innerhalb des $(), nämlich pwd | sed -e "s/$1/$2/g". pwd druckt den aktuellen Pfad zu stdout, und sed ersetzt den Teil des Pfades, der von den Argumenten angegeben wird. So wertet $(pwd | sed -e "s/$1/$2/g" das neue Verzeichnis aus. Dann geht cd in dieses Verzeichnis.

+0

Vielen Dank für die Lektion sowie die Antwort. Es funktioniert und ich weiß jetzt warum. –

Verwandte Themen