Pada sebuah rangkaian pipa :
P1 | P2 | P3 | ........ | Pn-1 | Pn
Maka P2 sampai dengan Pn-1 mutlak harus utilitas Linux yang berfungsi sebagai filter. P1 (awal) dan Pn (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya who
, ls
, ps
, lp
, lpr
, mail
dan lainnya.
Beberapa perintah Linux yang digunakan untuk proses penyaringan antara lain :
Perintah grep
Digunakan untuk menyaring masukannya dan menampilkan baris-baris yang hanya mengandung pola yang ditentukan. Pola ini disebut regular expression.
Perintah wc
Digunakan untuk menghitung jumlah baris, kata, dan karakter dari baris-baris masukan yang diberikan kepadanya. Untuk mengetahui berapa baris gunakan opsi -l
, untuk mengetahui berapa kata, gunakan opsi -w
dan untuk mengetahui berapa karakter, gunakan opsi -c
. Jika salah satu opsi tidak digunakan, maka tampilannya adalah jumlah baris, jumlah kata, dan jumlah karakter.
Perintah sort
Digunakan untuk mengurutkan masukannya berdasarkan urutan nomor ASCII dari karakter.
Perintah cut
Digunakan untuk mengambil kolom tertentu dari baris-baris masukannya, yang ditentukan pada opsi -c
.
Perintah uniq
Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi, biasanya digabungkan dalam pipeline dengan sort
.
E. TUGAS PENDAHULUAN
1. Apa yang dimaksud redirection?
Redirection adalah proses pengalihan input atau output dari suatu perintah. Secara default, input berasal dari keyboard (standard input) dan output ditampilkan di layar (standard output). Dengan redirection, kita bisa mengarahkan input dari file atau mengarahkan output ke file atau perangkat lain. Contoh penggunaannya adalah dengan menggunakan simbol >
untuk mengalihkan output ke file dan simbol <
untuk mengambil input dari file.
2. Apa yang dimaksud pipeline?
Pipeline adalah mekanisme di Linux yang memungkinkan output dari satu perintah digunakan sebagai input untuk perintah berikutnya, tanpa perlu menyimpan output tersebut ke dalam file sementara. Ini dilakukan menggunakan simbol |
. Dengan pipeline, kita bisa menggabungkan beberapa perintah untuk memproses data secara berurutan.
3. Apa yang dimaksud perintah di bawah ini:
- echo: Digunakan untuk menampilkan pesan atau string ke layar. Misalnya,
echo "Hello, World!"
akan mencetak teks "Hello, World!" di layar. - cat: Digunakan untuk menampilkan isi dari satu atau beberapa file ke layar atau menggabungkan file.
- more: Digunakan untuk menampilkan isi file secara halaman per halaman di layar.
- sort: Digunakan untuk mengurutkan baris-baris dalam file berdasarkan urutan abjad atau nomor ASCII.
- grep: Digunakan untuk mencari baris yang cocok dengan pola tertentu di dalam file.
- wc: Digunakan untuk menghitung jumlah baris, kata, dan karakter dalam file.
- cut: Digunakan untuk memotong kolom atau bagian tertentu dari setiap baris masukan.
- uniq: Digunakan untuk menghapus baris yang berulang dari input, sering digunakan setelah
sort
untuk mengidentifikasi baris duplikat.
F. PERCOBAAN
PERCOBAAN 1 : FILE DESCRIPTOR
1. Output ke layar (standar output), input dari system (kernel)
Pada gambar yang diberikan, terlihat keluaran dari perintah ps
pada terminal Linux. Perintah ini digunakan untuk menampilkan informasi tentang proses yang sedang berjalan di sistem. Dalam output tersebut, terdapat beberapa kolom penting.
Kolom PID menunjukkan identifikasi unik untuk setiap proses yang berjalan, di mana terlihat proses dengan ID 3803 (bash shell) dan 3874 (perintah ps
itu sendiri) sedang aktif. Kolom TTY menunjukkan terminal yang terkait dengan proses tersebut, yaitu pts/0
, yang menandakan bahwa kedua proses tersebut berjalan pada sesi terminal yang sama. Kolom TIME menunjukkan berapa lama proses tersebut telah menggunakan CPU, dan pada gambar terlihat bahwa kedua proses belum menggunakan waktu CPU secara signifikan (ditampilkan sebagai 00:00:00
). Terakhir, kolom CMD menunjukkan perintah yang menjalankan proses, yaitu bash
untuk shell dan ps
untuk perintah yang digunakan.
2. Output ke layar (standar output), input dari keyboard (standard input)
Pada gambar ini, terlihat perintah cat
yang dijalankan pada terminal Linux. Perintah cat
digunakan untuk menampilkan isi dari suatu file atau input teks langsung ke terminal.
Di sini, teks yang muncul adalah "haii saya ipin" yang ditampilkan dua kali. Hal ini kemungkinan terjadi karena teks tersebut diketik secara manual di terminal atau berasal dari sebuah file yang berisi teks yang sama pada dua baris.
3. Input dari keyboard dan output ke alamat internet
- Perintah ini mengindikasikan bahwa email akan dikirim ke alamat pasdonk021@gmail.com.
- Cc: Pengguna menambahkan alamat email wilvan60@gmail.com di bagian "Cc" (carbon copy), yang berarti salinan email akan dikirim ke alamat ini juga.
- Subject: Subjek email ditetapkan sebagai "ini ipin".
4. Input nama direktori, output tidak ada (membuat direktori baru), bila terjadi error maka tampilan error pada layar (standard error)
Pada perintah ini untuk membuat directory dengan nama mydir, lalu karna kita menulis ulang perintah untuk membuat directory dengan nama yang sama, sistem erro karan nama directory dengan nama mydir suda tersedia.
PERCOBAAN 2 : PEMBELOKAN (redirection)
1. Pembelokan standar output
Pada gambar tersebut, perintah Linux cat > myfile.txt
digunakan untuk menyimpan input teks ke dalam file bernama myfile.txt
. Setelah perintah dijalankan, pengguna mengetikkan teks "saya menyimpan text ini", yang kemudian akan disimpan ke dalam file tersebut. Perintah ini memungkinkan pengguna untuk membuat file baru atau menimpa file yang sudah ada dengan teks yang dimasukkan, dan proses input dihentikan dengan menekan Ctrl+D
.
2. Pembelokan standar input, yaitu input dibelokkan dari keyboard menjadi dari file
Pada gambar tersebut, dua perintah Linux digunakan untuk membaca dan menulis file. Perintah pertama, cat > myfile.txt
, mengarahkan teks "saya menyimpan text ini" ke dalam file myfile.txt
, yang membuat atau menimpa isi file dengan teks tersebut. Setelah itu, perintah kedua, cat myfile.txt
, digunakan untuk membaca isi file myfile.txt
dan menampilkan teks "saya menyimpan text ini" ke layar. Perintah pertama digunakan untuk menyimpan teks, sementara perintah kedua untuk menampilkan isi file yang telah dibuat.
3. Pembelokan standar error untuk disimpan di file
Percobaan ini melibatkan penggunaan perintah mkdir
untuk membuat direktori baru bernama mydir
. Pada percobaan pertama, ketika pengguna mencoba menjalankan perintah mkdir mydir
, sistem menampilkan pesan kesalahan "cannot create directory 'mydir': File exists", yang menunjukkan bahwa direktori dengan nama tersebut sudah ada.
Selanjutnya, pengguna menjalankan perintah mkdir mydir 2> myerror.txt
. Perintah ini menggunakan redirection untuk mengarahkan pesan kesalahan (standard error) ke dalam file myerror.txt
alih-alih menampilkannya di layar. Akhirnya, perintah cat myerror.txt
digunakan untuk membaca isi file myerror.txt
, yang menampilkan pesan kesalahan yang sama: "cannot create directory 'mydir': File exists". Dengan ini, kesalahan disimpan dalam file dan tidak langsung ditampilkan ke layar.
4. Notasi 2>&1 : pembelokan standar error (2>) adalah identik dengan file descriptor 1Berdasarkan percobaan yang dilakukan di terminal Linux, pengguna mencoba menjalankan perintah untuk melihat isi dari direktori atau file yang bernama filebaru
menggunakan perintah ls filebaru
. Namun, sistem memberikan pesan kesalahan yang menunjukkan bahwa file atau direktori tersebut tidak ditemukan, dengan pesan "No such file or directory".
Pada percobaan selanjutnya, pengguna mencoba mengalihkan pesan kesalahan tersebut ke sebuah file dengan menggunakan perintah ls filebaru 2> out.txt
, di mana 2>
digunakan untuk mengarahkan output error (stderr) ke file out.txt
. Setelah itu, saat memeriksa isi file out.txt
menggunakan perintah cat out.txt
, hasilnya menunjukkan pesan kesalahan yang sama, yakni "No such file or directory", menegaskan bahwa file atau direktori yang dicari memang tidak ada.
5. Notasi 1> & 2 (atau >&2) : pembelokan standar output adalah sama dengan file descriptor 2 yaitu standar error
Pada percobaan ini, pengguna menggunakan beberapa perintah di terminal Linux. Pertama, perintah echo "mencoba menulis file" > baru
digunakan untuk menuliskan teks "mencoba menulis file" ke dalam file bernama baru
. Jika file baru
belum ada, perintah ini akan membuatnya; jika sudah ada, isinya akan ditimpa dengan teks baru tersebut. Selanjutnya, pengguna menjalankan perintah cat filebaru > baru 1>&2
untuk mencoba membaca isi dari file bernama filebaru
dan mengalihkan output standarnya (stdout) ke output error (stderr). Namun, karena file filebaru
tidak ada, sistem menampilkan pesan kesalahan "No such file or directory", dan tidak ada perubahan pada file baru
. Terakhir, pengguna menampilkan isi dari file baru
dengan perintah cat baru
, yang seharusnya masih berisi teks dari perintah echo
sebelumnya, karena percobaan dengan cat filebaru
tidak berhasil menambahkan atau mengubah isinya.
Pada percobaan ini, saya menggunakan perintah echo
untuk menulis dan menambahkan teks ke dalam file bernama surat
. Pertama, saya menulis "kata pertama" ke dalam file surat
dengan perintah echo "kata pertama" > surat
, yang menimpa isi file jika sudah ada, atau membuat file baru jika belum ada. Selanjutnya, saya menambahkan "kata kedua" dan "kata ketiga" ke file yang sama menggunakan echo
dengan operator >>
, yang menambahkan teks tanpa menghapus isi sebelumnya. Setelah itu, saya menggunakan perintah cat surat
untuk menampilkan isi file, dan hasilnya menunjukkan "kata pertama", "kata kedua", dan "kata ketiga". Terakhir, saya menulis "kata keempat" ke dalam file surat
dengan perintah echo "kata keempat" > surat
, yang menggantikan seluruh isi file sehingga hanya "kata keempat" yang tersisa.
7. Notasi here document (<<++ .... ++) digunakan sebagai pembatas input dari keyboard. Perhatikan bahwa tanda pembatas dapat digantikan dengan tanda apa saja, namun harus sama dan tanda penutup harus diberikan pada awal baris.
Pada percobaan ini, saya mencoba menggunakan perintah cat
dengan simbol-simbol khusus seperti cat <<<+
dan cat <<<%%
. Simbol <<<
adalah bentuk here string di Bash, yang mengarahkan teks langsung sebagai input standar ke perintah. Saya memasukkan teks seperti "halo, apa kabar?" dan "baik baik, saja?" secara langsung sebagai input ke cat
, yang kemudian menampilkan kembali teks tersebut. Setiap blok teks dimasukkan dengan tanda +
atau %%
dan ditampilkan ulang oleh perintah cat
.
8. Notasi - (input keyboard) adalah representasi input dari keyboard. Artinya menampilkan file 1, kemudian menampilkan input dari keyboard dan menampilkan file 2. Perhatikan bahwa notas "-" berarti menyelipkan input dari keyboard
Perintah cat myfile.txt
menampilkan isi dari file bernama myfile.txt
. Isi file tersebut berupa teks dalam Bahasa Indonesia, yaitu “surat saya menyimpan text ini” dan “kata keempat”. Ini menunjukkan penggunaan perintah cat
untuk melihat isi dari file teks secara langsung di terminal.
9. Untuk membelokan standar output ke file , digunakan operator >
Perintah echo hello
mencetak kata "hello" langsung ke terminal. Kemudian, perintah echo hello > output
mengarahkan (redirect) kata "hello" ke dalam file baru bernama output
. Simbol >
berfungsi untuk membuat atau menimpa file jika sudah ada. Perintah cat output
selanjutnya menampilkan isi file output
, yang berisi kata "hello".
10. Untuk menambahkan output ke file digunakan operartor >>
Pada langkah ini, perintah echo bye >> output
menambahkan (append) kata "bye" ke file output
yang sudah ada. Simbol >>
memastikan bahwa konten baru ditambahkan tanpa menghapus isi file yang sudah ada. Namun, hasil dari cat output
menunjukkan bahwa file hanya berisi kata "bye", yang menunjukkan bahwa konten sebelumnya tertimpa alih-alih ditambahkan.
11. Untuk membelokan standar input, digunakan operator < Pada percobaan terakhir, perintah echo bye >> output
dijalankan lagi, dan kali ini teks "bye" berhasil ditambahkan ke dalam file output
, yang sudah berisi "hello". Setelah menjalankan cat output
, file tersebut kini berisi "hello" dan "bye", yang menunjukkan bahwa teks berhasil ditambahkan tanpa menghapus isi sebelumnya.
12. Pembelokan standar input dan standar output dapat dikombinasikan tetapi tidak boleh menggunakan nama file yang sama sebagai standar input dan output
Pada gambar tersebut, terdapat satu percobaan. Perintah pertama cat < output > out
digunakan untuk menyalin isi file output
ke file baru bernama out
. Setelah perintah ini dijalankan, cat out
digunakan untuk menampilkan isi file out
, yang menunjukkan bahwa file tersebut kini berisi "hello" dan "bye", salinan dari file output
. Selanjutnya, ketika perintah cat < output >> out
dijalankan, isi file output
ditambahkan (bukan ditimpa) ke file out
, yang menyebabkan isi file out
kini berisi dua set data "hello" dan "bye". Setelah itu, percobaan lain dilakukan dengan perintah cat < output > output
, di mana terjadi error karena file input dan output yang digunakan sama, sehingga terminal menampilkan pesan error "input file is output file". Kesalahan ini menunjukkan bahwa dalam Linux, file input dan output tidak boleh sama dalam operasi yang melibatkan redirection secara langsung, karena akan menimbulkan konflik saat data diproses.
PERCOBAAN 3 : PIPA (pipeline)
1. Operator pipa (|) digunakan untuk membuat eksekusi proses dengan melewati data langsung ke data lainnya
Pada gambar tersebut terdapat beberapa perintah terminal Linux yang digunakan untuk memeriksa pengguna yang sedang login, melakukan pengurutan teks, serta menampilkan isi direktori. Perintah pertama, who
, menampilkan daftar pengguna yang sedang login beserta terminal yang digunakan dan waktu login. Pengguna wilvan
terlihat login di beberapa terminal (seat0, tty2, tty1). Kemudian, perintah who | sort
mengurutkan hasil dari perintah who
secara alfabetis, sedangkan perintah who | sort -r
mengurutkannya secara terbalik. Perintah rm tmp
digunakan untuk menghapus file bernama tmp
, tetapi tidak ada output karena perintah ini tidak menampilkan pesan jika berhasil. Selanjutnya, perintah ls -l /etc | more
menampilkan daftar file dan direktori di folder /etc
dengan detail, yang kemudian diurutkan menggunakan sort
untuk melihatnya lebih terstruktur.
PERCOBAAN 4 : FILTER
1. pipa juga digunakan unutk mengkombinasikan utilitas sistem untuk membentuk fungsi yang lebih kompleks
Pertama, saya mencoba menggunakan perintah w -h | grep <user>
, namun muncul kesalahan sintaksis "error near unexpected token 'newline'", menunjukkan bahwa ada kesalahan dalam penulisan perintah. Lalu, saya mencoba menggunakan grep <user> /etc/passwd
untuk mencari informasi pengguna, tetapi hasilnya menunjukkan bahwa pengguna yang dicari tidak ditemukan di direktori tersebut, dengan pesan "No such file or directory".
Selanjutnya, saya menggunakan perintah ls | wc -l
untuk menghitung jumlah file di direktori saat ini, dan hasilnya menunjukkan ada 235 file. Saya kemudian menjalankan perintah ls /etc | wc -l
untuk menghitung jumlah file di direktori /etc
, yang juga menghasilkan angka yang sama, 235 file.
Langkah berikutnya, saya menampilkan isi dari dua file teks, kelas1.txt
dan kelas2.txt
, yang berisi nama-nama, dengan menggunakan perintah cat
. Setelah itu, saya menggabungkan kedua file tersebut menggunakan cat kelas1.txt kelas2.txt | sort
, yang berfungsi untuk mengurutkan nama-nama dari kedua file tersebut secara alfabetis.
Untuk menggabungkan kedua file secara permanen, saya menggunakan cat kelas1.txt kelas2.txt > kelas.txt
, yang menulis hasil penggabungan ke dalam file baru bernama kelas.txt
. Lalu, saya menerapkan perintah sort
lagi pada file tersebut untuk memastikan bahwa daftar nama tersusun rapi. Terakhir, saya menggunakan cat kelas.txt | sort | uniq
, yang mengurutkan sekaligus menghilangkan duplikasi nama, menghasilkan daftar nama unik.
G. LATIHAN
1. Lihat daftar secara lengkap pada direktori aktif, belokkan tampilan standard output ke file baru.
2. Lihat daftar secara lengkap pada direktori /etc/passwd
, belokkan tampilan standard output ke file baru tanpa menghapus file baru sebelumnya.
3. Urutkan file baru dengan cara membelokkan standard input.
4. Urutkan file baru dengan cara membelokkan standard input dan standard output ke file baru.urut.
0 Komentar