- STDIN (0) - Input standard
- STDOUT (1) - Keluaran standard
- STDERR (2) - Kesalahan standard
Apabila kita akan bekerja dengan trik "paip", "paip" akan mengambil STDOUT arahan dan menyebarkannya ke STDIN arahan seterusnya.
Mari kita periksa beberapa cara yang paling biasa untuk memasukkan perintah "paip" ke dalam penggunaan harian anda.
Perintah paip
Penggunaan asas
Lebih baik menghuraikan kaedah kerja "paip" dengan contoh langsung, betul? Mari kita mulakan. Perintah berikut akan memberitahu "pacman", pengurus pakej lalai untuk Arch dan semua distro berasaskan Arch, untuk mencetak semua pakej yang dipasang pada sistem.
pacman -Qqe
Ini senarai pakej yang sangat PANJANG. Bagaimana, dengan mengambil beberapa komponen sahaja? Kita boleh menggunakan "grep". Tetapi bagaimana? Salah satu cara adalah membuang output ke fail sementara, "grep" output yang diinginkan dan menghapus fail. Rangkaian tugas ini, dengan sendirinya, dapat diubah menjadi skrip. Tetapi kami hanya membuat skrip untuk perkara yang sangat besar. Untuk tugas ini, mari kita memanggil kekuatan "paip"!
pacman -Qqe | grep
Hebat, bukan?? The "|" tanda adalah panggilan ke perintah "paip". Ia mengambil STDOUT dari bahagian kiri dan memasukkannya ke STDIN bahagian kanan.
Dalam contoh yang disebutkan di atas, perintah "paip" benar-benar meneruskan output pada akhir bahagian "grep". Beginilah kaedahnya.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Pelbagai paip
Pada dasarnya, tidak ada yang istimewa dengan penggunaan perintah "paip" yang lebih maju. Tergantung sepenuhnya kepada anda bagaimana menggunakannya.
Sebagai contoh, mari kita mulakan dengan menyusun pelbagai paip.
pacman -Qqe | grep p | grep t | grep py
Output perintah pacman disaring lebih jauh dan lebih jauh oleh "grep" melalui rangkaian perpaipan.
Kadang-kadang, semasa kita bekerja dengan kandungan fail, ia sangat besar. Menjumpai tempat yang betul dari entri yang diinginkan boleh menjadi sukar. Mari cari semua entri yang merangkumi digit 1 dan 2.
demo kucing.txt | grep -n 1 | grep -n 2
Memanipulasi senarai fail dan direktori
Apa yang perlu dilakukan semasa anda berurusan dengan direktori dengan TONS fail di dalamnya? Cukup menjengkelkan untuk menelusuri keseluruhan senarai. Pasti, mengapa tidak membuatnya lebih tahan dengan paip? Dalam contoh ini, mari lihat senarai semua fail dalam folder "/ usr / bin".
ls -l
Di sini, "ls" mencetak semua fail dan maklumatnya. Kemudian, "paip" menyebarkannya ke "lebih banyak" untuk bekerja dengannya. Sekiranya anda tidak tahu, "lebih" adalah alat yang mengubah teks menjadi satu paparan skrining pada satu masa. Namun, ini adalah alat lama dan menurut dokumentasi rasmi, "kurang" lebih disarankan.
ls -l / usr / bin | kurang
Menyusun output
Terdapat alat “sort” bawaan yang akan mengambil input teks dan menyelesaikannya. Alat ini adalah permata sebenar jika anda bekerja dengan sesuatu yang sangat tidak kemas. Sebagai contoh, saya mendapat fail ini dengan rentetan rawak.
demo kucing.txt
Cukup paipkan untuk "menyusun".
demo kucing.txt | mengurut
Itu lebih baik!
Mencetak padanan corak tertentu
ls -l | cari ./ -taip f -nama "*.txt "-exec grep 00110011 \;
Ini adalah arahan yang cukup berpusing, betul? Pada mulanya, "ls" mengeluarkan senarai semua fail dalam direktori. Alat "cari" mengambil output, mencari ".txt "fail dan memanggil" grep "untuk mencari" 00110011 ". Perintah ini akan memeriksa setiap fail teks dalam direktori dengan peluasan TXT dan mencari yang sesuai.
Mencetak kandungan fail dari julat tertentu
Semasa anda bekerja dengan fail besar, biasanya perlu memeriksa kandungan julat tertentu. Kita dapat melakukannya hanya dengan kombo pintar "kucing", "kepala", "ekor" dan tentu saja, "paip". Alat "kepala" mengeluarkan bahagian pertama dari isi dan "ekor" mengeluarkan bahagian terakhir.
kucingkucing
Nilai unik
Apabila bekerja dengan output pendua, ia boleh menjengkelkan. Kadang kala, input pendua boleh menyebabkan masalah serius. Dalam contoh ini, mari masukkan "uniq" pada aliran teks dan simpan ke dalam fail yang berasingan.
Sebagai contoh, berikut adalah fail teks yang mengandungi senarai nombor besar yang panjangnya 2 digit. Pasti ada kandungan pendua di sini, betul?
pendua kucing.txt | mengurut
Sekarang, mari kita lakukan proses penapisan.
pendua kucing.txt | urutkan | uniq> unik.txt
Lihat outputnya.
kelawar unik.txt
Nampak lebih baik!
Paip ralat
Ini adalah kaedah paip yang menarik. Kaedah ini digunakan untuk mengarahkan STDERR ke STDOUT dan meneruskan piping. Ini dilambangkan dengan simbol "| &" (tanpa tanda petik). Sebagai contoh, mari buat ralat dan hantarkan output ke beberapa alat lain. Dalam contoh ini, saya baru sahaja menaip beberapa arahan rawak dan meneruskan kesalahan ke "grep".
adsfds | & grep n
Pemikiran terakhir
Walaupun "pipa" itu sendiri cukup sederhana, cara kerjanya menawarkan cara penggunaan kaedah yang sangat serba boleh dengan cara yang tidak terbatas. Sekiranya anda menyukai skrip Bash, maka ia lebih berguna. Kadang-kadang, anda boleh melakukan perkara-perkara gila secara terang-terangan! Ketahui lebih lanjut mengenai skrip Bash.