GNU/Linux >> Znalost Linux >  >> Linux

Jsou nástroje Linuxu chytré při spouštění příkazů Piped?

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.


Linux
  1. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  2. Všechny Linux Compress/Decompress Commands

  3. Jsou při fork()ing sdíleny deskriptory souborů?

  1. 10+ Linux VI příkazy s příklady

  2. Jak se vyhnout varovné zprávě „jsou stejný soubor“ při použití cp v Linuxu?

  3. Kam jdou metadata, když uložíte soubor?

  1. Linux – Jaké jsou různé způsoby nastavení oprávnění k souborům atd. na Gnu/linux?

  2. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?

  3. Nelze smazat soubor, i když běží jako root?