web-dev-qa-db-fra.com

Comment rendre la commande cp silencieuse lorsqu'aucun fichier n'est trouvé dans BASH?

J'ai cherché map cp, mais je ne trouve aucune option silencieuse, de sorte que cp ne signale pas "Aucun fichier ou répertoire de ce type". Comment faire pour que cp n'imprime pas cette erreur s'il tente, mais échoue, de copier le fichier?

22
Village

Tout le monde a bien suggéré que la redirection vers /dev/null vous empêcherait de voir l'erreur, mais voici une autre solution. Testez si le fichier existe et si c'est le cas, exécutez la commande cp

[[ -e f.txt ]] && cp f.txt ff.txt

Dans ce cas, si le premier test échoue, alors cp ne s'exécutera jamais et donc aucune erreur. 

30
jaypal singh

Si vous souhaitez supprimer uniquement les messages d'erreur:

 cp original.txt copy.txt 2>/dev/null

Si vous souhaitez supprimer les messages d'erreur et le code de sortie, utilisez:

cp original.txt copy.txt 2>/dev/null || :
12
askmish

La solution générale consiste à rediriger stderr vers le bitbucket:

 cp old_file new_file 2>>/dev/null

Cela masquerait les bogues de votre script, ce qui signifie qu'il échouerait silencieusement dans diverses circonstances. J'utilise >> plutôt que > dans la redirection au cas où il serait nécessaire d'utiliser un fichier journal.

6
rici

Comme pour toute erreur imprimée sur STDERR , redirigez-le simplement vers /dev/null:

cp a b 2> /dev/null
2
sschuberth

Réorienter:

cp ... 2>/dev/null
1
konsolebox
rsync -avzh --ignore-missing-args /path/to/source /path/to/destination

ignore-missing-args - les erreurs ignorées sont celles liées aux fichiers source non existants

0
Upen