Wir stoßen sehr regelmäßig auf Datei- und Ordnernamen. In den meisten Fällen beziehen sich Datei-/Ordnernamen auf den Inhalt der Datei/des Ordners und beginnen mit Nummer und Zeichen. Alphanumerische Dateinamen sind ziemlich gebräuchlich und sehr weit verbreitet, aber das ist nicht der Fall, wenn wir mit Datei-/Ordnernamen umgehen müssen, die Sonderzeichen enthalten.
Hinweis :Wir können Dateien jeden Typs haben, aber der Einfachheit und einfachen Implementierung wegen werden wir uns mit Textdateien (.txt) befassen ), im gesamten Artikel.
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 haben 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/handhabt Dateien/Ordnernamen mit einem Hash (#)
, ein Semikolon (;)
, ein Bindestrich (-)
oder ein anderes Sonderzeichen.
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 Ordner, Treiber oder irgendetwas anderes, unter Linux als Datei behandelt.
Umgang mit einer Datei, die einen Bindestrich (-) im Namen hat
Erstellen Sie eine Datei, die mit einem Bindestrich (-)
beginnt , sagen Sie -abx.txt .
$ touch -abc.txt
Beispielausgabe
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 (-)
interpretiert , als Option, und offensichtlich gibt es keine solche Option, daher der Fehler.
Um einen solchen Fehler zu beheben, müssen wir der Bash-Shell mitteilen (ja, dieses und die meisten anderen Beispiele in diesem Artikel sind für BASH ) nichts nach 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-r--r-- 1 avi avi 0 Jun 8 11:05 -abc.txt
Um die obige Datei zu bearbeiten, können Sie Folgendes tun:
$ nano -- -abc.txt or $ nano ./-abc.txt
Hinweis :Sie können nano ersetzen mit jedem anderen Editor Ihrer Wahl sagen Sie vim als:
$ vim -- -abc.txt or $ vim ./-abc.txt
Um eine solche Datei zu verschieben, müssen Sie auf ähnliche Weise Folgendes tun:
$ 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 Bindestriche enthält, und Sie alle auf einmal löschen möchten, gehen Sie wie folgt vor:
$ rm ./-*
Wichtiger Hinweis:
1. Dieselbe 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.
2. Die gleiche Regel wie oben beschrieben gilt für den Namen des Ordners mit beliebig vielen Bindestrichen und deren Vorkommen, außer 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.
Anhand von Beispielen verstehen:
Erstellen Sie eine Datei #abc.txt .
$ touch #abc.txt
Beispielausgabe
touch: missing file operand Try 'touch --help' for more information.
Der Grund für den obigen Fehler ist, dass Bash #abc.txt interpretiert ein Kommentar und damit ignorieren. Der Befehl touch wurde also ohne einen Dateioperanden übergeben, und daher ist der Fehler.
Um einen solchen Fehler zu beheben, können Sie BASH bitten, # nicht zu interpretieren als Kommentar.
$ touch ./#abc.txt or $ touch '#abc.txt'
und überprüfen Sie die gerade erstellte Datei als:
$ ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:14 #abc.txt
Erstellen Sie nun eine Datei, deren Name #
enthält überall außer beim Betteln.
$ touch ./a#bc.txt $ touch ./abc#.txt or $ touch 'a#bc.txt' $ touch 'abc#.txt'
Führen Sie „ls -l“ aus ‘, um es 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 erstellen (z. B. eine und #bc ) auf einmal:
$ 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 ‘ und Datei ‘#bc ‘ wurde ignoriert. Um die obige Situation erfolgreich auszuführen, können wir 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 bearbeiten, indem Sie den Editor Ihrer Wahl verwenden 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 mit Hash (# ) im Dateinamen können Sie Folgendes verwenden:
# rm ./#*
Umgang mit Dateien mit Semikolon (;) im Namen
Falls Sie es nicht wissen, fungiert das Semikolon als Befehlstrennzeichen in BASH und möglicherweise auch in anderen Shells. Semikolon lässt Sie mehrere Befehle auf einmal ausführen und fungiert als Trennzeichen. Haben Sie sich jemals mit einem Dateinamen befasst, der ein Semikolon enthält? Wenn nicht hier, werden Sie es tun.
Erstellen Sie eine Datei mit Semikolon darin.
$ touch ;abc.txt
Beispielausgabe
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 interpretiert als Befehl, konnte aber vor dem Semikolon keinen Dateioperanden finden und meldet daher einen Fehler. Es meldet auch einen weiteren Fehler, nämlich „abc.txt ‘ Befehl nicht gefunden, nur weil BASH nach dem Semikolon einen anderen Befehl erwartet hat und ‘abc.txt ‘, ist kein Befehl.
Um einen solchen Fehler zu beheben, weisen Sie BASH an, das Semikolon nicht als Befehlstrennzeichen zu interpretieren, als:
$ touch ./';abc.txt' or $ touch ';abc.txt'
Hinweis :Wir haben den Dateinamen mit einfachen Anführungszeichen eingeschlossen ''
. Es teilt BASH mit, dass ;
ist ein Teil des Dateinamens und kein Befehlstrennzeichen.
Der Rest der Aktion (dh Kopieren, Verschieben, Löschen) für die Datei und den Ordner mit Semikolon im Namen kann direkt ausgeführt werden, indem der Name in einfache Anführungszeichen gesetzt wird.
Umgang mit anderen Sonderzeichen im Datei-/Ordnernamen
Pluszeichen (+) im Dateinamen
Benötigt nichts extra, machen Sie es einfach auf normale Weise, als einfacher Dateiname wie unten gezeigt.
$ touch +12.txt
Dollarzeichen ($) im Dateinamen
Sie müssen den Dateinamen in einfache Anführungszeichen setzen, wie wir es beim Semikolon getan haben. Der Rest ist einfach..
$ touch '$12.txt'
Prozent (%) im Dateinamen
Sie müssen nichts anders machen, behandeln Sie es wie eine normale Datei.
$ touch %12.txt
Sternchen (*) im Dateinamen
Mit Asterisk im Dateinamen ändert sich 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
Ausrufezeichen (!) im Dateinamen
Setzen Sie einfach den Dateinamen in einfache Anführungszeichen und der Rest ist gleich.
$ touch '!12.txt'
At Zeichen (@) im Dateinamen
Nichts Besonderes, behandeln Sie einen Dateinamen mit einem At-Zeichen als eine normale Datei.
$ touch '@12.txt'
^ im Dateinamen
Keine zusätzliche Aufmerksamkeit erforderlich. Verwenden Sie eine Datei mit ^
in Dateiname als normale Datei.
$ touch ^12.txt
Ampersand (&) im Dateinamen
Der Dateiname sollte in einfache Anführungszeichen gesetzt werden und Sie können loslegen.
$ touch '&12.txt'
Klammern () im Dateinamen
Wenn der Dateiname Klammern enthält, müssen Sie den Dateinamen in einfache Anführungszeichen setzen.
$ touch '(12.txt)'
Klammern {} im Dateinamen
Keine zusätzliche Pflege erforderlich. Behandeln Sie sie einfach als eine weitere Datei.
$ touch {12.txt}
Chevrons <> im Dateinamen
Ein Dateiname mit Chevrons muss in einfache Anführungszeichen gesetzt werden.
$ touch '<12.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 [12.txt]
Unterstrich (_) im Dateinamen
Sie sind sehr verbreitet und erfordern nichts Besonderes. Mach einfach das, was du auch mit einer normalen Datei gemacht hättest.
$ touch _12.txt
Gleich (=) im Dateinamen
Ein Gleichheitszeichen ändert nichts, Sie können es als normale Datei verwenden.
$ touch =12.txt
Umgang mit Backslash (\)
Backslash weist die Shell an, das nächste Zeichen zu ignorieren. Sie müssen den Dateinamen in einfache Anführungszeichen setzen, wie wir es beim Semikolon getan haben. Der Rest der Dinge ist einfach.
$ touch '.txt'
Der Spezialfall des Schrägstrichs
Sie können keine Datei erstellen, deren Name einen Schrägstrich (/)
enthält , bis Ihr Dateisystem einen Fehler hat. Es gibt keine Möglichkeit, einem Schrägstrich zu entkommen.
Wenn Sie also eine Datei wie ‘/12.txt’ erstellen können oder ‘b/c.txt’ dann hat entweder Ihr Dateisystem einen Fehler oder Sie haben Unicode-Unterstützung, mit der 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 wie ein Schrägstrich aussieht.
Fragezeichen (?) im Dateinamen
Wieder ein Beispiel, bei dem Sie keinen besonderen Versuch unternehmen müssen. Ein Dateiname mit Fragezeichen kann am allgemeinsten behandelt werden.
$ touch ?12.txt
Punktmarkierung (.) im Dateinamen
Die Dateien, die mit dem Punkt (.)
beginnen sind unter Linux sehr speziell und werden Punktdateien genannt. Sie sind versteckte Dateien, im Allgemeinen eine Konfigurations- oder Systemdatei. Sie müssen den Schalter „-a verwenden ‘ oder ‚-A ‘ mit ls-Befehl um solche Dateien anzuzeigen.
Das Erstellen, Bearbeiten, Umbenennen und Löschen solcher Dateien ist einfach.
$ touch .12.txt
Hinweis :Unter Linux dürfen Sie beliebig viele Punkte (.)
haben wie Sie in einem Dateinamen benötigen. Im Gegensatz zu anderen Systemen bedeuten Punkte im Dateinamen 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
Komma (,) im Dateinamen
Sie können Kommas in einem Dateinamen haben, so viele Sie wollen und Sie brauchen nichts extra. Machen Sie es einfach auf normale Weise als einfachen Dateinamen.
$ touch ,12.txt or $ touch ,12,.txt
Doppelpunkt (:) im Dateinamen
Sie können so viele Doppelpunkte in einem Dateinamen haben, wie Sie möchten, und Sie benötigen nichts Zusätzliches. Machen Sie es einfach auf normale Weise als einfachen Dateinamen.
$ touch :12.txt or $ touch :12:.txt
Anführungszeichen (einfach und doppelt) im Dateinamen haben
Um Anführungszeichen im Dateinamen zu haben, müssen wir die Austauschregel anwenden. Das heißt, wenn Sie im Dateinamen ein einfaches Anführungszeichen benötigen, schließen Sie den Dateinamen in doppelte Anführungszeichen ein, und wenn Sie im Dateinamen doppelte Anführungszeichen benötigen, schließen Sie ihn in ein einfaches Anführungszeichen ein.
$ touch "15'.txt" and $ touch '15”.txt'
Tilde (~) im Dateinamen
Einige Editoren in Linux mögen emacs Erstellen Sie eine Sicherungsdatei der bearbeiteten Datei. Die Sicherungsdatei hat den Namen der Originaldatei plus eine Tilde am Ende des Dateinamens. Sie können eine Datei haben, deren Name Tilde enthält, an jedem Ort einfach als:
$ touch ~1a.txt or $touch 2b~.txt
Leerraum im Dateinamen
Erstellen Sie eine Datei, deren Name Leerzeichen zwischen Buchstaben/Worten enthält, sagen Sie „hi, mein Name ist avishek.txt “.
Es ist keine gute Idee, Dateinamen mit Leerzeichen zu haben, und wenn Sie einen eindeutig lesbaren Namen benötigen, sollten Sie einen Unterstrich oder 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 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 obigen 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 verpasst habe (das ist sehr häufig und menschlich), können Sie Ihren Vorschlag in den Kommentaren unten einfügen. Bleiben Sie in Verbindung, kommentieren Sie weiter. Bleiben Sie dran und verbunden! Liken und teilen Sie uns und helfen Sie uns, uns zu verbreiten!