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.