Bash: Problem mit Leerzeichen in Dateinamen

Post Reply
Message
Author
Gernot+Häle

Bash: Problem mit Leerzeichen in Dateinamen

#1 Post by Gernot+Häle »

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

michaell

Re: Bash: Problem mit Leerzeichen in Dateinamen

#2 Post by michaell »

Ich bin da auch nicht so fit, aber du kannst statt dem Leerzeichen ein ? einfügen.

Udo Maslo

Re: Bash: Problem mit Leerzeichen in Dateinamen

#3 Post by Udo Maslo »

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!

Udo M.

Re: Bash: Problem mit Leerzeichen in Dateinamen

#4 Post by Udo M. »

<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.

Ândy

Re: Bash: Problem mit Leerzeichen in Dateinamen

#5 Post by Ândy »

Soweit ich weiss, dürfte das ganze doch auch mit MS-DOS-Namen funktionieren, oder ?

Also mit /windows/C/eigene~1 ??

oder nicht ?

Post Reply