Ask Your Question
1

Zahodenie chybového výstupu

asked 2014-12-15 22:24:06 +0100

traceur gravatar image

updated 2014-12-15 22:47:29 +0100

Miro Hrončok gravatar image

Ak chcem v príkaze:

find web \( -name *.jpg -o -name *.html \) -exec cp {} archiv \;

zahodiť všetky chybové výstupy, tak stačí dať 2>/dev/null za celý príkaz alebo ho treba dať aj pred \; ?

edit retag flag offensive close delete

1 Answer

Sort by » oldest newest most voted
1

answered 2014-12-16 05:56:18 +0100

Josef Kokeš gravatar image

updated 2014-12-16 09:51:46 +0100

Pokud máte zahodit všechny chyby, musíte je zahodit všude, kde mohou vzniknout. V tomto případě mohou chyby vzniknout ve find i v cp.


A možná radši odpovím i na něco, na co jste se neptal, ale je to důležité: Pokud napíšete find dir -name *.ext, tak je to naprosto špatně: Ta hvězdička se vyhodnotí v rámci zpracování příkazové řádky shellem, takže find ve skutečnosti nedostane parametry $1="dir", $2="-name", $3="*.ext", ale například (v závislosti na tom, co máte za soubory v aktuálním adresáři) $1="dir", $2="-name", $3="a.ext", $4="b.ext" a samozřejmě na tom spadne, protože za -name očekává jediný argument a potom zase nějaký predikát. Ono vám to při testech zafunguje, protože vás nenapadlo si v aktuálním adresáři vytvořit soubory s příponou .ext, takže shell zjistí, že požadavku *.ext nic nevyhovuje a tudíž volanému programu předá přímo *.ext, ale na ProgTestu na tom vyhoříte.

edit flag offensive delete publish link more

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Stats

Asked: 2014-12-15 22:24:06 +0100

Seen: 92 times

Last updated: Dec 16 '14