In bash, un link di comando
echo test > actual.txt
sostituirà il contenuto del file chiamato actual.txt
con "test" e creerà il file se non esiste. Tuttavia, se il file esiste, bash lo aprirà, lo troncerà e scriverà i nuovi contenuti nel file.
In particolare, il comando di reindirizzamento non riesce in questo scenario:
ln -s /some/illegal/path link.txt
echo test > link.txt
Bash 4.4.12 mi dà il messaggio di errore confuso link.txt: No such file or directory
.
Un modo per evitare ciò è assicurarsi di eliminare il file prima di eseguire il comando reindirizzato.
rm link.txt && echo test > link.txt
Mi chiedevo, tuttavia, se ci fosse qualche modifica delle opzioni bash o l'operatore di reindirizzamento che impedirà questa modalità di errore. Qualche idea?
link.txt
è un collegamento a/dir/file
dove si/dir
trova un file di tipo directory in cui si dispone dell'autorizzazione di scrittura e ricerca, ma/dir/file
non esiste (e il reindirizzamento lo creerebbe senza un messaggio di errore)? Che dire se/dir/file
esiste ma non è un file normale (dispositivo, fifo, directory ...) o non hai il permesso di scrittura o il permesso di ricerca/dir
?