GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erstelle ich eine Datei, die wie ein Befehlszeilenargument benannt ist?

Rufen Sie den Befehl folgendermaßen auf:

mkdir -- -a

Der -- bedeutet, dass die Optionen danach enden, also die -a wird wörtlich interpretiert und nicht als Option zu mkdir . Diese Syntax finden Sie nicht nur in mkdir , aber jedes POSIX-kompatible Dienstprogramm außer echo und test . Aus der Spezifikation:

Das Argument -- sollte als Trennzeichen akzeptiert werden, das das Ende von Optionen angibt. Alle folgenden Argumente sollten als Operanden behandelt werden, auch wenn sie mit dem Zeichen „-“ beginnen. Das Argument -- sollte nicht als Option oder als Operand verwendet werden.

Mit -- als Schutz wird für fast alle Aktionen empfohlen, bei denen Sie mit Dateinamen umgehen und sicherstellen möchten, dass sie den Befehl nicht unterbrechen, z. Wenn Sie Dateien in einer Schleife verschieben, möchten Sie vielleicht Folgendes aufrufen, damit eine Datei mit dem Namen -i wird nicht (in?)korrekt als Option geparst:

mv -- "$f" new-"$f"

Der einfachste Weg, der mit jedem vernünftigen Programm funktionieren sollte, ist die Verwendung eines relativen Pfadnamens vor dem - , z.B. mkdir ./-a erstellt ein Verzeichnis namens -a im aktuellen Arbeitsverzeichnis.

Das häufigste Beispiel für die Verwendung dieses "Tricks" ist, wenn Sie eine Datei entfernen möchten, die mit einem Bindestrich beginnt, also können Sie rm ./-a tun .


Der Grund, warum mkdir '-a' , oder mkdir \-a nicht funktioniert, liegt daran, dass diese beiden Methoden (mit Anführungszeichen oder umgekehrten Schrägstrichen) verwendet werden, um Ihre Shell zu verhindern (wahrscheinlich bash ) daran hindern, ihnen eine besondere Bedeutung zu geben. Seit -a ohnehin nichts Besonderes für die Shell, diese haben keinen Einfluss darauf, wie sie an mkdir weitergegeben wird .

Bis zu mkdir In diesem Fall erhält es eine Liste mit Argumenten von der Shell und kann nicht feststellen, ob Sie sie in Anführungszeichen gesetzt haben oder ob ein umgekehrter Schrägstrich vorhanden war. Es sieht nur ein Argument -a . Deshalb brauchen Sie den -- wie in den anderen Antworten erklärt.


Linux
  1. So ändern Sie Berechtigungen und Eigentümer über die Befehlszeile

  2. So erstellen Sie eine Datenbank in MySQL über die Befehlszeile

  3. So erstellen Sie Sparse-Dateien in Linux mit dem Befehl „dd“.

  4. Wie ersetze ich eine Datei im JAR durch die Befehlszeile in Linux?

  5. Wie verstecke ich ein als Befehlszeilenargument übergebenes Passwort?

So erstellen Sie eine Datei unter Linux

So erstellen Sie eine Tar-Gz-Datei

So erstellen Sie ein Verzeichnis in Linux mit dem mkdir-Befehl

So erstellen Sie einen symbolischen Link in Linux mit dem Ln-Befehl

So senden Sie eine E-Mail mit Dateianhang von der Befehlszeile aus

So extrahieren Sie die Tar.xz-Datei in der Linux-Befehlszeile