wake-up-neo.net

Wie kann man den Befehl cp leise machen, wenn in BASH keine Datei gefunden wird?

Ich habe map cp gesucht, kann aber keine leise Option finden, so dass cp nicht "Keine solche Datei oder Verzeichnis" meldet. Wie kann ich festlegen, dass cp diesen Fehler nicht druckt, wenn versucht wird, die Datei zu kopieren?

22
Village

Nun, jeder hat vorgeschlagen, dass die Umleitung zu /dev/null Sie den Fehler nicht sehen kann, aber hier ist ein anderer Weg. Testen Sie, ob die Datei vorhanden ist, und führen Sie gegebenenfalls den Befehl cp aus. 

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

Wenn der erste Test fehlschlägt, wird in diesem Fall cp niemals ausgeführt und daher kein Fehler. 

30
jaypal singh

Wenn Sie nur die Fehlermeldungen unterdrücken wollen:

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

Wenn Sie die Fehlermeldungen und den Exit-Code unterdrücken möchten, verwenden Sie:

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

Die allgemeine Lösung besteht darin, stderr zum Bitbucket umzuleiten:

 cp old_file new_file 2>>/dev/null

Dadurch werden alle Fehler in Ihrem Skript ausgeblendet, was bedeutet, dass es unter verschiedenen Umständen lautlos fehlschlägt. Ich verwende >> anstelle von > in der Weiterleitung, falls stattdessen eine Protokolldatei verwendet werden muss.

6
rici

Wie für jeden Fehler, der an STDERR ausgegeben wird, leiten Sie ihn einfach an /dev/null:

cp a b 2> /dev/null
2
sschuberth

Umleiten:

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

ignore-missing-args - Fehler, die ignoriert werden, beziehen sich auf nicht vorhandene Quelldateien

0
Upen