GNU/Linux >> Tutoriales Linux >  >> Linux

¿Uso de guión (-) en lugar de un nombre de archivo?

Para un comando, si usa - como argumento en lugar de un nombre de archivo significará STDIN o STDOUT.

  1. Pero en este ejemplo, crea un archivo con el nombre - :

    echo hello > -
    

    ¿Cómo puedo hacer - en este ejemplo significa STDOUT?

  2. Por el contrario, ¿cómo puedo hacer que - significa un archivo llamado - en ejemplos como:

    cat -
    

Respuesta aceptada:

Usando - como un nombre de archivo para significar stdin/stdout es una convención que usan muchos programas. No es una propiedad especial del nombre de archivo. El núcleo no reconoce - como especial por lo que cualquier llamada del sistema que se refiera a - como nombre de archivo usará - literalmente como el nombre del archivo.

Con la redirección bash, - no se reconoce como un nombre de archivo especial, por lo que bash lo usará como el nombre de archivo literal.

Cuando cat ve la cadena - como nombre de archivo, lo trata como un sinónimo de stdin. Para evitar esto, debe modificar la cadena que cat ve de tal manera que todavía se refiere a un archivo llamado - . La forma habitual de hacer esto es prefijar el nombre del archivo con una ruta:./- , o /home/Tim/- . Esta técnica también se utiliza para solucionar problemas similares en los que las opciones de la línea de comandos chocan con los nombres de los archivos, por lo que un archivo denominado ./-e no aparece como -e opción de línea de comando a un programa, por ejemplo.


Linux
  1. Uso de memoria de Linux

  2. Linux – ¿Uso de memoria real?

  3. ¿Sin tablero, sin lanzador en Ubuntu 14.10?

  4. Uso del disco del monitor Bash

  5. ¿Es posible usar / en un nombre de archivo?

¿Cómo perfilar el uso de la memoria?

Cómo extraer el archivo filename.tar.gz

¿Qué es el uso () en las secuencias de comandos de shell?

uso de comodines de linux en cp y mv

Uso de memoria de comandos TOP

Perfilado detallado por proceso