Setelah lingkungan Bash siap di Bab 1, langkah berikutnya adalah belajar bergerak dan bekerja di dalam filesystem lewat baris perintah. Bab ini membahas struktur direktori Linux, perintah dasar untuk berpindah lokasi dan mengelola file (pwd, cd, ls, cp, mv, rm, mkdir, touch), cara membaca isi file langsung dari terminal (cat, less, head, tail), sampai cara mencari bantuan saat lupa sintaks sebuah perintah (man, --help, tldr). Penguasaan perintah-perintah ini adalah modal wajib sebelum masuk ke Bab 3 tentang variabel, karena hampir semua script Bash pada akhirnya memanipulasi file dan direktori lewat perintah-perintah dasar ini.
2.1 Struktur Direktori Linux dan Filesystem Hierarchy
Berbeda dengan Windows yang mengenal banyak drive terpisah seperti C:\ dan D:\, sistem Linux hanya punya satu struktur pohon direktori tunggal yang dimulai dari root directory, dilambangkan dengan tanda garis miring (/). Semua file, direktori, bahkan perangkat keras seperti hard disk dan flash drive, pada akhirnya "menempel" di suatu titik dalam pohon direktori ini lewat proses yang disebut mounting.
2.1.1 Filesystem Hierarchy Standard (FHS)
Susunan direktori di Linux tidak sembarangan. Sebagian besar distribusi mengikuti Filesystem Hierarchy Standard (FHS), sebuah spesifikasi yang mengatur direktori apa saja yang harus ada di sistem Unix-like dan untuk apa masing-masing dipakai. Standar ini membuat kita bisa berpindah dari satu distro Linux ke distro lain, atau dari server ke server, tanpa harus belajar ulang dari nol ke mana file konfigurasi atau binary program biasanya disimpan.
Di lapangan, mengenal FHS dengan baik adalah salah satu pembeda Sysadmin berpengalaman: saat troubleshooting server yang tidak dikenal sekalipun, Sysadmin tahu harus mencari file log di /var/log, bukan menebak-nebak atau mencari lewat seluruh filesystem.
2.1.2 Direktori Penting yang Wajib Dikenal
Tabel berikut merangkum direktori tingkat atas yang paling sering dipakai sehari-hari, baik untuk kebutuhan User di desktop maupun Sysadmin di server.
| Direktori | Fungsi | Contoh Isi |
|---|---|---|
/ | Root, titik awal seluruh filesystem | Semua direktori lain bercabang dari sini |
/bin, /usr/bin | Binary/perintah dasar yang bisa dipakai semua user | ls, cp, bash |
/sbin, /usr/sbin | Binary untuk administrasi sistem, biasanya butuh sudo | useradd, iptables |
/etc | File konfigurasi sistem dan aplikasi | /etc/passwd, /etc/ssh/sshd_config |
/home | Home directory tiap user biasa | /home/budi |
/root | Home directory khusus user root | - |
/var | Data yang sering berubah (variable data) | /var/log, /var/www |
/tmp | File sementara, biasanya dibersihkan otomatis | File cache aplikasi |
/opt | Software tambahan pihak ketiga di luar package manager distro | Aplikasi vendor tertentu |
/dev | File perangkat (device file) yang mewakili hardware | /dev/sda, /dev/null |
/proc | Filesystem virtual, informasi kernel dan proses berjalan | /proc/cpuinfo |
/mnt, /media | Titik mount untuk storage tambahan | Mount point flash drive, partisi lain |
Satu catatan penting untuk distro modern: banyak distro Linux terkini (termasuk Fedora, Arch Linux, dan Debian/Ubuntu versi baru) sudah menerapkan usr-merge, yaitu menjadikan /bin, /sbin, dan /lib sebagai symlink ke /usr/bin, /usr/sbin, dan /usr/lib. Perubahan ini transparan untuk pemakaian sehari-hari, tapi ada baiknya kita mengetahuinya supaya tidak bingung saat menemukan kedua path tersebut ternyata mengarah ke lokasi fisik yang sama.
2.1.3 Absolute Path vs Relative Path
Absolute path adalah alamat lengkap sebuah file atau direktori dihitung dari root (/), contohnya /home/budi/dokumen/laporan.txt. Path jenis ini selalu menunjuk ke lokasi yang sama, tidak peduli dari direktori mana kita menjalankan perintah.
Relative path adalah alamat yang dihitung relatif terhadap direktori aktif saat ini (current working directory), contohnya dokumen/laporan.txt tanpa garis miring di depan. Dua simbol khusus sering dipakai dalam relative path: titik tunggal (.) merujuk pada direktori aktif itu sendiri, dan titik ganda (..) merujuk pada satu tingkat direktori di atasnya (parent directory).
Di lapangan, script Bash yang ditulis untuk dijalankan lewat cron sebaiknya selalu memakai absolute path, karena direktori aktif saat script dijalankan oleh cron sering kali berbeda dari yang diasumsikan penulis script, salah satu pitfall paling umum yang bikin script "kerja di laptop tapi gagal di server" akan dibahas lebih dalam di Bab 18.
2.1.4 Menjelajahi Struktur dengan ls
Cara paling cepat memahami FHS adalah langsung menjelajahinya. Jalankan perintah berikut untuk melihat isi root directory.
ls /Keluarannya menampilkan daftar direktori tingkat atas seperti bin, etc, home, var, dan seterusnya, persis seperti yang dirangkum di tabel subbab 2.1.2. Sub-bab 2.2 akan membahas perintah ls beserta opsi-opsinya secara lebih detail.
2.2 Perintah Dasar: pwd, cd, ls, cp, mv, rm, mkdir, touch
Delapan perintah ini adalah alat paling sering dipakai untuk berinteraksi dengan filesystem lewat terminal. Semuanya adalah bagian dari GNU coreutils (kecuali cd yang merupakan shell builtin, bukan program eksternal terpisah), sehingga hampir pasti sudah tersedia di sistem Linux mana pun tanpa perlu instalasi tambahan.
2.2.1 pwd dan cd: Mengetahui dan Berpindah Lokasi
pwd (print working directory) menampilkan absolute path dari direktori aktif saat ini.
pwdcd (change directory) dipakai untuk berpindah direktori. Perintah ini menerima absolute path maupun relative path sebagai argumen.
cd /var/log
cd dokumen/proyek
cd ..
cd ~Simbol tilde (~) adalah singkatan untuk home directory user yang sedang login, sehingga cd ~ setara dengan cd /home/budi misalnya. Menjalankan cd tanpa argumen sama sekali juga akan membawa kita kembali ke home directory. Satu trik yang cukup berguna, cd - membawa kita kembali ke direktori sebelumnya, praktis dipakai saat berpindah-pindah antara dua lokasi kerja.
cd -2.2.2 ls: Melihat Isi Direktori
ls (list) menampilkan isi sebuah direktori. Tiga opsi paling sering dipakai adalah -l untuk format panjang (menampilkan permission, pemilik, ukuran, dan tanggal modifikasi), -a untuk menampilkan file tersembunyi (nama yang diawali titik), dan -h untuk menampilkan ukuran file dalam format yang mudah dibaca manusia (KB, MB, GB).
ls -lahKetiga flag di atas bisa digabung dalam satu penulisan seperti contoh, kebiasaan umum di antara Sysadmin karena kombinasi ini menampilkan informasi paling lengkap dalam satu perintah.
2.2.3 mkdir dan touch: Membuat Direktori dan File
mkdir (make directory) membuat direktori baru.
mkdir proyek-baruUntuk membuat struktur direktori bertingkat sekaligus, misalnya proyek/src/utils yang induknya belum ada satu pun, pakai flag -p (parents). Tanpa flag ini, mkdir akan gagal dengan pesan error jika direktori induk belum ada.
mkdir -p proyek/src/utilstouch membuat file kosong baru jika file dengan nama tersebut belum ada, atau memperbarui timestamp modifikasi file yang sudah ada tanpa mengubah isinya.
touch catatan.txt2.2.4 cp dan mv: Menyalin dan Memindahkan
cp (copy) menyalin file atau direktori. Sintaks dasarnya adalah cp [sumber] [tujuan].
cp laporan.txt laporan-backup.txtMenyalin direktori beserta seluruh isinya butuh flag -r (recursive), karena secara default cp menolak menyalin direktori.
cp -r proyek/ proyek-backup/mv (move) memindahkan file atau direktori, dan juga dipakai untuk mengganti nama (rename) karena secara teknis rename adalah memindahkan file ke nama baru di lokasi yang sama.
mv catatan.txt catatan-lama.txt
mv laporan.txt arsip/Baik cp maupun mv mendukung flag -i (interactive) yang akan meminta konfirmasi sebelum menimpa file tujuan yang sudah ada, kebiasaan baik untuk mencegah file tertimpa tanpa sengaja terutama saat baru belajar.
cp -i laporan.txt arsip/laporan.txt2.2.5 rm: Menghapus File dan Direktori
rm (remove) menghapus file. Direktori butuh flag -r agar dihapus beserta seluruh isinya, sama seperti pola pada cp.
rm catatan-lama.txt
rm -r proyek-backup/Perintah ini butuh perhatian ekstra karena sifatnya destruktif. Berbeda dari menghapus file lewat file manager berbasis GUI yang biasanya masih masuk ke Trash atau Recycle Bin dan bisa dipulihkan, rm langsung menghapus file dari filesystem tanpa mekanisme pemulihan bawaan. Kombinasi flag -rf (recursive dan force, yang menekan semua prompt konfirmasi) sangat sering dipakai dalam script otomatisasi, tapi juga jadi salah satu penyebab insiden kehilangan data paling umum jika path yang dituju salah ketik, misalnya spasi yang tidak sengaja tersisip antara path dan opsinya.
Di lapangan, kebiasaan aman yang layak dibawa sejak awal adalah menjalankan ls dulu terhadap path yang sama sebelum menjalankan rm, terutama saat memakai wildcard seperti tanda bintang (*), untuk memastikan file yang akan terhapus memang benar-benar yang dimaksud.
ls *.tmp
rm *.tmp2.2.6 Verifikasi dan Troubleshooting Umum
Kebiasaan baik setelah menjalankan perintah yang mengubah filesystem adalah memverifikasi hasilnya lewat ls -l, bukan berasumsi perintah pasti berhasil tanpa dicek.
mkdir -p proyek/src/utils
ls -l proyek/srcBeberapa pesan error paling umum saat baru belajar perintah-perintah ini juga penting dikenali. Error mkdir: cannot create directory 'proyek/src/utils': No such file or directory muncul saat direktori induk belum ada dan kita lupa menambahkan flag -p, seperti dibahas di subbab 2.2.3.
Error rm: cannot remove 'proyek': Is a directory muncul saat mencoba menghapus direktori tanpa flag -r. Pesan serupa juga muncul di cp dengan bunyi cp: -r not specified; omitting directory 'proyek', tandanya target yang disalin atau dihapus ternyata direktori, bukan file biasa.
rm -r proyek
cp -r proyek proyek-backupError bash: cd: proyek: No such file or directory biasanya berarti nama direktori salah ketik, atau direktori aktif saat ini bukan lokasi yang kita kira. Jalankan pwd dan ls lebih dulu untuk memastikan posisi dan isi direktori sebelum berpindah.
pwd
lsJika rm, cp, atau mv menampilkan Permission denied, penyebabnya biasanya file tersebut dimiliki user lain atau butuh akses root. Topik permission dan kepemilikan file (chmod, chown) dibahas lebih rinci di Bab 17.
2.3 Melihat dan Membaca File: cat, less, head, tail
Setelah bisa berpindah dan mengelola file, langkah berikutnya adalah membaca isinya langsung dari terminal tanpa perlu membuka text editor. Empat perintah ini masing-masing punya kegunaan berbeda tergantung ukuran file dan kebutuhan.
2.3.1 cat: Menampilkan Isi File Singkat
cat (concatenate) menampilkan seluruh isi file langsung ke layar sekaligus. Cocok dipakai untuk file pendek seperti file konfigurasi kecil.
cat /etc/hostnameNama cat berasal dari fungsi aslinya untuk menggabungkan (concatenate) isi beberapa file sekaligus, bukan sekadar menampilkan satu file.
cat file1.txt file2.txtUntuk file yang isinya panjang, memakai cat akan membuat teks langsung membanjiri layar tanpa jeda, sehingga kurang praktis. Kasus seperti ini lebih cocok memakai less.
2.3.2 less: Membaca File Panjang secara Interaktif
less membuka file dalam mode pager, memungkinkan kita menggulir isi file secara interaktif tanpa memuat semuanya sekaligus ke layar.
less /var/log/syslogBeberapa navigasi dasar di dalam less yang wajib dihafal: tombol spasi untuk maju satu halaman, huruf b untuk mundur satu halaman, garis miring (/) diikuti kata kunci untuk mencari teks tertentu, huruf n untuk lompat ke hasil pencarian berikutnya, dan huruf q untuk keluar. Sysadmin banyak memakai less untuk membaca file log berukuran ratusan megabyte tanpa membebani memori, karena less hanya memuat bagian file yang sedang ditampilkan, bukan seluruh isinya sekaligus seperti cat.
2.3.3 head dan tail: Melihat Bagian Awal atau Akhir File
head menampilkan sejumlah baris pertama dari sebuah file, secara default 10 baris.
head /var/log/syslogtail menampilkan sejumlah baris terakhir, juga secara default 10 baris. Kedua perintah menerima flag -n diikuti angka untuk menentukan jumlah baris yang diinginkan.
tail -n 20 /var/log/syslog2.3.4 Studi Kasus: Memantau Log secara Real-Time dengan tail -f
Salah satu kegunaan paling praktis dari tail di dunia sysadmin adalah flag -f (follow), yang membuat tail tidak langsung keluar setelah menampilkan baris terakhir, melainkan terus berjalan dan menampilkan baris baru secara real-time begitu ditambahkan ke file.
tail -f /var/log/syslogPerintah ini sangat berguna saat Sysadmin sedang men-debug masalah yang terjadi langsung (misalnya menonton log server web sambil mencoba mengakses halaman yang error), karena tidak perlu membuka ulang file berkali-kali untuk melihat baris terbaru. Tekan Ctrl+C untuk menghentikan proses follow ini. Topik pemantauan log secara lebih mendalam, termasuk journalctl, akan dibahas lebih jauh di Bab 19.
2.3.5 Troubleshooting: cat pada File Biner
Menjalankan cat pada file biner, seperti file gambar atau program hasil kompilasi, bisa membuat tampilan terminal jadi berantakan. Penyebabnya, cat menampilkan byte mentah apa adanya ke layar, termasuk karakter kontrol yang bisa mengubah warna atau pengaturan tampilan terminal, dan kadang terminal terlihat seperti macet atau menampilkan karakter aneh setelahnya.
Jika ini terjadi, jalankan perintah reset untuk mengembalikan tampilan terminal ke kondisi normal.
resetUntuk mencegah masalah ini sejak awal, biasakan memeriksa jenis file lebih dulu dengan perintah file sebelum membukanya dengan cat, terutama untuk file yang belum dikenal asal-usulnya.
file dokumen-tidak-dikenalJika hasilnya menunjukkan file biner, gunakan utilitas seperti xxd atau hexdump -C untuk melihat isinya dalam format heksadesimal yang aman, bukan cat.
hexdump -C dokumen-tidak-dikenal | head2.4 Mendapatkan Bantuan: man, --help, tldr
Tidak ada yang bisa menghafal seluruh opsi dari ratusan perintah Linux. Kebiasaan mencari bantuan langsung dari terminal, alih-alih berpindah ke browser setiap kali lupa sintaks, adalah keterampilan yang menghemat banyak waktu dalam jangka panjang.
2.4.1 man: Manual Resmi Perintah
man (manual) menampilkan halaman manual resmi sebuah perintah, lengkap dengan deskripsi, daftar opsi, dan sering kali juga contoh pemakaian.
man lsNavigasi di dalam man memakai mekanisme pager yang sama seperti less karena secara internal man memang memakai less sebagai penampilnya, sehingga tombol spasi, / untuk mencari, dan q untuk keluar berlaku sama persis. Man page terbagi dalam beberapa nomor bagian (section), misalnya section 1 untuk perintah user biasa dan section 8 untuk perintah administrasi sistem. Kadang satu nama bisa muncul di lebih dari satu section, sehingga section tertentu bisa ditentukan secara eksplisit lewat angka sebelum nama perintah.
man 8 useraddJika lupa nama perintah yang tepat tapi ingat kata kuncinya, man -k (setara dengan perintah apropos) bisa mencari di seluruh database man page berdasarkan kata kunci.
man -k "list directory"2.4.2 --help: Bantuan Cepat dari Command Itu Sendiri
Sebagian besar perintah GNU coreutils mendukung flag --help, yang menampilkan ringkasan singkat opsi-opsi yang tersedia langsung di terminal, tanpa masuk ke mode pager seperti man.
ls --helpCara ini lebih cepat dibanding man untuk sekadar mengingat nama flag yang lupa, tapi penjelasannya biasanya jauh lebih ringkas dan tidak selengkap man page. Untuk builtin Bash seperti cd yang bukan program eksternal terpisah, gunakan help alih-alih --help, karena help adalah builtin Bash sendiri yang dirancang untuk menampilkan dokumentasi builtin lainnya.
help cd2.4.3 tldr: Alternatif Ringkas dan Praktis
tldr adalah tool komunitas yang menampilkan contoh pemakaian paling umum dari sebuah perintah dalam format ringkas, jauh lebih pendek dibanding man page yang formal dan kadang bertele-tele. Berbeda dari man dan help, tldr bukan bawaan sistem dan perlu dipasang secara terpisah, misalnya lewat package manager Node.js.
npm install -g tldrBeberapa distro juga menyediakan paket tldr lewat package manager masing-masing, misalnya sudo apt install tldr di Ubuntu/Debian. Setelah terpasang, pemakaiannya cukup memanggil tldr diikuti nama perintah.
tldr tarKeluarannya berupa daftar contoh pemakaian paling umum lengkap dengan penjelasan singkat tiap opsi, jauh lebih cepat dipahami dibanding harus membaca seluruh man page hanya untuk mengingat satu opsi spesifik.
2.4.4 Troubleshooting: man atau tldr Tidak Ditemukan
Di lapangan, terutama saat bekerja di dalam container atau hasil instalasi server minimal, perintah man sering kali belum terpasang secara default. Pesan error yang muncul biasanya bash: man: command not found, atau jika program man ada tapi database halaman manualnya belum lengkap, No manual entry for ls. Solusinya berbeda tergantung distro yang dipakai.
# Ubuntu/Debian
sudo apt install man-db
# Fedora
sudo dnf install man-db
# Arch Linux
sudo pacman -S man-db man-pagesUntuk tldr, pesan bash: tldr: command not found berarti tool ini memang belum terpasang sama sekali, karena seperti dibahas di subbab 2.4.3, tldr bukan bawaan sistem dan harus dipasang manual lebih dulu lewat npm atau package manager distro.
2.4.5 Kapan Pakai yang Mana
Ketiga sumber bantuan ini saling melengkapi, bukan saling menggantikan. Pakai --help saat hanya butuh pengingat cepat nama flag yang sudah pernah dipakai sebelumnya. Pakai tldr saat baru pertama kali memakai sebuah perintah dan butuh contoh konkret tanpa membaca dokumentasi panjang. Pakai man saat butuh detail lengkap dan akurat, misalnya saat menulis script yang perilakunya harus benar-benar sesuai spesifikasi resmi, atau saat tldr dan --help tidak cukup menjawab pertanyaan yang lebih spesifik. Kebiasaan mengecek dokumentasi resmi lewat man alih-alih menebak-nebak perilaku sebuah opsi juga jadi salah satu praktik penting untuk menjaga akurasi script yang kita tulis sepanjang series ini.

