Anda mungkin telah menggunakan sintaks seperti cmd0 | cmd1 | cmd2
di terminal Anda terlalu sering.
Anda mungkin juga tahu bahwa itu adalah pengalihan pipa yang digunakan untuk mengarahkan output dari satu perintah sebagai input ke perintah berikutnya.
Tapi tahukah Anda apa yang ada di bawahnya? Bagaimana sebenarnya pengalihan pipa bekerja?
Tidak perlu khawatir karena hari ini saya akan mengungkap pipa Unix sehingga lain kali Anda berkencan dengan bar vertikal mewah itu, Anda akan tahu persis apa yang terjadi.
Catatan:Saya telah menggunakan istilah Unix di beberapa tempat karena konsep pipa (seperti banyak hal lain di Linux) berasal dari Unix.
Pipa di Linux:Ide umum
Inilah yang akan Anda lihat di mana-mana tentang "apa itu pipa Unix?":
- Pipa Unix adalah mekanisme IPC (Inter Process Communication), yang meneruskan output dari satu program ke input program lain.
Sekarang, ini adalah penjelasan umum yang diberikan semua orang. Saya ingin masuk lebih dalam. Mari kita ulangi baris sebelumnya dengan cara yang lebih teknis dengan menghilangkan abstraksi:
- Pipa Unix adalah mekanisme IPC (Inter Process Communication) yang mengambil
stdout
program dan meneruskannya kestdin
dari program lain melalui buffer.
Jauh lebih baik. Menghilangkan abstraksi membuatnya jauh lebih bersih, dan lebih akurat. Anda dapat melihat diagram berikut untuk memahami cara kerja pipa:
![](https://m.unixlinux.online/article/uploadfiles/202205/2022050918481011.png)
Salah satu contoh paling sederhana dari perintah pipa adalah meneruskan beberapa keluaran perintah ke perintah grep untuk mencari string tertentu.
Misalnya, Anda dapat mencari file dengan nama yang mengandung txt seperti ini:
![](https://m.unixlinux.online/article/uploadfiles/202205/2022050918481119.png)
Perhatikan:Pipe mengalihkan stdout ke stdin tetapi tidak sebagai argumen perintah
Satu hal yang sangat penting untuk dipahami adalah bahwa pipa mentransfer stdout
dari perintah ke stdin
dari yang lain tetapi bukan sebagai argumen perintah. Saya akan menjelaskannya dengan contoh.
Jika Anda menggunakan cat
perintah tanpa argumen apa pun, defaultnya adalah membaca dari stdin
. Ini contohnya:
$ cat
Subscribe to Linux Handbook for more articles like this
^D
Subscribe to Linux Handbook for more articles like this
Di sini saya menggunakan cat
tanpa melewatkan file apa pun, jadi defaultnya adalah stdin
. Selanjutnya saya menulis satu baris dan kemudian menggunakan Ctrl+d untuk memberi tahu bahwa saya sudah selesai menulis (Ctrl+d menyiratkan EOF atau End Of File). Setelah saya selesai menulis, cat membaca dari stdin
, dan menulis baris itu ke stdout
.
Sekarang perhatikan perintah berikut:
echo hey | cat
Perintah kedua TIDAK setara dengan cat hey
. Di sini, stdout
, "hei", dibawa ke buffer, dan ditransfer ke stdin
dari cat
. Karena tidak ada argumen baris perintah, cat default ke stdin
untuk dibaca, dan sudah ada sesuatu di stdin, jadi perintah cat mengambilnya, dan mencetak ke stdout
.
Sebenarnya, saya membuat file bernama hey dan memasukkan beberapa konten ke dalamnya. Anda dapat melihat perbedaannya dengan jelas pada gambar di bawah ini:
![](https://m.unixlinux.online/article/uploadfiles/202205/2022050918481230.png)
Jenis pipa di Linux
Ada dua jenis pipa di Linux:
- Pipa tanpa nama, juga disebut pipa anonim
- Pipa bernama
Baca cerita selengkapnya
Sisa artikel hanya tersedia untuk anggota LHB. Anda dapat mendaftar sekarang secara GRATIS untuk membaca sisa artikel ini bersama dengan akses ke semua posting khusus anggota. Anda juga berlangganan buletin Linux dua minggu sekali.
BerlanggananSudah punya akun? Masuk