- STDIN (0) - Masukan standar
- STDOUT (1) - Keluaran standar
- STDERR (2) - Kesalahan standar
Ketika kita akan bekerja dengan trik "pipa", "pipa" akan mengambil STDOUT dari sebuah perintah dan meneruskannya ke STDIN dari perintah berikutnya.
Mari kita lihat beberapa cara paling umum untuk memasukkan perintah "pipa" ke dalam penggunaan sehari-hari Anda.
Perintah pipa
Penggunaan dasar
Lebih baik untuk menguraikan cara kerja "pipa" dengan contoh langsung, kan? Mari kita mulai. Perintah berikut akan memberi tahu "pacman", manajer paket default untuk Arch dan semua distro berbasis Arch, untuk mencetak semua paket yang diinstal pada sistem.
pacman -Qqe
Ini daftar paket yang sangat PANJANG. Bagaimana, tentang mengambil hanya beberapa komponen? Kita bisa menggunakan "grep". tapi bagaimana caranya? Salah satu caranya adalah membuang output ke file sementara, "grep" output yang diinginkan dan hapus file. Serangkaian tugas ini, dengan sendirinya, dapat diubah menjadi skrip. Tapi kami hanya membuat skrip untuk hal-hal yang sangat besar. Untuk tugas ini, mari kita panggil kekuatan "pipa"!
pacman -Qqe | grep
Luar biasa, bukan?? "|" tanda adalah panggilan ke perintah "pipa"”. Ini mengambil STDOUT dari bagian kiri dan memasukkannya ke STDIN dari bagian kanan.
Dalam contoh di atas, perintah "pipe" benar-benar melewati output di akhir bagian "grep". Begini cara memainkannya.
pacman -Qqe > ~/Desktop/pacman_package.txtgrep python ~/Desktop/pacman_package.txt
Beberapa pipa
Pada dasarnya, tidak ada yang istimewa dengan penggunaan lanjutan dari perintah "pipa". Terserah Anda tentang cara menggunakannya.
Misalnya, mari kita mulai dengan menumpuk banyak pipa.
pacman -Qqe | grep p | grep t | grep py
Output perintah pacman difilter lebih jauh dan lebih jauh oleh "grep" melalui serangkaian pemipaan.
Terkadang, saat kita bekerja dengan konten file, itu bisa sangat, sangat besar. Menemukan tempat yang tepat untuk entri yang kita inginkan bisa jadi sulit. Mari kita cari semua entri yang menyertakan angka 1 dan 2.
demo kucing.txt | grep -n 1 | grep -n 2
Memanipulasi daftar file dan direktori
Apa yang harus dilakukan ketika Anda berurusan dengan direktori dengan BANYAK file di dalamnya?? Sangat menjengkelkan untuk menggulir seluruh daftar. Tentu, mengapa tidak membuatnya lebih tertahankan dengan pipa? Dalam contoh ini, mari kita periksa daftar semua file di folder “/usr/bin”.
ls -l
Di sini, "ls" mencetak semua file dan infonya. Kemudian, "pipa" meneruskannya ke "lebih" untuk bekerja dengan itu. Jika Anda tidak tahu, "lebih" adalah alat yang mengubah teks menjadi satu tampilan layar sekaligus. Namun, ini adalah alat lama dan menurut dokumentasi resmi, "kurang" lebih disarankan.
ls -l /usr/bin | kurang
menyortir keluaran
Ada alat "sort" bawaan yang akan mengambil input teks dan menyortirnya. Alat ini adalah permata yang nyata jika Anda bekerja dengan sesuatu yang sangat berantakan. Misalnya, saya mendapatkan file ini penuh dengan string acak.
demo kucing.txt
Cukup pipa ke "sort".
demo kucing.txt | menyortir
Itu lebih baik!
Mencetak kecocokan dengan pola tertentu
ls -l | Temukan ./ -ketik f -nama "*.txt" -exec grep 00110011 \;
Ini adalah perintah yang cukup bengkok, kan? Pada awalnya, "ls" menampilkan daftar semua file di direktori. Alat "temukan" mengambil output, mencari ".txt" dan memanggil "grep" untuk mencari "00110011". Perintah ini akan memeriksa setiap file teks dalam direktori dengan ekstensi TXT dan mencari kecocokannya.
Cetak konten file dengan rentang tertentu
Saat Anda bekerja dengan file besar, biasanya Anda perlu memeriksa konten dengan rentang tertentu. Kita bisa melakukannya dengan kombinasi cerdas dari "kucing", "kepala", "ekor" dan tentu saja, "pipa". Alat "kepala" menampilkan bagian pertama dari konten dan "ekor" menampilkan bagian terakhir last.
kucingkucing
Nilai unik
Saat bekerja dengan output duplikat, itu bisa sangat mengganggu. Terkadang, input duplikat dapat menyebabkan masalah serius. Dalam contoh ini, mari kita melemparkan "uniq" pada aliran teks dan menyimpannya ke dalam file terpisah.
Misalnya, ini adalah file teks yang berisi daftar besar angka yang panjangnya 2 digit. Pasti ada duplikat konten di sini, kan?
duplikat kucing.txt | menyortir
Sekarang, mari kita lakukan proses penyaringan.
duplikat kucing.txt | urutkan | unik > unik.txt
Lihat outputnya.
kelelawar unik.txt
Terlihat lebih baik!
Pipa kesalahan
Ini adalah metode perpipaan yang menarik. Metode ini digunakan untuk mengarahkan STDERR ke STDOUT dan melanjutkan dengan pemipaan. Ini dilambangkan dengan simbol “|&” (tanpa tanda kutip). Misalnya, mari buat kesalahan dan kirim hasilnya ke beberapa alat lain. Dalam contoh ini, saya baru saja mengetik beberapa perintah acak dan meneruskan kesalahan ke "grep".
adsfds |& grep n
Pikiran terakhir
Sementara "pipa" itu sendiri cukup sederhana, cara kerjanya menawarkan cara yang sangat serbaguna untuk memanfaatkan metode ini dengan cara yang tak terbatas. Jika Anda menyukai skrip Bash, maka itu jauh lebih berguna. Terkadang, Anda bisa melakukan hal-hal gila secara langsung! Pelajari lebih lanjut tentang skrip Bash.