Ich habe folgendes Problem. Ich moechte aus einem Script heraus alle
Dateien im Verzeichnis /windows/c/Eigene Dateien sichern. Den Verzeichnis-
namen will ich jedoch nicht explizit beim Aufruf des tar-Befehles anfuehren,
sondern zuerst einer Variable zuweisen, naemlich src_name, also
src_name=/windows/c/Eigene\ Dateien
Der korrekte tar-Aufruf lautet dann:
tar -zcvf test.tar.gz $src_name
Eigentlich sollte das ja funktionieren. Aber denkste. Ich bekomme
staendig die folgende Fehlermeldung:
--- FEHLERMELDUNG ANFANG ---
tar: /windows/c/Eigene: Cannot stat: Datei oder Verzeichnis nicht gefunden
tar: Dateien: Cannot stat: Datei oder Verzeichnis nicht gefunden
tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.
---- FEHLERMELDUNG ENDE ----
Laut 'echo $src_name' lautet der Inhalt von src_name jedoch
tatsaechlich: /windows/c/Eigene Dateien
Ich habe auch schon Folgendes probiert:
src_name=/windows/c/Eigene Dateien
src_name='/windows/c/Eigene\ Dateien'
src_name="/windows/c/Eigene\ Dateien"
Ich habe auch schon probiert, den Verzeichnisnamen in zwei Komponenten
aufzusplitten, z. B.
src1='/windows/c/Eigene'
src2='\ Dateien'
tar -zcvf test.tar.gz $src1$src2
Ich weiss ja, dass Linux mit Datei-/Verzeichnisnamen, die ein
Leerzeichen enthalten, Probleme hat, aber es muss doch moeglich sein,
per Variable einen solchen Namen an ein Programm zu uebergeben.
Uebrigens: 'tar -zcvf test.tar.gz /windows/c/Eigene\ Dateien'
funktioniert tadellos.
Zur Info: ich verwende Bash 2.05.0(1)-release
Fuer Tipps in dieser Angelegenheit waere ich dankbar.
Mit freundlichen Gruessen,
Gernot HAELE, OESTERREICH
Bash: Problem mit Leerzeichen in Dateinamen
Re: Bash: Problem mit Leerzeichen in Dateinamen
Ich bin da auch nicht so fit, aber du kannst statt dem Leerzeichen ein ? einfügen.
Re: Bash: Problem mit Leerzeichen in Dateinamen
Der korrekte tar-Aufruf lautet dann:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
tar -zcvf test.tar.gz "${src_name}"
</font><hr></pre></blockquote>
Damit liegst Du auf der sicheren Seite. Die meisten Bash-Scripte stehen hier auf wackligen Füßen. Was bei Win95 eine Kinderkrankheit war, ist bei Linux/Unix leider eine eklige Dauererscheinung.
Probier mal ein rpm aus einem Pfad mit Leerzeichen (etwa .../Eigene Dateien/rpms/... ) zu installieren!
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
tar -zcvf test.tar.gz "${src_name}"
</font><hr></pre></blockquote>
Damit liegst Du auf der sicheren Seite. Die meisten Bash-Scripte stehen hier auf wackligen Füßen. Was bei Win95 eine Kinderkrankheit war, ist bei Linux/Unix leider eine eklige Dauererscheinung.
Probier mal ein rpm aus einem Pfad mit Leerzeichen (etwa .../Eigene Dateien/rpms/... ) zu installieren!
Re: Bash: Problem mit Leerzeichen in Dateinamen
<pre>src_name=/windows/c/Eigene\ Dateien</pre>
Geht hier natürlich genau so:
<pre>src_name="/windows/c/Eigene Dateien"</pre>
Das Übel liegt natürlich nicht bei Linux und meist auch nicht bei ordentlichen binären Programmen, sondern bei nachlässig geschriebenen Scripten oder ganz einfach daran, daß es eben nicht möglich ist, die Ausgabe eines Programms weiter zu verarbeiten, weil eben die Ausgabe nicht mit "" oder \ u.ä. maskiert wird. Das System selbst stört sich nicht an < > * : \ ? oder CrLf und sonstigem in Dateinamen.
Geht hier natürlich genau so:
<pre>src_name="/windows/c/Eigene Dateien"</pre>
Das Übel liegt natürlich nicht bei Linux und meist auch nicht bei ordentlichen binären Programmen, sondern bei nachlässig geschriebenen Scripten oder ganz einfach daran, daß es eben nicht möglich ist, die Ausgabe eines Programms weiter zu verarbeiten, weil eben die Ausgabe nicht mit "" oder \ u.ä. maskiert wird. Das System selbst stört sich nicht an < > * : \ ? oder CrLf und sonstigem in Dateinamen.
Re: Bash: Problem mit Leerzeichen in Dateinamen
Soweit ich weiss, dürfte das ganze doch auch mit MS-DOS-Namen funktionieren, oder ?
Also mit /windows/C/eigene~1 ??
oder nicht ?
Also mit /windows/C/eigene~1 ??
oder nicht ?