Berikut ini sedikit disederhanakan untuk membantu pengguna baru.
Pertama-tama, perlu memahami konsep input standar dan output standar.
Di Linux dan sistem operasi mirip UNIX lainnya, setiap proses memiliki input standar ( stdin) dan output standar ( stdout). Situasi yang biasa adalah itu stdinadalah keyboard Anda dan stdoutmerupakan layar atau jendela terminal Anda.
Jadi ketika Anda menjalankan ls, itu akan membuang outputnya stdout. Jika Anda tidak melakukan apa pun, itu akan pergi ke layar atau jendela terminal Anda, dan Anda akan melihatnya.
Sekarang, beberapa perintah Linux berinteraksi dengan pengguna, dan gunakan stdinuntuk melakukan itu, editor teks Anda menjadi salah satunya. Bunyinya dari stdinmenerima menerima penekanan tombol Anda, melakukan hal-hal, dan kemudian menulis hal-hal untuk stdout.
Namun, ada juga perintah non-interaktif atau "filter" yang TIDAK bekerja secara interaktif, tetapi menginginkan banyak data. Perintah-perintah ini akan mengambil semua yang stdindimiliki, melakukan sesuatu untuk itu, dan kemudian melemparkannya kestdout
Mari kita lihat perintah lain yang disebut du- singkatan untuk penggunaan disk. du /usr, misalnya, akan mencetak (untuk stdoutmenyukai perintah Linux lainnya) daftar setiap file dalam 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 dapat Anda katakan langsung dari kelelawar, itu tidak diurutkan, dan Anda mungkin ingin itu diurutkan berdasarkan ukuran.
sortadalah salah satu dari perintah "filter" yang akan mengambil banyak hal dari stdindan mengurutkannya.
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 perintah stdoutdari satu ke yang stdinlainnya. Biasanya Anda akan menggunakannya dalam situasi seperti ini di mana Anda ingin memfilter, mengurutkan atau memanipulasi output dari suatu perintah. Mereka dapat di-cascade jika Anda ingin memproses output melalui beberapa perintah tipe filter.
Jika Anda mengetik sortsendiri, ia masih akan mencoba membaca stdin. Karena stdinterhubung ke keyboard Anda, itu akan menunggu Anda untuk mengetik, dan memproses semuanya sampai Anda menekan Control-D. Ini tidak akan meminta Anda karena itu tidak dimaksudkan untuk digunakan secara interaktif.
Adalah mungkin bagi suatu program untuk mengetahui apakah stdinitu interaktif atau tidak, sehingga beberapa program mungkin bertindak berbeda jika Anda mengeluarkannya sendiri atau di ujung pipa.
Juga, mem-pip sebuah program yang hanya berfungsi secara interaktif, seperti vi, akan mengakibatkan Anda mengalami kesulitan.
Pipa berbeda dari pengalihan karena data diacak dari satu perintah ke perintah berikutnya tanpa disimpan di mana pun. Jadi, dalam contoh di atas, duoutput tidak disimpan di mana pun. Sebagian besar waktu Anda tidak ingin ini dengan pipa karena alasan untuk menggunakan pipa adalah untuk memproses output dari suatu perintah - tetapi, ada perintah teeyang memungkinkan Anda memiliki kue dan memakannya juga, itu akan salin apa yang diterimanya dari stdinkeduanya stdoutdan file pilihan Anda. Anda juga dapat melakukan ini bashdengan sintaksis misterius yang melibatkan ampersand dan tanda kurung yang tidak saya ketahui.
|adalah bahwa ia tidak menggunakan nama, output dari perintah l-hand diteruskan langsung ke input untuk perintah di sisi-r pipa.