Home > Software design >  Is this an implicit pipe?
Is this an implicit pipe?

Time:04-06

Consider:

./wordcount.py < war_and_peace.txt | sort -grk 2 | head

To my surprise, the following works as well and produces the same output:

./wordcount.py < war_and_peace.txt sort -grk 2 | head

How is the latter command interpreted? Is piping to sort happening implicitly?

CodePudding user response:

s this an implicit pipe?

No.

How is the latter command interpreted?

The same as

./wordcount.py sort -grk 2 < war_and_peace.txt | head

or

< war_and_peace.txt ./wordcount.py sort -grk 2 | head

or

./wordcount.py sort -grk < war_and_peace.txt 2 | head

A ./wordcount.py command is run with 3 arguments - string sort, string -grk and string 2 with standard input redirected from war_and_peace.txt file. The output of the command is redirected to the input of command head.

The placement of < followed by filename between the command arguments does not matter. It's typical to place is as the last. I like to start commands with < as the first argument, as it's the input, but some people find it confusing.

  • Related