Übergeben von Dateinamen mit Leerzeichen in Bash behandeln
Linux hat eine Standard-Shell-Bash (auch bekannt als Bourne-Again-Shell), um Befehle für das System auszuführen. Die meisten Programmierer bevorzugen bash gegenüber cmd aufgrund der Flexibilität und des leistungsstarken Befehlszeileninterpreters, den bash bietet. Bei den meisten Benutzern treten jedoch weiterhin Probleme auf, wenn versucht wird, Dateinamen mit Leerzeichen in bash zu übergeben. Dies liegt daran, dass Leerzeichen in bash nicht mit denen in Dateinamen identisch sind.
Warum wird der Dateiname mit Leerzeichen nicht von Bash erkannt?
Wenn Sie in Bash mehrere Wörter ohne Escapezeichen (\) oder Anführungszeichen eingeben, werden alle Wörter als Argumente betrachtet. Dies gilt für alle Vorgänge, unabhängig davon, ob Sie das Verzeichnis mit ' cd ' wechseln oder versuchen, mit ' cat ' -Befehlen auf Dateien zuzugreifen. Alles, was Sie schreiben, nachdem Sie diese verwendet haben, wird als Argument gewertet. Zum Beispiel:
Katzendateiname.txt
Hinweis : Ihr Dateiname kann beliebig sein. In diesem Artikel wird als Beispiel " Dateiname.txt " verwendet.
Der Befehl ' cat ' betrachtet Datei und Name als zwei Argumente und nicht als ein einziges Argument. Wenn Sie jedoch Escape-Zeichen oder Anführungszeichen verwenden, betrachtet die Bash-Shell dies als ein einziges Argument, nämlich als „ Dateiname.txt “.
Dateiname mit Leerzeichen in Bash
Es gibt nur wenige Methoden, die für die Leerzeichen im Namen verwendet werden können. Es wird empfohlen, in Zukunft Leerzeichen für Dateinamen zu vermeiden. Eine einfache Methode besteht darin, die Datei, auf die Sie zugreifen möchten, umzubenennen und Leerzeichen zu entfernen. Einige andere Methoden verwenden einfache oder doppelte Anführungszeichen für den Dateinamen mit Leerzeichen oder das Escape-Symbol (\) direkt vor dem Leerzeichen. Wir werden Methoden mit angewandten Beispielen zur Verfügung stellen, um Ihnen zu zeigen, wie es funktioniert.
Methode 1: Verwenden von einfachen und doppelten Anführungszeichen
- Halten Sie Strg + Alt gedrückt und drücken Sie T, um das Terminal zu öffnen.
- Wechseln Sie nun in das Verzeichnis, in dem sich die Datei befindet.
(Sie können die Datei auch nach dem Befehl ' cat ' in das Terminal ziehen und dort ablegen, wodurch automatisch Anführungszeichen in den Dateipfad / das Dateiverzeichnis eingefügt werden.)
CD-Desktop
Verzeichnis wechseln Hinweis : Der Desktop kann an den Speicherort geändert werden, auf den Sie zugreifen möchten.
- Geben Sie den folgenden Befehl ein, um eine Textdatei mit Leerzeichen im Namen zu lesen:
Katze 'Dateiname.txt'
oder
Katze "Dateiname.txt"
Verwenden von Anführungszeichen, um Leerzeichen in Namensfehlern zu vermeiden - Einzelne und doppelte Anführungszeichen ergeben dasselbe. In einigen Fällen müssen Sie beide ausprobieren, um festzustellen, welche funktioniert.
Methode 2: Verwenden von Backlash Escape Character
- Halten Sie Strg + Alt gedrückt und drücken Sie T, um das Terminal zu öffnen.
- Wechseln Sie mit dem folgenden Befehl in das Verzeichnis, in dem sich die Datei befindet.
CD-Desktop
Hinweis : Geben Sie anstelle von Desktop den Namen Ihres Standorts ein.
- Geben Sie nun den Befehl ein und verwenden Sie das Escape- Zeichen an einer beliebigen Stelle im Namen:
Katzendatei \ name.txt
Verwenden des Escapezeichens, um Leerzeichenfehler zu vermeiden
Bonus: Verwendung von Zitaten und Escape
Wenn Sie das Verzeichnis im Befehl verwenden, kann es manchmal Konsequenzen für die Verwendung von Anführungszeichen im Gesamtpfad geben. Dies liegt daran, dass einige Befehle wie ' mv ' oder ' cp ' den Pfad als Dateiquelle betrachten, wenn das Zitat insgesamt verwendet wird. Sie müssen Angebote sowohl für die Quelle als auch für das Ziel einzeln bereitstellen, damit Befehle wie ' cp ' ordnungsgemäß funktionieren können. Sie können auch das folgende Beispiel überprüfen, das zeigt, dass die Verwendung des Escape-Zeichens für den Pfad sehr viel komplexer ist und Benutzer Fehler machen können.