2015-09-03 20 views
10

Come posso sopprimere i messaggi di errore con il comando bash ls?Come sopprimere il messaggio di errore di `ls`?

Esempio:

ci sono solo file JPG nel percorso. Shell-Command (bash)

ls *.zip 

dà Messaggio di errore

Esiste la possibilità di messaggio di errore Supress? Voglio usare questo comando in bash-script e non voglio mostrare questo messaggio.

+5

Se si utilizza 'ls' per ottenere un elenco di nomi di file da elaborare, [non farlo] (http://mywiki.wooledge.org/ParsingLs). – chepner

+2

Si potrebbe usare 'shopt -s nullglob' in modo che il glob diventi nullo. Naturalmente funzionerebbe molto bene con ls, dato che restituirebbe tutti i file nella directory. It * would * funziona se si usa qualcosa come 'per file in * .zip' – user000001

+2

per sopprimere il messaggio di errore basta reindirizzare * stderr * a'/dev/null', come in 'ls * .zip 2>/dev/null ' –

risposta

21

ls uscite a stdout e stderr in modo da poter utilizzare bash redirection per eliminare l'errore.

ls *.zip 2>/dev/null 
+0

Grazie per la tua risposta veloce. perfezionare! – Peter

5
$ ls *.zip 2>/dev/null 

sarà redirect eventuali messaggi di errore su stderr a/dev/null (vale a dire che non li vedrete)

Annotare il valore di ritorno (data dal $?) sarà ancora riflettere sul fatto che un errore si è verificato.

1

Per sopprimere il messaggio di errore e anche restituire lo stato di uscita zero aggiungere || true, ad esempio:

$ ls *.zip && echo hello 
ls: cannot access *.zip: No such file or directory 
$ ls *.zip 2>/dev/null && echo hello 
$ ls *.zip 2>/dev/null || true && echo hello 
hello 

$ touch x.zip 
$ ls *.zip 2>/dev/null || true && echo hello 
x.zip 
hello