erre a bejegyzésre bukkantam, amely megmagyarázza a problémámat. Tegyük fel, hogy létezik egy file.txt
nevű fájl, amely a “foo World” -et tartalmazza.
A Tyler által feltett válasz sokat megmagyaráz, azonban zavarban vagyok, hogy
cat file.txt | grep "foo"
hasonló a
grep "foo" file.txt
Úgy gondoltam, hogy grep
következő
grep input argument // input is the string to search for (i.e) foo and // argument is the file path (./file.txt)
Most az cat file.txt
kimenete a fájl tartalma, amely foo World
ez lesz a grep
bemenete? Igazam van? Ha igen, úgy gondoltam, hogy grep
fájlfájlra van szükség stringként?
Megjegyzések
Válasz
A legtöbb parancs foglalkozni tud vagy beírja azt a fájlt, amelyet meg kell nyitnia a bevitelhez, vagy olyan adatfolyamként, amelyet az STDIN-en keresztül továbbított a parancsnak.
Amikor az cat file.txt
egy csövön keresztül küldi el egy másik parancsnak (|
) a kimenetet az STDOUT-on keresztül, amelyet a bal oldalon lévő csőhöz továbbítottak, beállítják és betáplálják a parancsba, “a cső jobb oldalán található” s STDIN.
Ha a tartalmat nem továbbítjuk az STDOUT -> STDIN-en keresztül egy csövön keresztül, akkor a parancsok adatokat fogadhatnak azáltal, hogy megnyitják azokat a fájlokat, amelyeket névvel továbbítanak a parancssori argumentumok.
Példák
Kimenetet küld az STDOUT-nak.
$ cat file 1 2 3 4 5
Kimenet az STDOUT-on keresztül a csövön keresztül a grep
” s STDIN címre kerül elküldésre.
$ cat file | grep 5 5
A fájl feldolgozása parancssori argumentumként.
$ grep 5 file 5
A fájl tartalmának közvetlen feldolgozása az STDIN-en keresztül.
$ grep 5 < <(cat file) 5
Itt vagyok “m annak bemutatása, hogy az file
tartalma a fenti STDIN-en keresztül irányítható a grep
címre.
grep(1)
man oldal (írja be aman grep
típust), a „grep [options] PATTERN [FILE …]” üzenet jelenik meg. Az a tény, hogy a „FÁJL” után „…” következik, azt jelenti, hogy több fájl argumentum is lehet; az a tény, hogy szögletes zárójelben van ([
…]
) azt jelenti, hogy a fájl argumentum opcionális (azaz nincs hogy bármilyen legyen). Olvassa tovább, és megjelenik a „ Grep keresés a megnevezett bemeneti FÁJLOKBAN (vagy a standard bemenetben, ha nincs fájl megnevezve, vagy a fájlnév-
van megadva). Tehát: ha nincs megadva fájl, a grep a szokásos bemeneten keres.