GNU/Linux >> Belajar Linux >  >> Linux

Bekerja dengan pipa di baris perintah Linux

Maaf untuk memberitahu Anda, tapi baris perintah tidak mati dengan dinosaurus, juga tidak menghilang dengan dodo atau merpati pos. Baris perintah Linux hidup dan sehat, dan masih kuat. Ini adalah cara yang efisien untuk mengumpulkan dan memproses informasi dengan cepat, membuat skrip baru, dan mengonfigurasi sistem.

Salah satu operator shell yang paling kuat adalah pipa (| ). Pipa mengambil output dari satu perintah dan menggunakannya sebagai input untuk yang lain. Dan, Anda tidak terbatas pada satu perintah pipa—Anda dapat menumpuknya sebanyak yang Anda suka, atau hingga Anda kehabisan output atau deskriptor file.

Salah satu tujuan utama pemipaan adalah penyaringan. Anda menggunakan pemipaan untuk memfilter konten file besar—untuk menemukan string atau kata tertentu, misalnya. Inilah alasan mengapa penggunaan pipa yang paling populer melibatkan perintah grep dan sort . Tapi, Anda tidak terbatas pada kasus-kasus itu. Anda dapat menyalurkan output ke perintah apa pun yang menerima input aliran. Mari kita lihat contoh teoretis sebagai ilustrasi cara kerja proses ini:

$ cmd1 | cmd2

Keduanya cmd1 dan cmd2 adalah utilitas baris perintah yang menampilkan hasilnya ke layar (stdout ). Namun, ketika Anda menyalurkan output satu perintah ke yang lain, informasi dari cmd1 tidak menghasilkan output ke layar. Pipa mengarahkan output itu sebagai input ke cmd2 .

Catatan: Jangan bingung pipa (| ) pengalihan dengan pengalihan file (> ) dan (< ). (Contoh pengalihan file: cmd1 > file atau cmd1 < file .) Pengalihan file mengirimkan output ke file alih-alih layar, atau menarik input dari file.

Mari kita lihat beberapa contoh nyata tentang cara kerja perpipaan.

Memeriksa NIC

Katakanlah Anda perlu mengetahui apakah salah satu kartu antarmuka jaringan (NIC) Anda memiliki alamat IP yang dimulai dengan 192:

$ ifconfig | grep 192

inet 192.168.1.96  netmask 255.255.255.0  broadcast 192.168.1.255

Anda juga dapat mengetahui NIC aktif mana yang Anda miliki pada sistem dengan pipa sederhana ke grep :

$ ifconfig | grep UP

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

Anda juga dapat memilih "RUNNING" atau "RUN" untuk menampilkan informasi yang sama.

Memeriksa izin

Mungkin Anda ingin mengetahui berapa banyak direktori di bawah /etc dapat ditulisi oleh root:

$ sudo ls -lR | grep drwx

Hasilnya terlalu panjang untuk dicantumkan di sini, tetapi seperti yang Anda lihat dari daftar yang ditampilkan, ada banyak sekali. Anda masih perlu mencari tahu berapa banyak, dan penghitungan visual akan memakan waktu lama. Opsi yang mudah adalah menyalurkan hasil ls . Anda perintah ke wc (jumlah kata) perintah: 

$ sudo ls -lR | grep drwx | wc -l

285

-l switch menampilkan jumlah baris. Hitungan Anda mungkin berbeda. Daftar ini berasal dari instalasi baru "RHEL 8 server no GUI".

[Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang gratis.]

Menghitung file

Anda tidak harus menggunakan grep sepanjang waktu. Misalnya, Anda dapat membuat daftar jumlah file di /etc direktori dengan ini:

$ ls | wc -l

229

Sekali lagi, hasil Anda mungkin terlihat berbeda, tetapi Anda tahu ada yang salah jika perintah mengembalikan sejumlah kecil file.

Mengidentifikasi proses

Anda juga dapat melakukan tugas kompleks menggunakan pipa. Untuk membuat daftar ID proses (PID) untuk semua systemd -proses terkait:

$ ps -ef | grep systemd | awk '{ print $2 }'

1
471
500
608
631
7449
7494
17242

awk perintah $2 output mengisolasi kolom (PID) kedua dari ps memerintah. Perhatikan bahwa entri terakhir, PID 17242 , sebenarnya adalah PID untuk grep perintah yang menampilkan informasi ini, seperti yang dapat Anda lihat dari hasil daftar lengkap di sini:

khess    17242  7505  0 09:40 pts/0    00:00:00 grep --color=auto systemd

Untuk menghapus entri ini dari hasil Anda, gunakan operator pipa lagi:

$ ps -ef | grep systemd | awk '{ print $2 }' | grep -v grep

-v switch memberitahu grep perintah untuk membalikkan atau mengabaikan baris yang berisi string yang mengikutinya—dalam hal ini setiap baris yang mengandung kata "grep."

Mengurutkan hasil

Penggunaan populer lainnya dari operator pipa adalah untuk mengurutkan hasil Anda dengan menyalurkan ke sort memerintah. Katakan bahwa Anda ingin mengurutkan daftar nama di contacts.txt . Pertama, mari kita lihat isinya seperti apa di dalam file sebelum menyortir:

$ cat contacts.txt

Bob Jones
Leslie Smith
Dana David
Susan Gee
Leonard Schmidt
Linda Gray
Terry Jones
Colin Doe
Jenny Case

Sekarang, urutkan daftarnya:

$ cat contacts.txt | sort

Bob Jones
Colin Doe
Dana David
Jenny Case
Leonard Schmidt
Leslie Smith
Linda Gray
Susan Gee
Terry Jones

Anda dapat membalikkan urutan pengurutan dengan -r beralih:

$ cat contacts.txt | sort -r

Terry Jones
Susan Gee
Linda Gray
Leslie Smith
Leonard Schmidt
Jenny Case
Dana David
Colin Doe
Bob Jones

Apakah output untuk salah satu dari ini yang Anda harapkan? Secara default, sort perintah melakukan pengurutan kamus pada kata atau kolom pertama, itulah sebabnya Bob Jones dan Terry Jones tidak terdaftar satu demi satu.

Anda dapat mengurutkan berdasarkan kolom kedua dengan -k switch, menentukan kolom yang ingin Anda urutkan, yang dalam daftar kami adalah kolom dua:

$ cat contacts.txt | sort -k2

Jenny Case
Dana David
Colin Doe
Susan Gee
Linda Gray
Bob Jones
Terry Jones
Leonard Schmidt
Leslie Smith

Jika Anda memiliki daftar kontak yang panjang dan menurut Anda daftar ini berisi entri duplikat, Anda dapat menyalurkan daftar Anda ke sort lalu uniq untuk menghapus duplikat tersebut:

$ cat contacts.txt | sort | uniq

Perintah ini hanya menampilkan entri unik, tetapi tidak menyimpan hasilnya. Untuk mengurutkan file, memfilter entri unik, lalu menyimpan file baru, gunakan ini:

$ cat contacts.txt | sort -k2 | uniq > contact_list.txt

Ingatlah bahwa operator pipa dan operator pengalihan file melakukan hal yang berbeda.

Menutup

Sekarang setelah Anda merasakan kekuatan baris perintah, apakah Anda pikir Anda dapat menangani tanggung jawab itu? Utilitas baris perintah memiliki lebih banyak fleksibilitas daripada rekan grafisnya. Dan untuk beberapa tugas, tidak ada padanan grafis.

Cara terbaik untuk mempelajari perilaku baris perintah adalah dengan bereksperimen. Misalnya, sort perintah tidak melakukan apa yang Anda pikir seharusnya sampai Anda menjelajahi lebih jauh. Jangan lupa untuk menggunakan kekuatan manual Anda (man ) halaman untuk menemukan sakelar dan opsi rahasia "tersembunyi" yang mengubah frustrasi baris perintah menjadi kesuksesan baris perintah.


Linux
  1. Cara menggunakan perintah grep Linux

  2. Miliki sapi di baris perintah Linux

  3. Masukkan diri Anda ke dalam baris perintah Linux

  1. Salin dan tempel di baris perintah Linux dengan xclip

  2. Bekerja dengan aliran data di baris perintah Linux

  3. Gunakan perintah grep Linux

  1. Selesaikan Wordle menggunakan baris perintah Linux

  2. 8 tips untuk baris perintah Linux

  3. Pecahkan teka-teki di baris perintah Linux dengan nudoku