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:

bash
mkdir -p latihan; touch latihan/daftar.txt; ls latihan

Output yang Dihasilkan:

text
daftar.txt

Ketiga 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:

bash
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 data

Output yang Dihasilkan:

text
hasil.txt
bash: cd: data/tidak-ada: No such file or directory
mentah
olah

Mari kita bedah baris per barisnya:

  1. Baris 1 (mkdir -p ...): menyiapkan dua subdirektori sebagai panggung latihan.
  2. Baris 2 (cd data/olah && touch hasil.txt): cd berhasil, sehingga && melanjutkan ke touch dan hasil.txt tercipta.
  3. Baris 3 (cd): pulang ke home directory agar baris-baris berikutnya memakai titik awal yang sama.
  4. Baris 4 (ls data/olah): membuktikan hasil.txt sudah ada — konsekuensi rantai yang sukses.
  5. Baris 5 (cd data/tidak-ada 2>&1 && ...): cd gagal karena foldernya tidak ada, sehingga && melewatkan touch sepenuhnya.
  6. Baris 6 (ls data): isinya tetap dua subdirektori awal tanpa terlewati.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:

bash
printf 'siti\nbudi\nrata\n' > karyawan.txt
grep budi karyawan.txt
grep zaki karyawan.txt || echo "zaki tidak ditemukan"

Output yang Dihasilkan:

text
budi
zaki tidak ditemukan

Pencarian 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:

bash
true && echo "jalur sukses" || echo "jalur gagal"
false && echo "jalur sukses" || echo "jalur gagal"

Output yang Dihasilkan:

text
jalur sukses
jalur gagal

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