echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Come faccio a farlo in modo che crei il file se non esiste, ma lo sovrascrive se già esiste. In questo momento questo script si aggiunge solo.Scrive sul file, ma sovrascrive se esiste
echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Come faccio a farlo in modo che crei il file se non esiste, ma lo sovrascrive se già esiste. In questo momento questo script si aggiunge solo.Scrive sul file, ma sovrascrive se esiste
Una piccola comprensione di come funzionano i tubi * nix.
In breve l'operatore >>
reindirizzamento aggiungerà righe alla fine del file specificato, dov'è come unico superiore >
svuoterà e sovrascrivere il file.
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
Alcuni ambienti non consentono qualcosa come '-bash: TheAccount.txt: non può sovrascrivere il file esistente'. –
Inoltre, '>' e '>>' sono gli * operatori di reindirizzamento dell'output *. L'operatore di pipe è '|'. –
Vedere la risposta di @BrDaHa.Usa '> |' per forzare la sovrascrittura esistente – Jake
Nonostante NylonSmile
's answer, che è "una sorta di" corretta .. ero in grado di sovrascrivere file, in questo modo ..
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
per risolvere i miei problemi .. Ho dovuto usare ... >!
, á la ..
[[ $FORCE_IT == 'YES' ]] && echo "[email protected]" >! "$X" || echo "[email protected]" > "$X"
Ovviamente, prestare attenzione a questo ...
Ciò significa che hai l'opzione zsh non predefinita 'NOCLOBBER' impostata. Usa 'setopt clobber' per ripristinare il comportamento predefinito. –
#!/bin/bash
cat <<EOF > SampleFile
Put Some text here
Put some text here
Put some text here
EOF
Se si dispone di output che può avere errori, si consiglia di utilizzare una e commerciale e maggiore di, come segue:
my_task &> 'Users/Name/Desktop/task_output.log'
questo reindirizzerà sia stderr che stdout al file di registro (anziché solo stdout).
Potrebbe essere vero, ma non è correlato alla domanda. – Deiwin
In Bash, se è stato impostato noclobber alla set -o noclobber
, quindi si utilizza la sintassi >|
Ad esempio:
echo "some text" >| existing_file
Questo funziona anche se il file non esiste ancora
Grazie, funziona anche per zsh. –
beh, questo è fantastico. Ho riconosciuto> un po 'prima di >>. – Jokester