Per un comando, se si utilizza -
come argomento al posto del nome di un file significherà STDIN o STDOUT.
-
Ma in questo esempio, crea un file con il nome
-
:echo hello > -
Come posso creare
-
in questo esempio significa STDOUT? -
Al contrario, come posso creare
-
significa un file chiamato-
in esempi come:cat -
Risposta accettata:
Usando -
come nome file per indicare stdin/stdout è una convenzione utilizzata da molti programmi. Non è una proprietà speciale del nome del file. Il kernel non riconosce -
come speciale così tutte le chiamate di sistema che fanno riferimento a -
come nome file utilizzerà -
letteralmente come il nome del file.
Con il reindirizzamento bash, -
non è riconosciuto come un nome file speciale, quindi bash lo utilizzerà come nome file letterale.
Quando cat
vede la stringa -
come nome file, lo tratta come sinonimo di stdin. Per aggirare questo problema, devi modificare la stringa che cat
vede in modo tale che si riferisca ancora a un file chiamato -
. Il solito modo per farlo è anteporre al nome del file un percorso – ./-
o /home/Tim/-
. Questa tecnica viene utilizzata anche per aggirare problemi simili in cui le opzioni della riga di comando si scontrano con i nomi dei file, quindi un file denominato ./-e
non appare come -e
opzione della riga di comando a un programma, ad esempio.