So bearbeiten Sie Dateinamen mit Leerzeichen und Sonderzeichen unter Linux


Wir stoßen sehr regelmäßig auf Dateien und Ordnernamen. In den meisten Fällen beziehen sich Datei-/Ordnernamen auf den Inhalt der Datei/des Ordners und beginnen mit Zahlen und Zeichen. Alpha-numerische Dateinamen sind ziemlich häufig und sehr verbreitet, aber dies ist nicht der Fall, wenn wir uns mit Datei-/Ordnernamen befassen müssen, die Sonderzeichen enthalten.

Hinweis: Wir können Dateien jeden Typs haben, aber der Einfachheit und einfachen Implementierung halber werden wir uns im gesamten Artikel mit Textdateien (.txt) befassen.

Beispiele für die häufigsten Dateinamen sind:

abc.txt
avi.txt
debian.txt
...

Beispiele für numerische Dateinamen sind:

121.txt
3221.txt
674659.txt
...

Beispiele für alphanumerische Dateinamen sind:

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...

Beispiele für Dateinamen, die Sonderzeichen haben und nicht sehr häufig sind:

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...

Eine der naheliegendsten Fragen hierbei ist, wer in aller Welt Dateien/Ordnernamen mit einem Hash (#) , einem Semikolon (;) , einem Semikolon erstellt/verarbeitet Strich (-) oder ein anderes Sonderzeichen.

Ich stimme Ihnen zu, dass solche Dateinamen nicht üblich sind, dennoch sollte Ihre Shell nicht brechen/aufgeben, wenn Sie sich mit solchen Dateinamen befassen müssen. Auch technisch gesehen wird alles, ob Ordner, Treiber oder irgendetwas anderes, unter Linux als Datei behandelt.

Umgang mit Dateien, deren Name einen Bindestrich (-) enthält

Erstellen Sie eine Datei, die mit einem Bindestrich (-) beginnt, z. B. -abx.txt.

$ touch -abc.txt
touch: invalid option -- 'b'
Try 'touch --help' for more information.

Der Grund für den obigen Fehler ist, dass die Shell alles nach einem Bindestrich (-) als Option interpretiert, und offensichtlich gibt es keine solche Option, daher ist der Fehler.

Um einen solchen Fehler zu beheben, müssen wir der Bash-Shell (yup dieses und die meisten anderen Beispiele im Artikel für BASH) mitteilen, dass nach dem Sonderzeichen (hier Bindestrich) als Option nichts interpretiert werden soll.

Es gibt zwei Möglichkeiten, um diesen Fehler zu beheben:

$ touch -- -abc.txt		[Option #1]
$ touch ./-abc.txt		[Option #2]

Sie können die so erstellte Datei auf beide oben genannten Arten überprüfen, indem Sie die Befehle ls oder ls -l ausführen, um eine lange Auflistung zu erhalten.

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 11:05 -abc.txt

So bearbeiten Sie die obige Datei:

$ nano -- -abc.txt 
or 
$ nano ./-abc.txt 

Hinweis: Sie können nano durch einen anderen Editor Ihrer Wahl ersetzen, z. B. vim:

$ vim -- -abc.txt 
or 
$ vim ./-abc.txt 

Um eine solche Datei zu verschieben, müssen Sie ähnlich vorgehen:

$ mv -- -abc.txt -a.txt
or
$ mv -- -a.txt -abc.txt

und um diese Datei zu löschen, müssen Sie Folgendes tun:

$ rm -- -abc.txt
or
$ rm ./-abc.txt 

Wenn Sie viele Dateien in einem Ordner haben, dessen Name Bindestrich enthält, und Sie alle auf einmal löschen möchten, gehen Sie wie folgt vor:

$ rm ./-*

1. Die gleiche Regel wie oben beschrieben gilt für eine beliebige Anzahl von Bindestrichen im Namen der Datei und deren Auftreten. Das heißt, -a-b-c.txt, ab-c.txt, abc-.txt usw.

2. Die gleiche Regel wie oben beschrieben gilt für den Namen des Ordners mit einer beliebigen Anzahl von Hypen und deren Auftreten, mit der Ausnahme, dass Sie zum Löschen des Ordners "rm -rf" verwenden müssen als:

$ rm -rf -- -abc
or
$ rm -rf ./-abc

Umgang mit Dateien mit HASH (#) im Namen

Das Symbol # hat in BASH eine ganz andere Bedeutung. Alles nach einem # wird als Kommentar interpretiert und daher von BASH vernachlässigt.

Erstellen Sie eine Datei # abc.txt.

$ touch #abc.txt
touch: missing file operand
Try 'touch --help' for more information.

Der Grund für den obigen Fehler ist, dass Bash # abc.txt als Kommentar interpretiert und daher ignoriert. Der Befehl touch wurde also ohne Dateioperanden übergeben, und daher liegt der Fehler vor.

Um diesen Fehler zu beheben, können Sie BASH bitten, # nicht als Kommentar zu interpretieren.

$ touch ./#abc.txt
or
$ touch '#abc.txt'

und überprüfen Sie die gerade erstellte Datei wie folgt:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:14 #abc.txt

Erstellen Sie nun eine Datei, deren Name # an einer beliebigen Stelle außer beim Betteln enthält.

$ touch ./a#bc.txt
$ touch ./abc#.txt

or
$ touch 'a#bc.txt'
$ touch 'abc#.txt'

Führen Sie "ls -l" aus, um dies zu überprüfen:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:16 a#bc.txt
-rw-r--r-- 1 avi avi 0 Jun  8 12:16 abc#.txt

Was passiert, wenn Sie zwei Dateien (z. B. a und #bc) gleichzeitig erstellen:

$ touch a.txt #bc.txt

Überprüfen Sie die gerade erstellte Datei:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:18 a.txt

Aus dem obigen Beispiel geht hervor, dass nur die Datei "a" erstellt wurde und die Datei "#bc" ignoriert wurde. Um die obige Situation erfolgreich auszuführen, können wir Folgendes tun:

$ touch a.txt ./#bc.txt
or
$ touch a.txt '#bc.txt'

und überprüfen Sie es als:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:20 a.txt
-rw-r--r-- 1 avi avi 0 Jun  8 12:20 #bc.txt

Sie können die Datei wie folgt verschieben:

$ mv ./#bc.txt ./#cd.txt
or
$ mv '#bc.txt' '#cd.txt'

Kopieren Sie es als:

$ cp ./#cd.txt ./#de.txt
or
$ cp '#cd.txt' '#de.txt'

Sie können es mit dem von Ihnen gewählten Editor bearbeiten als:

$ vi ./#cd.txt
or
$ vi '#cd.txt'
$ nano ./#cd.txt
or
$ nano '#cd.txt'

Und löschen Sie es als:

$ rm ./#bc.txt 
or
$ rm '#bc.txt'

Um alle Dateien zu löschen, deren Dateiname den Hash (#) enthält, können Sie Folgendes verwenden:

 # rm ./#*

Umgang mit Dateien mit Semikolon (;) im Namen

Falls Sie sich nicht bewusst sind, fungiert das Semikolon in BASH und möglicherweise auch in einer anderen Shell als Befehlstrennzeichen. Mit Semikolon können Sie mehrere Befehle gleichzeitig ausführen und fungieren als Trennzeichen. Haben Sie sich jemals mit einem Dateinamen befasst, der ein Semikolon enthält? Wenn nicht hier, wirst du.

Erstellen Sie eine Datei mit einem Semikolon.

$ touch ;abc.txt
touch: missing file operand
Try 'touch --help' for more information.
bash: abc.txt: command not found

Der Grund für den obigen Fehler ist, dass beim Ausführen des obigen Befehls BASH touch als Befehl interpretiert, aber vor dem Semikolon kein Dateioperand gefunden werden konnte und daher ein Fehler gemeldet wird. Es wird auch ein weiterer Fehler gemeldet, dass der Befehl "abc.txt" nicht gefunden wurde, nur weil BASH nach dem Semikolon einen anderen Befehl erwartet hat und "abc.txt" kein Befehl ist.

Um einen solchen Fehler zu beheben, weisen Sie BASH an, das Semikolon nicht als Befehlstrennzeichen zu interpretieren.

$ touch ./';abc.txt'
or
$ touch ';abc.txt'

Hinweis: Wir haben den Dateinamen in einfache Anführungszeichen '' eingeschlossen. Es teilt BASH mit, dass ; ein Teil des Dateinamens und kein Befehlstrennzeichen ist.

Der Rest der Aktion (dh Kopieren, Verschieben, Löschen) für die Datei und den Ordner mit dem Semikolon im Namen kann direkt ausgeführt werden, indem der Name in einfache Anführungszeichen gesetzt wird.

Umgang mit anderen Sonderzeichen im Datei- / Ordnernamen

Benötigen Sie nichts extra, machen Sie es einfach wie gewohnt, so einfacher Dateiname wie unten gezeigt.

$ touch +12.txt 

Sie müssen den Dateinamen in einfache Anführungszeichen setzen, wie wir es im Fall von Semikolon getan haben. Der Rest der Dinge ist einfach.

$ touch '$12.txt'

Sie müssen nichts anders machen, behandeln Sie es als normale Datei.

$ touch %12.txt

Wenn Sie Asterisk im Dateinamen haben, ändern Sie nichts und Sie können es weiterhin als normale Datei verwenden.

$ touch *12.txt

Hinweis: Wenn Sie eine Datei löschen müssen, die mit * beginnt, verwenden Sie niemals die folgenden Befehle, um solche Dateien zu löschen.

$ rm *
or
$ rm -rf *

Verwenden Sie stattdessen,

$ rm ./*.txt

Fügen Sie einfach den Dateinamen in einfache Anführungszeichen ein und der Rest der Dinge ist der gleiche.

$ touch '!12.txt'

Nichts Besonderes, behandeln Sie einen Dateinamen mit At Sign als nicht normale Datei.

$ touch '@12.txt'

Keine zusätzliche Aufmerksamkeit erforderlich. Verwenden Sie eine Datei mit ^ im Dateinamen als normale Datei.

$ touch ^12.txt

Der Dateiname sollte in einfache Anführungszeichen gesetzt werden und Sie können loslegen.

$ touch '&12.txt'

Wenn der Dateiname Klammern enthält, müssen Sie den Dateinamen in einfache Anführungszeichen setzen.

$ touch '(12.txt)'

Keine zusätzliche Pflege erforderlich. Behandle es einfach als eine andere Datei.

$ touch {12.txt}

Ein Dateiname mit Chevrons muss in einfache Anführungszeichen gesetzt werden.

$ touch '<12.txt>'

Behandeln Sie Dateinamen mit eckigen Klammern wie normale Dateien, und Sie müssen sich nicht besonders darum kümmern.

$ touch [12.txt]

Sie sind sehr häufig und erfordern nichts extra. Machen Sie einfach das, was Sie mit einer normalen Datei gemacht hätten.

$ touch _12.txt

Wenn ein Gleichheitszeichen nichts ändert, können Sie es als normale Datei verwenden.

$ touch =12.txt

Backslash weist die Shell an, das nächste Zeichen zu ignorieren. Sie müssen den Dateinamen in einfache Anführungszeichen setzen, wie wir es im Fall von Semikolon getan haben. Der Rest der Dinge ist einfach.

$ touch '.txt'

Sie können keine Datei erstellen, deren Name einen Schrägstrich (/) enthält, bis Ihr Dateisystem einen Fehler aufweist. Es gibt keine Möglichkeit, einem Schrägstrich zu entkommen.

Wenn Sie also eine Datei wie "/12.txt" oder "b/c.txt" erstellen können, weist entweder Ihr Dateisystem einen Fehler auf oder Sie unterstützen Unicode, sodass Sie eine Datei mit Schrägstrich erstellen können. In diesem Fall ist der Schrägstrich kein echter Schrägstrich, sondern ein Unicode-Zeichen, das einem Schrägstrich ähnelt.

Wieder ein Beispiel, bei dem Sie keinen besonderen Versuch unternehmen müssen. Ein Dateiname mit Fragezeichen kann am allgemeinsten behandelt werden.

$ touch ?12.txt

Die Dateien, die mit dot (.) beginnen, sind unter Linux sehr speziell und werden als Punktdateien bezeichnet. Es handelt sich um versteckte Dateien, in der Regel eine Konfiguration oder Systemdateien. Sie müssen den Schalter '-a' oder '-A' mit dem Befehl ls verwenden, um solche Dateien anzuzeigen.

Das Erstellen, Bearbeiten, Umbenennen und Löschen solcher Dateien ist unkompliziert.

$ touch .12.txt

Hinweis: Unter Linux können Sie so viele Punkte (.) haben, wie Sie in einem Dateinamen benötigen. Im Gegensatz zu anderen Systempunkten im Dateinamen bedeutet dies nicht, Name und Erweiterung zu trennen. Sie können eine Datei mit mehreren Punkten erstellen als:

$ touch 1.2.3.4.5.6.7.8.9.10.txt

und überprüfen Sie es als:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 14:32 1.2.3.4.5.6.7.8.9.10.txt

Sie können in einem Dateinamen ein beliebiges Komma eingeben, und Sie benötigen nichts extra. Mach es einfach normal, als einfacher Dateiname.

$ touch ,12.txt
or
$ touch ,12,.txt

Sie können einen Doppelpunkt in einem Dateinamen haben, so viele Sie möchten, und Sie benötigen nichts extra. Mach es einfach normal, als einfacher Dateiname.

$ touch :12.txt
or
$ touch :12:.txt

Um Anführungszeichen im Dateinamen zu haben, müssen wir die Austauschregel verwenden. Das heißt, wenn Sie ein einfaches Anführungszeichen im Dateinamen benötigen, schließen Sie den Dateinamen in doppelte Anführungszeichen ein, und wenn Sie ein doppeltes Anführungszeichen im Dateinamen benötigen, schließen Sie es in einfache Anführungszeichen ein.

$ touch "15'.txt"

and

$ touch '15”.txt'

Einige Editoren unter Linux wie Emacs erstellen eine Sicherungsdatei der zu bearbeitenden Datei. Die Sicherungsdatei enthält den Namen der Originaldatei sowie eine Tilde am Ende des Dateinamens. Sie können eine Datei, deren Name Tilde enthält, an einem beliebigen Ort einfach wie folgt haben:

$ touch ~1a.txt
or
$touch 2b~.txt

Erstellen Sie eine Datei, deren Name zwischen Zeichen/Wort steht. Sagen Sie "Hallo, mein Name ist avishek.txt".

Es ist keine gute Idee, einen Dateinamen mit Leerzeichen zu haben. Wenn Sie einen lesbaren Namen unterscheiden müssen, sollten Sie diesen verwenden, unterstreichen oder streichen. Wenn Sie jedoch eine solche Datei erstellen müssen, müssen Sie einen Schrägstrich verwenden, der das nächste Zeichen ignoriert. Um die obige Datei zu erstellen, müssen wir dies auf diese Weise tun.

$ touch hi\ my\ name\ is\ avishek.txt

hi my name is avishek.txt

Ich habe versucht, alle Szenarien abzudecken, auf die Sie stoßen könnten. Die meisten der oben genannten Implementierungen gelten explizit für die BASH-Shell und funktionieren möglicherweise nicht in einer anderen Shell.

Wenn Sie das Gefühl haben, dass ich etwas verpasst habe (das sehr häufig und menschlich ist), können Sie Ihren Vorschlag in die folgenden Kommentare aufnehmen. In Verbindung bleiben, weiter kommentieren. Bleiben Sie dran und in Verbindung! Like und teile uns und hilf uns, uns zu verbreiten!

Alle Rechte vorbehalten. © Linux-Console.net • 2019-2021