GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un file che si chiama come un argomento della riga di comando?

Chiama il comando in questo modo:

mkdir -- -a

Il -- significa che le opzioni terminano dopo, quindi il -a viene interpretato letteralmente e non come un'opzione di mkdir . Troverai questa sintassi non solo in mkdir , ma qualsiasi utility conforme a POSIX tranne echo e test . Dalla specifica:

L'argomento -- dovrebbe essere accettato come delimitatore che indica la fine delle opzioni. Tutti gli argomenti successivi devono essere trattati come operandi, anche se iniziano con il carattere '-'. L'argomento -- non dovrebbe essere usato come opzione o come operando.

Usando -- come protezione è consigliato per quasi tutte le azioni in cui si ha a che fare con nomi di file e si desidera assicurarsi che non interrompano il comando, ad es. quando sposti i file in un ciclo potresti voler chiamare quanto segue, in modo che un file chiamato -i non è (in?)correttamente analizzato come opzione:

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

Il modo più semplice che dovrebbe funzionare con qualsiasi programma ragionevole è utilizzare un nome di percorso relativo davanti a - , per esempio. mkdir ./-a creerà una directory chiamata -a nella directory di lavoro corrente.

L'esempio più comune di utilizzo di questo "trucco" è quando vuoi rimuovere un file che inizia con un trattino, quindi puoi fare rm ./-a .


Il motivo per cui mkdir '-a' o mkdir \-a non funziona è perché entrambi questi metodi (usando virgolette o barre rovesciate) sono usati per prevenire la tua shell (probabilmente bash ) dal dare loro un significato speciale. Da -a non significa niente di speciale per la shell comunque, questi non hanno alcun effetto su come viene passato a mkdir .

Fino a mkdir è preoccupato, riceve un elenco di argomenti dalla shell e non può dire se li hai inseriti tra virgolette o meno, o se c'era una barra rovesciata. Vede solo un argomento -a . Ecco perché ti serve il -- come spiegato nelle altre risposte.


Linux
  1. Come modificare autorizzazioni e proprietari tramite riga di comando

  2. Come analizzare ogni riga di un file di testo come argomento di un comando?

  3. Come creare file sparsi in Linux usando il comando 'dd'

  4. Come posso creare un file con una dimensione specifica da una riga di comando?

  5. Come nascondere una password passata come argomento della riga di comando?

Come creare un file in Linux

Come creare file Tar Gz

Come creare una directory in Linux usando il comando mkdir

Come creare un collegamento simbolico in Linux usando il comando Ln

Come inviare un'e-mail con allegato file dalla riga di comando

Come estrarre il file Tar.xz sulla riga di comando di Linux