Dateinamen für Linux mit Leerzeichen: Kann mir jemand helfen?

...komplette Frage anzeigen

4 Antworten

Du musst das Leerzeichen escapen, da er es sonst nicht versteht. Escaping geschieht landläufig per \, also dem Backslash. Du musst also Eigene\ Dateien eingeben.

Danke :-) Super qualifizierte Antwort....

LA

0
@Linuxaffiner

Den Verzeichnisnamen und/oder Pfad in Anführungszeichen setzen funktioniert auch:

cd "Eigene Dateien"

Das ist ja eigentlich auch logisch. Das hat nichts mit der Verarbeitung der Verzeichnisnamen zu tun, sondern mit der Befehlsverarbeitung der Shell. Woher soll die Shell denn wissen, dass das zweite Wort noch zum Namen gehört und nicht ein zusätzliches Argument für den Befehl "cd" ist?

3
@Linuxaffiner

Das so genannte escapen tut nichts anderes als dem Interpreter (in dem Fall, der Bash, zu sagen dass das Zeichen das nach dem Backslash kommt als solches zu sehen ist, also "Ein Leerzeichen ist ein Leerzeichen"


Selbiges gilt ja auch in anderen Programmen oder sogar hier in gutefrage.net, wo man ein C:\ nur darstellen kann wenn man zwei Backslashes verwendet. Oder auch beim anlegen eines Verzeichnisses mit dem Namen:

mkdir C:\

erwartet die Eingabe eines Leerzeichens um das Kommando abzuschließen.

Die Eingabe von:

mkdir C:\ #

Genau da ist ein Leerzeichen nach dem \ und so wird dann ein Verzeichnisname mit Leerzeichen erstellt, deswegen muß man es so schreiben:

mkdir C:\\

Andernfalls sieht das dann so aus:

linuxhase@openSUSE-Desk:~> # ls -lQ|head -44|tail -2
drwxr-xr-x  2 root  root        4096  3. Sep 15:08 "C:"
drwxr-xr-x  2 root  root        4096  3. Sep 15:08 "C: "

Linuxhase

0

Microsoft hat hier wieder einmal den lange vor dem ersten Microsoft-Betriebssystem benutzen "quasi-Standard" ignoriert und seine eigenen Regeln geschaffen. Das betrifft u.a. das Leerzeichen, den Tabulator und auch den Backslash.

Jeder Benutzer und noch viel mehr der Programmierer kann hier schon Wutanfälle bekommen, wenn er einen Code für Linux und Windows benutzen will (muss).

Ein Leerzeichen hat in Unix-/Linux-Systemen die Bedeutung eines Trennzeichens zwischen Namen, also z.B. zwischen Befehlen und Parametern oder zwischen Parametern. So wird ein

cp meine_datei  ziel 

als Befehl Kopiere die Datei "meine_datei" nach "ziel" interpretiert.

cp meine datei ziel 

kann so nicht funktionieren. Man muss also sagen, dass "meine datei" als Ganzes ein Element ist. Dafür gibt es 2 Möglichkeiten. Entweder man "entzieht dem Leerzeichen die Bedeutung Trennzeichen indem man einen Backslash vor das betreffende Leerzeichen setzt oder man setzt das betreffende Element in Hochkomma.

Da der \ bei Windows aber das Trennzeichen für Verzeichnisse ist gibt es da Probleme. Ähnlich kann es mit dem Hochkomma sein.

Um das zu umgehen, sollte man (falls man häufig Dateien zwischen Windows und Linux austauscht ) sich angewöhnen keine Leerzeichen oder Tabulatoren in Namen zu verwenden. Mit der Verwendung des _ kann man genauso (und besser) die Übersichtlichkeit erhalten. So eine Schreibweise versteht dann sogar Windows.

Hallo

Kann das sein dass Linux Dateinamen die mit Leerzeichen versehen, sind nicht richtig verarbeiten kann?

Jaein

Man kann jetzt nicht pauschal sagen das GNU/Linux Systeme das nicht könnten, sondern es kommt auf die bearbeitende Software an.

dann kann ich mit cd Eigene Dateien nicht in das Verzeichnis wechseln.

Beispiel:

linuxhase@openSUSE-Desk:~> mkdir "Eigene Dateien"
linuxhase@openSUSE-Desk:~> cd Eigene\ Dateien/
linuxhase@openSUSE-Desk:~/Eigene Dateien> cd ..
linuxhase@openSUSE-Desk:~> cd "Eigene Dateien"
linuxhase@openSUSE-Desk:~/Eigene Dateien>

Ich kann diesen Ordner, bzw. diese Datei auch nicht in eine andere Hierarchieebene verschieben.

linuxhase@openSUSE-Desk:~> mkdir linuxaffiner
linuxhase@openSUSE-Desk:~> mv Eigene\ Dateien/ linuxaffiner
linuxhase@openSUSE-Desk:~> ls -r1 linuxaffiner
linuxhase@openSUSE-Desk:~> Eigene Dateien

Es geht schon, wenn man die Dateinamen in Quote Zeichen steckt oder die Leerzeichen (ebenso wie auch Sonderzeichen) escapen tut, das machen die Backslashes.

Aber wenn ich in der Konsole solche Sachen zu machen habe, dann verwende ich da den Mindight Commander Dateiname: mc

Oder man baut ein Script und erstellt dafür einen Alias-Befehl mit dem man dieses aufruft.

Bei Windows ist das in der Eingabeaufforderung genauso.

Linuxhase

Alternativ zum escapen mit dem Backslash \ kannst Du den Verzeichnisnamen auch in Anführungszeichen setzen, was bei vielen Leerzeichen schneller ist:

cd "Eigene Dateien"

oder Du verwendest die Autovervollständigung, in dem Du eingibst:

cd Eigene 

und dann Tab drückst. Du erhältst eine Auswahl passender Verzeichnisse oder sofort

cd Eigene\ Dateien

Was möchtest Du wissen?