Perintah yang kita ketik di terminal bukan kalimat bebas, melainkan baris terstruktur yang dibaca shell dengan aturan tetap. Setelah tombol Enter ditekan, shell memecah baris tersebut lalu menjalankan program yang sesuai beserta pengaturan dan objek kerjanya. Pada Chapter ini kita akan membedah struktur tersebut: mana yang disebut command, option, dan argument, serta bagaimana bentuk pendek -s dan bentuk panjang --long dipakai. Pola yang sama berlaku untuk ribuan perintah Linux lain, jadi sekali paham, kita bisa membaca dokumentasi perintah apa pun.

Anatomi command, option, dan argument #

Sebagian besar baris perintah Linux mengikuti pola command [option] [argument]: shell memecah baris berdasarkan spasi lalu menjalankan command beserta option dan argumentnya. Perhatikan contoh klasik ls -la /etc — menampilkan isi direktori konfigurasi sistem /etc secara lengkap. Bagiannya dapat dibedah sebagai berikut:

BagianPeranPada ls -la /etc
commandnama program yang dijalankanls
optionpengubah perilaku command, diawali - atau ---la
argumentobjek yang diproses: path, teks, atau angka/etc

Option -la sebenarnya adalah dua option pendek yang digabung: -l (long listing, satu entri per baris lengkap dengan ukuran dan permission) dan -a (all, tampilkan juga entri tersembunyi). Tulisan ls -la /etc karena itu identik dengan ls -l -a /etc — shell memecah gabungan huruf setelah satu tanda minus menjadi option-option terpisah. Kolom waktu modifikasi pada tampilan ls -l berbeda-beda di setiap komputer, sehingga contoh ls -l tidak kita tampilkan sebagai output terverifikasi.

Option pendek, option gabungan, dan option panjang #

Option pendek ditulis dengan satu tanda minus dan satu huruf, misalnya -a. Beberapa option pendek boleh dirangkai menjadi satu kata seperti -la, dan urutan hurufnya bebas: -al sama saja dengan -la. Perintah GNU juga menyediakan bentuk panjang berupa kata utuh dengan dua tanda minus, misalnya --almost-all. Mari kita buktikan sendiri bahwa kedua bentuk tersebut ekuivalen:

bash
mkdir -p proyek
cd proyek
printf "catatan penting\n" > catatan.txt
printf "draf rahasia\n" > .tersembunyi
ls
ls -a

Output yang Dihasilkan:

text
catatan.txt
.
..
.tersembunyi
catatan.txt

Mari kita telaah baris-baris di atas:

  1. Baris 1-4 (mkdir sampai printf): membuat folder latihan berisi dua file; nama .tersembunyi diawali titik sehingga tergolong file tersembunyi.
  2. Baris 5 (ls): tanpa option, ls hanya menampilkan entri biasa — file .tersembunyi tidak tampak.
  3. Baris 6 (ls -a): dengan option -a, entri . (direktori sekarang), .. (direktori induk), dan .tersembunyi ikut tampil. Satu huruf option mengubah hasil perintah secara nyata.

Sekarang kita bandingkan option pendek dengan bentuk panjangnya pada fixture yang sama:

bash
mkdir -p proyek
printf "catatan penting\n" > proyek/catatan.txt
printf "draf rahasia\n" > proyek/.tersembunyi
ls -A proyek
ls --almost-all proyek
printf "satu\ndua\ntiga\n" > daftar.txt
head -n 2 daftar.txt
head --lines=2 daftar.txt

Output yang Dihasilkan:

text
.tersembunyi
catatan.txt
.tersembunyi
catatan.txt
satu
dua
satu
dua

Baris 4 dan 5 menghasilkan output yang persis sama: -A adalah bentuk pendek dari --almost-all, yaitu tampilkan semua entri kecuali . dan ... Baris 7 dan 8 memperlihatkan option yang menerima nilai: head -n 2 meminta dua baris pertama sebuah file, dan head --lines=2 adalah bentuk panjangnya — nilai dituliskan menempel dengan tanda sama dengan. Pada bentuk pendek, nilai berdiri sebagai kata terpisah (-n 2). Perintah head akan kita bahas tuntas pada Chapter Melihat Isi File.

Argument menentukan objek kerja #

Argument menyebutkan objek yang diproses perintah — paling sering path file atau direktori, relatif maupun absolut. Tanpa argument, banyak perintah bekerja pada direktori kerja saat ini; dengan argument, perintah bekerja pada objek yang kita tunjuk. Perintah du (disk usage) memperlihatkan peran argument dengan jelas:

bash
mkdir -p unduhan
head -c 10485760 /dev/zero > unduhan/iso-debian.img
printf "catatan unduhan\n" > unduhan/catatan.txt
du -sh unduhan
du -sh unduhan/iso-debian.img

Output yang Dihasilkan:

text
11M	unduhan
10M	unduhan/iso-debian.img

Mari kita telaah baris-baris di atas:

  1. Baris 1-3 (mkdir, head, printf): menyiapkan fixture — folder unduhan berisi file iso-debian.img sebesar tepat 10 MiB (10.485.760 byte nol dari head -c) dan file kecil catatan.txt.
  2. Baris 4 (du -sh unduhan): dengan argument unduhan, du menjumlahkan ruang disk seluruh isi folder; -s (summarize) mencetak satu ringkasan dan -h (human-readable) memakai satuan yang mudah dibaca.
  3. Baris 5 (du -sh unduhan/iso-debian.img): argument berupa satu file mengubah objek hitungan — hanya file itu yang dihitung.

Folder tercatat 11M padahal file terbesarnya 10M karena du menghitung dalam blok disk, bukan byte: entri direktori dan file kecil ikut terhitung, lalu hasil dibulatkan ke atas ke satuan berikutnya. Perilaku blok seperti ini akan kita dalami lagi pada Section Filesystem.

Builtin atau program eksternal #

Detail terakhir: tidak semua command adalah program terpisah. Sebagian adalah builtin — perintah yang tertanam di dalam bash sendiri, seperti cd dan echo. Sisanya adalah program eksternal berupa file di direktori seperti /usr/bin, seperti ls dan du. Perintah type mengungkap golongan sebuah command:

bash
type echo
type cd
type ls

Output yang Dihasilkan:

text
echo is a shell builtin
cd is a shell builtin
ls is /usr/bin/ls

Hasilnya menunjukkan echo dan cd sebagai builtin sementara ls berada di /usr/bin/ls. Builtin karena itu selalu tersedia dan nyaris instan; program eksternal harus dicari shell di daftar direktori PATH, yang akan kita bedah pada Chapter Environment Variables. Daftar builtin lengkap beserta seluruh fitur bash didokumentasikan pada halaman manual bash(1) , dan pola penulisannya tetap sama: command, option, argument.

Dengan anatomi yang kini jelas, kita siap bekerja lebih leluasa di terminal. Langkah berikutnya adalah menguasai perpindahan dan pemeriksaan direktori dengan pwd, cd, dan ls — materi Chapter Navigasi Direktori.