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
ataucmd1 < 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.