PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In ein Verzeichis wechseln das in einer Datei steht



mknjc
15.04.07, 08:18
Hallo,

Ich steh grad auf dem Schlauch deswegen hoffe ich ihr könnt mir helfen.
Ich versuche über bash in ein Verzeichnis zu wechseln. Der Name des Verzeichnises steht in einer INI Datei. Nun hab ih gehofft das man es einfach über:
cd `grep "LogPath=" $HOME/.clonk/rage/config | sed "s#LogPath=##"`machen könnte. Aber scheinbar nicht. Wenn ich nur den grep und sed teil eingebe seh ich aber den Vollständigen Path in Anführungszeichen.

Der Teil der INI Datei sieht so aus:
LogPath="/home/mknjc/spiele/Clonk Endeavour/"

Mfg mknjc

drunkenPenguin
15.04.07, 08:29
NEWPATH=$(grep "LogPath=" $HOME/.clonk/rage/config | sed "s#LogPath=##");
cd $NEWPATH

edit: Dein Code von oben funktioniert bei mir aber auch. Aber warum ist "LogPath" jeweils unterschiedlich?

mknjc
15.04.07, 12:23
Ok danke ich werd dein Code testen sobald ich wieder zu Hause bin.

Die Datei soll den neuen Linuxbenutzern eine Hilfestellung geben und viele erweiterte Funktionen zu dem Spiel bieten.

Je nach dem wo die Benutzer ihre Dateine abgelegt haben ist der Programmpath anders.
Warum mein Code bei dir funktioniert weiß ich auch nicht. Bei mir kommt immer: /home/mknjc/spiele/Clonk Path oder Datei nicht gefunden.

Mfg mknjc

Edit: Hm dein Code funktioniert auch nicht:

mknjc@linux-zb4b:~> NEWPATH=$(grep "LogPath=" $HOME/.clonk/rage/config | sed "s#LogPath=##");
mknjc@linux-zb4b:~> cd $NEWPATH
bash: cd: "/home/mknjc/spiele/Clonk: Datei oder Verzeichnis nicht gefunden

drunkenPenguin
16.04.07, 15:07
Da ist ein Leerzeichen im letzten Verzeichnisnamen. ****, hab ich leider uebersehen, sry. Klar, dass da nichts gefunden wird, da als IFS standardmaessig ein Leerzeichen gesetzt ist.
Probier mal das:


IFS='\n'
cd `grep "LogPath=" $HOME/.clonk/rage/config | sed "s#LogPath=##"`
IFS=' '

mknjc
16.04.07, 20:33
Oo jetzt wird es ganz verrückt.
Er nutzt nicht Newline als Trenner sondern n:


mknjc@linux-zb4b:~> cd `grep "LogPath=" $HOME/.clonk/rage/config | sed "s#LogPath=##"`
grep: /home/mk: Datei oder Verzeichnis nicht gefunden
grep: jc/.clonk/rage/config: Datei oder Verzeichnis nicht gefunden

Das selbe passiert bei IFS="\n"
Auch schön ist
mknjc@linux-zb4b:~> IFS="\r"
mknjc@linux-zb4b:~> cd `grep "LogPath=" $HOME/.clonk/rage/config | sed "s#LogPath=##"`
bash: cd: "/home/mknjc/spiele/Clonk Endeavou: Datei oder Verzeichnis nicht gefunden
Wieso hab ich das Gefühl das irgendwas komplett falsch läuft.

Mfg mknjc

marce
17.04.07, 08:50
... und jetzt noch das Blank escapen oder den String komplett quoten und alles wird gut...

TheReaper
18.04.07, 09:40
Du musst die " entfernen, die in der Datei stehen und durch eigene ersetzen (die die Shell dann zum quoten erkennt):


cd "`grep LogPath= $HOME/.clonk/rage/config | sed 's!LogPath="\(.*\)"!\1!'`"

Gruß