Právě jsem spouštěl několik příkazů v terminálu a začal jsem přemýšlet, zda Unix/Linux používá zkratky při spouštění příkazů z potrubí?
Řekněme například, že mám soubor s milionem řádků, z nichž prvních 10 obsahuje hello world
. Pokud spustíte příkaz grep "hello world" file | head
zastaví se první příkaz, jakmile najde 10 řádků, nebo pokračuje v prohledávání celého souboru?
Přijatá odpověď:
Tak nějak. Shell netuší, co udělají vámi spuštěné příkazy, pouze propojí výstup jednoho se vstupem druhého.
Pokud grep
najde více než 10 řádků, které říkají „ahoj světe“ a pak head
bude mít všech 10 řádků, které chce, a zavře potrubí. To způsobí grep
být zabit pomocí SIGPIPE, takže nemusí pokračovat ve skenování velmi velkého souboru.
Zachycování chyb při substituci příkazů pomocí „-o Errtrace“ (tj. Set -e)?
Praktický limit na počet snímků Btrfs?