echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Comment puis-je le faire pour qu'il crée le fichier s'il n'existe pas, mais l'écrase s'il existe déjà. En ce moment, ce script ajoute juste.
Un peu de compréhension sur le fonctionnement des tuyaux * nix serait utile.
En bref, l'opérateur de redirection >>
ajoutera des lignes à la fin du fichier spécifié, tandis que le numéro supérieur à >
videra et écrasera le fichier.
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
Dans Bash, si vous avez défini noclobber a la set -o noclobber
, vous utilisez la syntaxe >|
Par exemple:
echo "some text" >| existing_file
Cela fonctionne aussi si le fichier n'existe pas encore
Vérifiez si noclobber est défini avec: set -o | grep noclobber
Pour une explication plus détaillée sur ce type d'opérateur particulier, voir cet article
Pour une liste plus exhaustive des opérateurs de redirection, reportez-vous à this post
Malgré la réponse de NylonSmile
, ce qui est "en quelque sorte" correct. Je ne pouvais pas écraser les fichiers , en de cette manière ..
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
pour résoudre mes problèmes .. je devais utiliser ... >!
, á la ..
[[ $FORCE_IT == 'YES' ]] && echo "$@" >! "$X" || echo "$@" > "$X"
Évidemment, soyez prudent avec ça ...
Si votre environnement n'autorise pas le remplacement avec >
, utilisez les tubes |
et tee
comme suit:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt'
Notez que ceci sera également imprimé sur la sortie standard. Dans le cas contraire, vous pouvez rediriger la sortie vers /dev/null
comme suit:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt' > /dev/null
#!/bin/bash
cat <<EOF > SampleFile
Put Some text here
Put some text here
Put some text here
EOF
En notant simplement que si vous souhaitez rediriger std :: cerr et std :: cout vers un fichier alors que vous avez défini noclobber (c'est-à-dire set -o noclobber
), vous pouvez utiliser le code suivant:
cmd >|file.txt 2>&1
Pour plus d'informations à ce sujet, rendez-vous sur le site https://stackoverflow.com/a/876242 .
Aussi cette réponse est la question de @ TuBui sur la réponse fournie par @BrDaHa ci-dessus au 9 août 18 à 9h34.