So erstellen Sie Dateien mit Sonderzeichen unter Linux
Wir stoßen sehr regelmäßig auf Datei- und Ordnernamen. In den meisten Fällen bezieht sich der Datei-/Ordnername auf den Inhalt der Datei/des Ordners und beginnt mit Zahlen und Zeichen.
Alphanumerische Dateinamen sind ziemlich verbreitet und sehr weit verbreitet, aber das ist nicht der Fall, wenn wir es mit Datei-/Ordnernamen zu tun haben, die Sonderzeichen enthalten.
Hinweis: Wir können Dateien jeder Art haben, aber der Einfachheit und Einfachheit halber werden wir uns im gesamten Artikel mit Textdateien (.txt) befassen.
Die gebräuchlichsten Dateinamen unter Linux
Beispiele für die gebräuchlichsten 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 enthalten und nicht sehr häufig vorkommen:
#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...
Eine der offensichtlichsten Fragen hier ist: Wer um alles in der Welt erstellt/handelt mit Datei-/Ordnernamen, die einen Hash (#), ein Semikolon (;)), einen Bindestrich (-) oder ein anderes Sonderzeichen haben.
Ich stimme Ihnen zu, dass solche Dateinamen nicht üblich sind, aber Ihre Shell sollte nicht kaputt gehen/aufgeben, wenn Sie mit solchen Dateinamen umgehen müssen. Auch technisch gesehen wird alles, sei es ein Ordner, ein Treiber oder irgendetwas anderes, unter Linux als Datei behandelt.
Gestrichelter Dateiname unter Linux
Unter Linux werden Dateinamen, die mit einem Bindestrich ("-") beginnen, oft als "gestrichelte Dateinamen" oder "Dateinamen mit Bindestrich" bezeichnet. Diese Dateinamen können bei der Arbeit mit ihnen manchmal zu Problemen führen, da der führende Bindestrich fälschlicherweise als Option interpretiert oder von Befehlszeilenprogrammen gekennzeichnet werden kann.
Erstellen einer gestrichelten Datei unter Linux
Um mit gestrichelten Dateinamen unter Linux zu arbeiten, erstellen Sie zunächst eine Datei, die mit einem Bindestrich (-), z. B. -abx.txt mit dem Touch-Befehl.
$ touch -abc.txt
Beispiel-Ausgabe:
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 der Fehler.
Um einen solchen Fehler zu beheben, müssen wir die Bash-Shell anweisen, nichts nach dem Sonderzeichen (hier Bindestrich) als Option zu interpretieren.
Es gibt zwei Möglichkeiten, 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 für eine lange Auflistung ausführen.
$ ls -l
total 0
.rw-rw-r-- tecmint tecmint 0 B Tue Jun 20 10:32:43 2023 -abc.txt
Bearbeiten Sie die gestrichelte Datei unter Linux
Um eine Datei mit einem gestrichelten Dateinamen zu bearbeiten, können Sie verschiedene verfügbare Texteditoren verwenden. Hier ist ein Beispiel für die Verwendung des Nano-Texteditors:
$ nano -- -abc.txt
or
nano ./-abc.txt
Sie können nano durch einen anderen Editor Ihrer Wahl ersetzen, z. B. verwenden Sie den vim-Editor wie gezeigt:
$ vim -- -abc.txt
or
vim ./-abc.txt
Umbenennen der gestrichelten Datei unter Linux
Um eine Datei mit einem gestrichelten Dateinamen umzubenennen, können Sie den Befehl mv wie gezeigt verwenden.
Um z. B. eine Datei mit dem Namen "-abc.txt" in "-a.txt" umzubenennen, würden Sie Folgendes verwenden:
$ mv -- -abc.txt -a.txt
OR
mv ./-abc.txt ./-a.txt
Löschen Sie die gestrichelte Datei unter Linux
Um eine Datei mit einem gestrichelten Dateinamen zu löschen, können Sie den Befehl rm wie gezeigt verwenden.
$ rm -- -abc.txt
OR
rm ./-abc.txt
Wenn Sie viele Dateien in einem Ordner haben, dessen Name einen Bindestrich enthält, und Sie alle Dateien auf einmal löschen möchten, gehen Sie wie folgt vor:
$ rm ./-*
Die gleiche Regel wie oben beschrieben gilt für eine beliebige Anzahl von Bindestrichen im Namen der Datei und deren Vorkommen. Nämlich -a-b-c.txt, ab-c.txt, abc-.txt usw.
Die gleiche Regel wie oben diskutiert gilt für den Namen des Ordners mit einer beliebigen Anzahl von Bindestrichen und deren Vorkommen, mit der Ausnahme, dass Sie zum Löschen des Ordners 'rm -rf' wie folgt verwenden müssen:
$ rm -rf -- -abc
or
rm -rf ./-abc
Gehashter Dateiname unter Linux
Unter Linux ist das Zeichen "#" in Dateinamen nicht eingeschränkt oder für einen bestimmten Zweck reserviert. Sie können das Zeichen "#" wie jedes andere alphanumerische Zeichen in einem Dateinamen verwenden.
Es ist jedoch erwähnenswert, dass einige Sonderzeichen, einschließlich des "#", in bestimmten Kontexten oder bei Verwendung mit bestimmten Befehlen oder Dienstprogrammen eine besondere Bedeutung haben.
Beispielsweise wird das Zeichen "#" häufig in Shell-Skripten verwendet, um Kommentare anzuzeigen. Wenn Sie ein Shell-Skript schreiben und das Zeichen "#" in einen Dateinamen einfügen möchten, ist es ratsam, den Dateinamen richtig zu maskieren oder in Anführungszeichen zu setzen, um eine unbeabsichtigte Interpretation als Kommentar zu vermeiden.
Erstellen einer Hash-Datei unter Linux
Im Folgenden finden Sie ein Beispiel für das Erstellen einer Datei mit dem Zeichen "#" im Dateinamen:
$ touch #abc.txt
Beispiel-Ausgabe:
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 Touch-Befehl wurde also ohne Dateioperanden übergeben und daher ist der Fehler.
Um einen solchen 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 soeben erstellte Datei als:
$ ls -l
.rw-rw-r-- tecmint tecmint 0 B Tue Jun 20 11:11:00 2023 #abc.txt
Erstellen Sie nun eine Datei, deren Name # an einer beliebigen Stelle enthält, außer am Anfang.
$ touch ./a#bc.txt
touch ./abc#.txt
or
touch 'a#bc.txt'
touch 'abc#.txt'
Was passiert, wenn Sie zwei Dateien (z. B. a und #bc) gleichzeitig erstellen:
$ touch a.txt #bc.txt
Offensichtlich wurde aus dem obigen Beispiel nur die Datei 'a' erstellt und die Datei '#bc' wurde ignoriert. Um die obige Situation erfolgreich auszuführen, können wir Folgendes tun:
$ touch a.txt ./#bc.txt
or
touch a.txt '#bc.txt'
Überprüfen Sie abschließend die soeben erstellte Datei mit dem Befehl ls.
$ ls -l
Hash-Datei unter Linux umbenennen oder kopieren
Um eine Hash-Datei umzubenennen, können Sie den Befehl mv wie gezeigt verwenden.
$ mv ./#bc.txt ./#cd.txt
or
mv '#bc.txt' '#cd.txt'
Um eine Hash-Datei zu kopieren, können Sie den Befehl cp wie gezeigt verwenden.
$ cp ./#cd.txt ./#de.txt
or
cp '#cd.txt' '#de.txt'
Bearbeiten oder Löschen der Hash-Datei unter Linux
Um eine Hash-Datei zu bearbeiten, können Sie den Nano- oder Vim-Editor verwenden, wie gezeigt.
$ vi ./#cd.txt
or
vi '#cd.txt'
$ nano ./#cd.txt
or
nano '#cd.txt'
Um eine Hash-Datei zu löschen, können Sie den Befehl rm wie gezeigt verwenden.
$ rm ./#bc.txt
or
rm '#bc.txt'
Um alle Dateien zu löschen, die einen Hash (#) im Dateinamen haben, können Sie Folgendes verwenden:
$ rm ./#*
Semikolon Dateiname unter Linux
Falls Sie es nicht wissen, fungiert das Semikolon als Befehlstrennzeichen in BASH und möglicherweise auch in einer anderen Shell. Mit dem Semikolon können Sie mehrere Befehle auf einmal ausführen und fungieren als Trennzeichen. Haben Sie jemals mit einem Dateinamen zu tun gehabt, der ein Semikolon enthält? Wenn nicht hier, werden Sie es tun.
Erstellen Sie eine Datei mit einem Semikolon.
$ touch ;abc.txt
Beispiel-Ausgabe:
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 BASH beim Ausführen des obigen Befehls touch als Befehl interpretiert, aber keinen Dateioperanden vor dem Semikolon finden konnte und daher einen Fehler meldet.
Es meldet auch einen weiteren Fehler, dass der Befehl 'abc.txt' nicht gefunden wurde, nur weil BASH nach dem Semikolon einen anderen Befehl erwartete und 'abc.txt' kein Befehl ist.
Um einen solchen Fehler zu beheben, weisen Sie BASH an, Semikolon nicht als Befehlstrennzeichen zu interpretieren, wie folgt:
$ touch ./';abc.txt'
or
touch ';abc.txt'
Hinweis: Wir haben den Dateinamen in ein einfaches Anführungszeichen '' gesetzt. Es teilt BASH mit, dass ; ein Teil des Dateinamens und kein Befehlstrennzeichen ist.
Der Rest der Aktion (d.h. Kopieren, Verschieben, Löschen) für die Datei und den Ordner mit einem Semikolon im Namen kann einfach ausgeführt werden, indem der Name in ein einfaches Anführungszeichen gesetzt wird.
Sonderzeichen in Dateinamen unter Linux
Unter Linux können Dateinamen die meisten Sonderzeichen enthalten, einschließlich Leerzeichen, Punkte, Bindestriche, Unterstriche und sogar Symbole wie @, !, $ und %.
Hier ist eine Liste von Sonderzeichen, die Sie mit Vorsicht verwenden oder vermeiden sollten, wenn Sie sie in Dateinamen verwenden:
Pluszeichen (+) im Dateinamen
Um eine Pluszeichen-Datei (+) unter Linux zu erstellen, können Sie den Befehl touch zusammen mit dem Dateinamen in einfachen Anführungszeichen verwenden.
touch '+ravi.txt'
Dollarzeichen ($) im Dateinamen
Um eine Dollarzeichen-Datei ($) unter Linux zu erstellen, können Sie den Befehl touch zusammen mit dem Dateinamen in einfachen Anführungszeichen verwenden.
touch '$ravi.txt'
Prozent (%) im Dateinamen
Um eine Datei mit einem Prozentzeichen (%) unter Linux zu erstellen, können Sie verwenden.
touch '%ravi.txt'
Sternchen (*) im Dateinamen
Um eine Sternzeichen-Datei (*) unter Linux zu erstellen, können Sie verwenden.
$ touch '*ravi.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
Ausrufezeichen (!) im Dateinamen
Schließen Sie einfach den Dateinamen in das einfache Anführungszeichen ein und der Rest der Dinge ist gleich.
$ touch '!ravi.txt'
At-Zeichen (@) im Dateinamen
Nichts Besonderes, behandeln Sie einen Dateinamen mit @-Zeichen wie eine normale Datei.
$ touch '@ravi.txt'
Caret-Zeichen (^) im Dateinamen
Es ist keine besondere Aufmerksamkeit erforderlich, verwenden Sie eine Datei mit ^ im Dateinamen wie eine normale Datei.
$ touch '^ravi.txt'
Und-Zeichen (&) im Dateinamen
Der Dateiname sollte in einfache Anführungszeichen gesetzt werden, und schon kann es losgehen.
$ touch '&ravi.txt'
Klammern() im Dateinamen
Wenn der Dateiname in Klammern steht, müssen Sie den Dateinamen in einfache Anführungszeichen setzen.
$ touch '(ravi.txt)'
Geschweifte Klammern ({}) im Dateinamen
Es ist keine zusätzliche Pflege erforderlich. Behandeln Sie es einfach wie eine weitere Datei.
$ touch {ravi.txt}
Chevrons (<>) im Dateinamen
Ein Dateiname mit Chevrons muss in einfache Anführungszeichen gesetzt werden.
$ touch '<ravi.txt>'
Eckige Klammern ([]) im Dateinamen
Behandeln Sie Dateinamen mit eckigen Klammern wie normale Dateien und Sie müssen sich nicht besonders darum kümmern.
$ touch [ravi.txt]
Unter Punktzahl (_) im Dateinamen
Sie sind sehr verbreitet und benötigen nichts extra. Machen Sie einfach das, was Sie auch mit einer normalen Datei gemacht hätten.
$ touch _ravi.txt
Gleich (=) im Dateinamen
Ein Gleichheitszeichen ändert nichts, Sie können es wie eine normale Datei verwenden.
$ touch =ravi.txt
Backslash (\) im Dateinamen
Backslash weist die Shell an, das nächste Zeichen zu ignorieren. Sie müssen den Dateinamen in ein einfaches Anführungszeichen setzen, wie wir es im Fall des Semikolons getan haben. Der Rest der Dinge ist einfach.
$ touch '\ravi.txt'
Vorwärts (\) im Dateinamen
Sie können keine Datei erstellen, deren Name einen Schrägstrich (/) enthält, bis Ihr Dateisystem den Fehler hat. Es gibt keine Möglichkeit, einem Schrägstrich zu entkommen.
Wenn Sie also eine Datei wie '/ravi.txt' oder 'b/c.txt' erstellen können, hat entweder Ihr Dateisystem einen Fehler oder Sie haben Unicode-Unterstützung, die es Ihnen ermöglicht, eine Datei mit einem Schrägstrich zu erstellen. In diesem Fall handelt es sich bei dem Schrägstrich nicht um einen echten Schrägstrich, sondern um ein Unicode-Zeichen, das wie ein Schrägstrich aussieht.
Fragezeichen (?) im Dateinamen
Wieder ein Beispiel, bei dem Sie keinen besonderen Versuch unternehmen müssen. Ein Dateiname mit einem Fragezeichen kann auf die allgemeinste Weise behandelt werden.
$ touch '?ravi.txt'
Punktmarkierung (.) im Dateinamen
Die Dateien, die mit einem Punkt (.) beginnen, sind unter Linux etwas ganz Besonderes und werden Dotfiles genannt. Dabei handelt es sich in der Regel um versteckte Dateien, Konfigurations- 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 '.ravi.txt'
Hinweis: Unter Linux können Sie so viele Punkte (.) haben, wie Sie in einem Dateinamen benötigen. Im Gegensatz zu anderen Systempunkten in der Datei bedeuten Namen nicht, dass Namen und Erweiterung voneinander getrennt werden. Sie können eine Datei mit mehreren Punkten wie folgt erstellen:
$ 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
Komma (,) im Dateinamen
Sie können ein Komma in einem Dateinamen haben, so viele Sie möchten, und Sie benötigen nichts extra. Machen Sie es einfach auf die normale Art und Weise, als einfacher Dateiname.
$ touch ',ravi.txt'
or
touch ',ravi,.txt'
Doppelpunkt (:) im Dateinamen
Sie können einen Doppelpunkt in einem Dateinamen haben, so viele wie Sie möchten, und Sie benötigen nichts extra. Machen Sie es einfach auf die normale Art und Weise, als einfacher Dateiname.
$ touch :12.txt
or
touch ':ravi:.txt'
Doppelte Anführungszeichen ("") im Dateinamen
Um Anführungszeichen im Dateinamen zu haben, müssen wir die Regel des Austauschs verwenden. D.h. 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 ein einfaches Anführungszeichen ein.
$ touch "15'.txt"
and
touch 'ravi”.txt'
Tilde (~) im Dateinamen
Einige Editoren unter Linux wie Emacs erstellen eine Sicherungsdatei der Datei, die bearbeitet wird. Die Sicherungsdatei hat den Namen der Originaldatei plus eine Tilde am Ende des Dateinamens. Sie können eine Datei, deren Name eine Tilde enthält, an einem beliebigen Ort einfach wie folgt haben:
$ touch '~ravi.txt'
or
$touch 'anusha~.txt'
Leerzeichen im Dateinamen
Erstellen Sie eine Datei mit dem Namen, der ein Leerzeichen zwischen den Zeichen/Wörtern enthält, sagen Sie "Hallo, mein Name ist ravi.txt".
Es ist keine gute Idee, Dateinamen mit Leerzeichen zu haben, und wenn Sie einen eindeutigen lesbaren Namen haben müssen, sollten Sie einen Unterstrich oder einen Bindestrich verwenden. Wenn Sie jedoch eine solche Datei erstellen müssen, müssen Sie einen umgekehrten Schrägstrich verwenden, der das nächste Zeichen ignoriert. Um die obige Datei zu erstellen, müssen wir es auf diese Weise machen.
$ touch hi\ my\ name\ is\ ravi.txt
hi my name is ravi.txt
Ich habe versucht, alle Szenarien abzudecken, auf die Sie stoßen können. Die meisten der oben genannten Implementierungen sind explizit für die BASH-Shell und funktionieren möglicherweise nicht in anderen Shells.
Wenn Sie das Gefühl haben, dass ich etwas übersehen habe (das ist sehr verbreitet und in der menschlichen Natur), können Sie Ihren Vorschlag in den Kommentaren unten einfügen. Bleiben Sie in Verbindung und kommentieren Sie weiter. Bleiben Sie dran und in Verbindung! Like und teile uns und hilf uns, dich zu verbreiten!


