Pekerjaan nyata di terminal jarang selesai dalam satu perintah: kita membuat folder, mengisi file, lalu memeriksa hasilnya. Menunggu setiap perintah selesai untuk mengetik perintah berikutnya membuang waktu, dan salah urutan bisa mengacaukan hasilnya. bash menyediakan tiga operator penggabung — ;, &&, dan || — yang merangkai beberapa perintah dalam satu baris dengan aturan lanjut yang berbeda-beda. Pada Chapter ini kita akan memakai ketiganya dan memahami urutan bacanya.
Menjalankan Berurutan dengan Titik Koma #
Operator ; memerintahkan shell menjalankan perintah-perintah secara berurutan, apa pun hasilnya. Perintah kedua tetap berjalan meskipun perintah pertama gagal:
mkdir -p latihan; touch latihan/daftar.txt; ls latihanOutput yang Dihasilkan:
daftar.txtKetiga perintah berjalan satu demi satu: mkdir -p membuat direktori, touch membuat file di dalamnya, dan ls memperlihatkan hasil akhirnya. Efeknya sama dengan mengetik tiga baris terpisah, hanya lebih ringkas. Karena ; tidak peduli keberhasilan, operator ini cocok untuk urutan langkah yang saling tidak bergantung.
Lanjut Hanya Saat Sukses dengan && #
Operator && hanya melanjutkan ke perintah berikutnya bila perintah sebelumnya berhasil — keluar dengan exit code nol. Satu kegagalan menghentikan sisa rantainya, sehingga langkah yang butuh prasyarat tidak pernah berjalan di atas kondisi yang rusak. Blok berikut membandingkan kedua nasib itu sekaligus; pesan error cd sengaja dialihkan ke stdout dengan 2>&1 supaya ikut terekam:
mkdir -p data/mentah data/olah
cd data/olah && touch hasil.txt
cd
ls data/olah
cd data/tidak-ada 2>&1 && touch terlewati.txt
ls dataOutput yang Dihasilkan:
hasil.txt
bash: cd: data/tidak-ada: No such file or directory
mentah
olahMari kita bedah baris per barisnya:
- Baris 1 (
mkdir -p ...): menyiapkan dua subdirektori sebagai panggung latihan. - Baris 2 (
cd data/olah && touch hasil.txt):cdberhasil, sehingga&&melanjutkan ketouchdanhasil.txttercipta. - Baris 3 (
cd): pulang ke home directory agar baris-baris berikutnya memakai titik awal yang sama. - Baris 4 (
ls data/olah): membuktikanhasil.txtsudah ada — konsekuensi rantai yang sukses. - Baris 5 (
cd data/tidak-ada 2>&1 && ...):cdgagal karena foldernya tidak ada, sehingga&&melewatkantouchsepenuhnya. - Baris 6 (
ls data): isinya tetap dua subdirektori awal tanpaterlewati.txt— bukti langkah yang terlewati.
Pola cmd && cmd && cmd seperti ini adalah bentuk paling ringkas dari “hanya lanjut bila langkah sebelumnya aman”.
Cadangan Saat Gagal dengan || #
Operator || bekerja sebaliknya: perintah berikutnya hanya berjalan bila perintah sebelumnya gagal. Ini pas untuk memberi fallback atau pesan penjelasan:
printf 'siti\nbudi\nrata\n' > karyawan.txt
grep budi karyawan.txt
grep zaki karyawan.txt || echo "zaki tidak ditemukan"Output yang Dihasilkan:
budi
zaki tidak ditemukanPencarian budi berhasil sehingga || di baris kedua tidak pernah menyentuh pesan cadangannya; pencarian zaki gagal, lalu echo mengambil alih. Tanpa ||, baris grep zaki hanya berakhir diam dengan pesan error standar yang kurang ramah.
Urutan Baca Kiri ke Kanan #
Ketika ketiga operator dicampur, bash membaca baris dari kiri ke kanan dan mengevaluasi dua per dua — bukan && lebih dulu daripada ||. Perintah bantu true (selalu berhasil) dan false (selalu gagal) membuat aturan mainnya mudah diamati:
true && echo "jalur sukses" || echo "jalur gagal"
false && echo "jalur sukses" || echo "jalur gagal"Output yang Dihasilkan:
jalur sukses
jalur gagalPada baris pertama true berhasil sehingga echo "jalur sukses" berjalan, lalu || melihat perintah sebelumnya berhasil dan melewatkan cadangannya. Baris kedua berjalan cermin: false gagal, echo pertama dilewati, dan cadangan yang terpanggil. Detail lengkap aturan ini ada pada bagian Lists of Commands di halaman manual bash(1)
.
Ketiga operator ini sebenarnya membaca satu sinyal yang sama: exit code dari perintah sebelumnya. Namun ada satu teknik penyambung yang lebih kaya — mengalirkan output sebuah perintah menjadi input perintah lain — dan itulah materi Chapter Pipes dan Redirection.