GNU/Linux >> Belajar Linux >  >> Linux

Apa arti pipa linux | melakukan?

Jika Anda merasa nyaman dengan pengalihan output dan input, penjelasannya sangat mudah.

Command1 | Command2

melakukan hal yang sama dengan

Command1 > tempfile
Command2 < tempfile

tapi tanpa tempfile . Output dari Command1 terhubung langsung ke input Command2 dan transfer terjadi di dalam memori.


Berikut ini sedikit disederhanakan untuk membantu pengguna baru.

Yah, pertama-tama, perlu memahami konsep input standar dan output standar.

Di Linux dan sistem operasi serupa UNIX lainnya, setiap proses memiliki input standar (stdin ) dan output standar (stdout ). Situasi biasanya adalah stdin adalah keyboard Anda dan stdout adalah layar atau jendela terminal Anda.

Jadi saat Anda menjalankan ls , itu akan membuang outputnya ke stdout . Jika Anda tidak melakukan apa-apa lagi, itu akan masuk ke layar atau jendela terminal Anda, dan Anda akan melihatnya.

Sekarang, beberapa perintah Linux berinteraksi dengan pengguna, dan menggunakan stdin untuk melakukan itu, editor teks Anda menjadi salah satunya. Bunyinya dari stdin untuk menerima penekanan tombol Anda, melakukan sesuatu, lalu menulis sesuatu ke stdout .

Namun, ada juga perintah non-interaktif atau "filter" yang TIDAK bekerja secara interaktif, tetapi menginginkan banyak data. Perintah ini akan mengambil semuanya stdin telah, lakukan sesuatu padanya, lalu lemparkan ke stdout

Mari kita lihat perintah lain bernama du - singkatan dari penggunaan disk. du /usr , misalnya, akan dicetak (ke stdout seperti perintah Linux lainnya) daftar setiap file di direktori itu dan ukurannya:

# du /usr
2312    /usr/games
124     /usr/lib/tc
692     /usr/lib/rygel-1.0
400     /usr/lib/apt/methods
40      /usr/lib/apt/solvers
444     /usr/lib/apt
6772    /usr/lib/gnash

Seperti yang bisa langsung Anda ketahui, itu tidak disortir, dan Anda mungkin ingin mengurutkannya berdasarkan ukuran.

sort adalah salah satu perintah "filter" yang akan mengambil banyak hal dari stdin dan urutkan.

Jadi, jika kita melakukan ini:

# du /usr | sort -nr

kami mendapatkan ini, yang sedikit lebih baik:

4213348 /usr
2070308 /usr/lib
1747764 /usr/share
583668  /usr/lib/vmware
501700  /usr/share/locale
366476  /usr/lib/x86_64-linux-gnu
318660  /usr/lib/libreoffice
295388  /usr/lib/vmware/modules
290376  /usr/lib/vmware/modules/binary
279056  /usr/lib/libreoffice/program
216980  /usr/share/icons

Dan sekarang Anda dapat melihat bahwa "pipa" menghubungkan stdout dari satu perintah ke stdin dari yang lain. Biasanya Anda akan menggunakannya dalam situasi seperti ini di mana Anda ingin memfilter, mengurutkan, atau memanipulasi output dari suatu perintah. Mereka dapat diturunkan jika Anda ingin memproses keluaran melalui beberapa perintah jenis filter.

Jika Anda mengetik sort dengan sendirinya, masih akan mencoba membaca dari stdin . Sejak stdin terhubung ke keyboard Anda, itu akan menunggu Anda untuk mengetik, dan memproses sesuatu sampai Anda menekan Control-D. Itu tidak akan meminta Anda karena itu tidak benar-benar dimaksudkan untuk digunakan secara interaktif.

Suatu program dapat mengetahui apakah stdin interaktif atau tidak, sehingga beberapa program mungkin bertindak berbeda jika Anda menerbitkannya sendiri atau di akhir pipa.

Juga, menyalurkan program yang hanya bekerja secara interaktif, seperti vi , akan membuat Anda mengalami waktu yang buruk.

Pipa berbeda dari pengalihan karena data diacak dari satu perintah ke perintah berikutnya tanpa disimpan di mana pun. Jadi, Pada contoh di atas, du keluaran tidak disimpan di mana pun. Sebagian besar waktu Anda tidak menginginkan ini dengan pipa karena alasan menggunakan pipa adalah untuk memproses output dari perintah dengan cara tertentu - tetapi, ada perintah tee yang memungkinkan Anda memiliki kue dan memakannya juga, itu akan menyalin apa yang diterimanya dari stdin ke stdout dan file pilihan Anda. Anda juga dapat melakukannya dari bash dengan beberapa sintaks misterius yang melibatkan ampersand dan tanda kurung yang tidak saya ketahui.


Sungguh jika Anda ingin tahu apa yang dilakukan pipa dan perbedaan antara> dan |, buka direktori dengan banyak file, dan

dari terminal ls vs ls | more (atau melakukannya dari Windows dengan DIR dan DIR | MORE)

Jika Anda menggunakan> more Anda akan melihatnya membuat file bernama 'more' daripada mengirimkan output ls ke perintah 'more'. Jadi jika seseorang melakukan>lebih, itu mungkin kesalahan, seseorang tidak akan melakukan>lebih banyak yang akan Anda lakukan>file1. More adalah perintah yang terkenal.

juga untuk menautkan perintah dan file, bukan perintah ke perintah. Tapi sementara> mengirim output dari perintah ke file,

$ grep a

$ file kucing1 | grep aabc

grep dengan 2 parameter berupa file pola grep. grep dengan satu parameter adalah pola grep. Dan Anda dapat mengirimkannya file dengan mem-pipe konten file ke sana, atau dengan menggunakan <. Jika menggunakan <, Anda menulis nama perintah terlebih dahulu, kemudian nama file setelahnya jadi perintah

Juga banyak perintah yang menggunakan file sebagai input sehingga grep file1 akan berfungsi, seperti halnya cat file1 | grep a, dan grep a

Saya sedang mengerjakan pipa (|) dan> di DOS bahkan 15 tahun yang lalu.

Untuk meringkas bagaimana | berbeda dari - Pipa berada di antara 2 perintah berada di antara perintah dan file. The> adalah output ke file.


Linux
  1. Kuasai perintah Linux ls

  2. Apa arti &di akhir perintah linux?

  3. Apa maksud - dalam perintah linux ini?

  1. Bagaimana cara mengetahui apa yang dilakukan perintah Linux

  2. Apa Artinya Dalam Keluaran Dari Ps?

  3. Apa yang dilakukan -e dalam bash shebang?

  1. Apa arti simbol panah (->) pada baris perintah?

  2. Apa yang setara dengan ~ (tilde) Linux di Windows?

  3. Apa perintah ekspor yang seharusnya dilakukan di Linux?