GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo crear un archivo con el nombre de un argumento de línea de comando?

Llame al comando así:

mkdir -- -a

El -- significa que las opciones terminan después de eso, por lo que -a se interpreta literalmente y no como una opción para mkdir . Encontrará esta sintaxis no solo en mkdir , pero cualquier utilidad compatible con POSIX excepto echo y test . De la especificación:

El argumento -- debe aceptarse como un delimitador que indica el final de las opciones. Los siguientes argumentos deben tratarse como operandos, incluso si comienzan con el carácter '-'. El argumento -- no debe usarse como una opción o como un operando.

Usando -- como medida de seguridad se recomienda para casi cualquier acción en la que trate con nombres de archivo y quiera asegurarse de que no rompan el comando, p. al mover archivos en un bucle, es posible que desee llamar a lo siguiente, de modo que un archivo llamado -i no está (¿en?) analizado correctamente como una opción:

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

La forma más sencilla de que funcione con cualquier programa razonable es usar un nombre de ruta relativo delante del - , p.ej. mkdir ./-a creará un directorio llamado -a en el directorio de trabajo actual.

El ejemplo más común de usar este "truco" es cuando desea eliminar un archivo que comienza con un guión, por lo que puede hacer rm ./-a .


La razón por la que mkdir '-a' , o mkdir \-a no funciona porque ambos métodos (usando comillas o barras invertidas) se usan para evitar que su shell (probablemente bash ) de darles algún significado especial. Desde -a no significa nada especial para el shell de todos modos, esto no tiene ningún efecto sobre cómo se pasa a mkdir .

Hasta mkdir en cuestión, recibe una lista de argumentos del shell, y no puede saber si los puso entre comillas o no, o si hubo una barra invertida. Solo ve un argumento -a . Por eso necesitas el -- como se explica en las otras respuestas.


Linux
  1. Cómo cambiar permisos y propietarios a través de la línea de comandos

  2. Cómo crear una base de datos en MySQL usando la línea de comandos

  3. Cómo extraer el archivo tar.gz en Linux usando la línea de comandos

  4. ¿Cómo analizar cada línea de un archivo de texto como un argumento para un comando?

  5. ¿Cómo reemplazar un archivo en jar con línea de comando en Linux?

Cómo crear un archivo en Linux

Cómo crear un archivo Tar Gz

Cómo crear un directorio en Linux usando el comando mkdir

Cómo crear un enlace simbólico en Linux usando el comando Ln

Cómo enviar un correo electrónico con un archivo adjunto desde la línea de comandos

Cómo extraer el archivo Tar.xz en la línea de comandos de Linux