Usar -
como nombre de archivo para significar stdin / stdout es una convención que utilizan muchos programas. No es una propiedad especial del nombre del archivo. El núcleo no se reconoce -
como especial, por lo que cualquier llamada al sistema que se refiera -
como nombre de archivo se usará -
literalmente como nombre de archivo.
Con la redirección de 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 un nombre de archivo, la trata como un sinónimo de stdin. Para evitar esto, debe modificar la cadena que se 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 usa para solucionar problemas similares en los que las opciones de la línea de comandos chocan con los nombres de archivo, por lo que un archivo al que se ./-e
hace referencia no aparece como la -e
opción de línea de comando para un programa, por ejemplo.