GNU/Linux >> Tutoriels Linux >  >> Linux

Accidentellement utilisé la redirection de sortie > au lieu d'un tube |

Pour éviter que les fichiers existants ne soient écrasés par la redirection > utilisez le noclobber option en bash ou tout shell de type POSIX (également en (t)csh d'où provient réellement la fonctionnalité, bien que vous fassiez set noclobber au lieu de set -o noclobber /set -C là). Ensuite, si vous devez forcer le remplacement d'un fichier, utilisez le >| opérateur de redirection (>! en (t)csh ).

Exemple :

$ echo abc > file
$ set -o noclobber
$ echo xyz > file
bash: file: cannot overwrite existing file
$ echo xyz >| file
$ cat file
xyz

BTW, vous pouvez vérifier les paramètres actuels avec set -o :

$ set -o
...
monitor         on
noclobber       on
noexec          off
...

Malheureusement, je soupçonne que vous devrez le réécrire. (Si vous avez des sauvegardes, c'est le moment de les sortir. Sinon, je vous recommande fortement de mettre en place un régime de sauvegarde pour l'avenir. De nombreuses options sont disponibles, mais hors sujet pour cette réponse.)

Je trouve que mettre les exécutables dans un répertoire séparé et ajouter ce répertoire au PATH est utile. De cette façon, je n'ai pas besoin de référencer les exécutables par un chemin explicite. Mon répertoire de programmes préféré pour les scripts personnels (privés) est "$HOME"/bin et il peut être ajouté au chemin de recherche du programme avec PATH="$HOME/bin:$PATH" . Généralement, cela serait ajouté aux scripts de démarrage du shell .bash_profile et/ou .bashrc .

Enfin, rien ne vous empêche de vous retirer l'autorisation d'écriture sur tous les programmes exécutables :

touch some_executable.py
chmod a+x,a-w some_executable.py    # chmod 555, if you prefer

ls -l some_executable.py
-r-xr-xr-x+ 1 roaima roaima 0 Jun 25 18:33 some_executable.py

echo "The hunting of the Snark" > ./some_executable.py
-bash: ./some_executable.py: Permission denied

Je conseille fortement d'avoir les scripts importants sous un dépôt git , synchronisé à distance (une plate-forme auto-hébergée sophistiquée fera l'affaire), comme le dit le commentaire de @ casey.

De cette façon, vous êtes protégé contre les mauvaises erreurs humaines telles que la restauration du fichier à l'état de fonctionnement précédent et son exécution à nouveau.


Linux
  1. Comprendre le répertoire /etc/sysconfig

  2. Comment ajouter la sortie à un fichier ?

  3. Comment canaliser ou rediriger la sortie de curl -v ?

  4. redirection de sortie à la volée, voir la sortie de redirection de fichier pendant que le programme est toujours en cours d'exécution

  5. afficher la 2ème colonne d'un fichier

Rediriger vers le même fichier que le fichier source traité par la commande ?

Enregistrer toutes les sorties du terminal dans un fichier ?

Comment définir l'utilisateur de Php-fpm pour qu'il soit Php-user au lieu de Www-data ?

Shell Scripting Part4 - Entrée, sortie et redirection

Enregistrer la sortie d'une commande du terminal Debian dans un fichier

diff pour afficher uniquement les noms de fichiers