Menguasai perintah navigasi dan manajemen file Linux: pwd, ls, cd, mkdir, touch, cp, mv, rm, dan rmdir, ditambah wildcard untuk pola file, lengkap dengan latihan membangun struktur project nyata.

Setelah di episode 2 sebelumnya kita membedah arsitektur sistem Linux dan Filesystem Hierarchy Standard — memahami bahwa /etc untuk konfigurasi, /var untuk data berubah, dan /home untuk file pribadi — pada episode kali ini kita akan memakai peta tersebut secara praktis: menavigasi filesystem dan mengelola file/folder. Ini adalah keterampilan yang akan kalian pakai setiap hari, di setiap episode series ini, dan di setiap pekerjaan administrasi Linux yang sesungguhnya.
Bayangkan filesystem Linux adalah rumah besar dengan banyak kamar. Episode 2 memberi kalian denah rumah (FHS); episode 3 ini mengajarkan cara berjalan di dalamnya — membuka pintu kamar, memindahkan furnitur, menyalin, dan menata ulang. Tanpa kemampuan ini, kalian akan terus tersesat, dan semua tool DevOps (Docker, systemd, SSH) yang memanipulasi file akan terasa seperti misteri.
Di episode ini kita akan membahas perintah navigasi (pwd, ls, cd), manajemen direktori (mkdir, rmdir), pembuatan file (touch), penyalinan (cp), pemindahan (mv), penghapusan (rm), serta wildcard yang membuat kalian bisa memanipulasi banyak file sekaligus — ditutup dengan latihan membangun struktur project nyata dan daftar kesalahan umum.
pwd dan Prompt ShellSebelum berjalan, kalian harus tahu sedang berada di mana. Perintah pwd (Print Working Directory) menampilkan direktori tempat kalian berada saat ini:
pwd
/home/armanPerhatikan juga prompt shell — teks sebelum kursor di terminal. Prompt biasanya menampilkan user@host:path$. Bagian path menunjukkan direktori aktif; tanda ~ berarti /home/<user>. Jadi prompt arman@learn-linux:~$ berarti kalian sedang berada di /home/arman. Membiasakan membaca prompt akan mencegah kalian "tersesat" di filesystem.
ls: Membaca Isi DirektoriPerintah ls (list) menampilkan isi direktori. Ia adalah perintah paling sering digunakan di Linux, dan opsinya sangat menentukan kualitas output:
ls # daftar file biasa
ls -l # format panjang: permission, owner, size, tanggal, nama
ls -a # tampilkan semua file termasuk hidden (.config)
ls -h # ukuran file dalam format manusiawi (K, M, G)
ls -la # kombinasi: semua file, format panjang, ukuran manusiawiMari kita bedah output ls -l baris per baris:
-rw-r--r-- 1 arman arman 1234 Jul 10 09:30 report.txt| Kolom | Arti |
|---|---|
-rw-r--r-- | Tipe file (-=file, d=direktori) + permission user/group/others |
1 | Jumlah hard link |
arman | Pemilik file (owner) |
arman | Grup pemilik |
1234 | Ukuran file (byte) |
Jul 10 09:30 | Tanggal modifikasi terakhir |
report.txt | Nama file |
Opsi -t mengurutkan berdasarkan waktu (terbaru dulu) dan -S berdasarkan ukuran (terbesar dulu) — sangat berguna untuk mencari file yang baru diubah atau membebani disk:
ls -lt
ls -lSTip
Kebiasaan profesional: gunakan ls -la secara default. Dari situ kalian langsung melihat permission, pemilik, ukuran, dan hidden file. Jangan hafalkan semua opsi ls — gunakan man ls atau ls --help kapan pun kalian butuh; opsi -h, -a, -l, -t, -S sudah menutupi 90% kebutuhan harian.
cd: Berpindah Direktoricd (change directory) memindahkan kalian antar direktori. Empat target yang paling sering dipakai:
| Sintaks | Tujuan |
|---|---|
cd /etc | Pindah ke path absolut (dimulai dari /) |
cd docs | Pindah ke subdirektori relatif (relatif ke posisi sekarang) |
cd .. | Naik satu level ke direktori induk |
cd ~ | Pindah ke direktori home user |
cd - | Kembali ke direktori sebelumnya (jauh-jauh sangat berguna) |
cd /etc
pwd # /etc
cd ..
pwd # /
cd /home/arman
cd -
pwd # / (kembali ke direktori sebelumnya)Perhatikan dua konsep penting: path absolut (selalu dimulai /) vs path relatif (relatif ke posisi saat ini). Sebagai aturan praktis, dalam skrip gunakan path absolut agar tidak bergantung pada lokasi; secara interaktif, path relatif lebih cepat.
Tanda titik juga penting: . berarti "direktori saat ini" dan .. berarti "direktori induk". Keduanya adalah entri tersembunyi yang ada di setiap direktori.
mkdir & rmdirUntuk membuat direktori baru gunakan mkdir (make directory). Opsi -p membuat direktori bertingkat sekaligus dan tidak error jika sudah ada:
mkdir -p project/src/lib
mkdir -p project/docsTanpa -p, mkdir project/src/lib akan gagal jika project belum ada. Dengan -p, seluruh rantai direktori dibuat otomatis — salah satu perintah yang paling sering menyelamatkan kalian dari error "No such file or directory".
Untuk menghapus direktori kosong gunakan rmdir. Perlu diingat: rmdir hanya menghapus direktori kosong; jika berisi file, ia menolak. Untuk direktori yang berisi isi, kita akan pakai rm -r (dibahas sebentar lagi).
touchtouch memiliki dua fungsi: membuat file kosong baru, dan memperbarui timestamp file yang sudah ada:
touch README.md
touch report.txt
ls -laFungsi utama touch dalam workflow nyata: membuat placeholder file (misalnya menguji path yang bisa ditulis), atau memaksa proses yang dipicu oleh perubahan file (seperti systemd path units atau tooling seperti make) untuk melihat file sebagai "baru diubah".
cpcp (copy) menyalin file atau direktori. Aturan emas yang paling sering dilupakan pemula: menyalin folder WAJIB memakai -r (recursive).
cp report.txt backup/ # salin file ke direktori lain
cp report.txt backup/backup.txt # salin dengan nama baru
cp -r project/ project-backup/ # salin folder lengkap isinya (-r!)
cp -i report.txt backup/ # -i: konfirmasi sebelum menimpacp -r menyalin seluruh isi direktori secara rekursif. Tanpa -r, menyalin folder akan gagal dengan error omitting directory.cp -i (interactive) meminta konfirmasi sebelum menimpa file yang sudah ada — pelindung ampuh dari kehilangan data karena menimpa tidak sengaja.Warning
cp menimpa file tujuan secara diam-diam tanpa konfirmasi. Bayangkan kalian menjalankan cp config.yaml config.yaml.bak tapi ternyata sudah ada config.yaml.bak yang penting — isinya langsung hilang. Biasakan memakai -i untuk perintah yang menulis ke file yang sudah ada, dan selalu pikirkan tujuan sebelum mengeksekusi.
mvmv (move) melakukan dua hal: memindahkan file/folder ke lokasi lain, dan mengganti nama. Ia bekerja tanpa menyalin data — hanya memperbarui metadata posisi, sehingga sangat cepat bahkan untuk file besar:
mv report.txt documents/ # pindahkan ke folder lain
mv report.txt documents/report.txt # gabungan pindah + rename
mv config.yaml config.old # rename dalam direktori sama
mv project/ /home/arman/backup/ # pindahkan folder (tidak butuh -r)Perhatikan: tidak seperti cp, mv untuk folder tidak membutuhkan -r — memindahkan folder adalah operasi yang aman karena tidak menyalin isi. Ini perbedaan kecil yang sering membingungkan.
rm dan rm -rfrm (remove) menghapus file. Untuk direktori berisi, butuh -r (recursive); untuk menghapus tanpa bertanya, butuh -f (force). Kombinasi keduanya — rm -rf — adalah salah satu perintah paling berbahaya di Linux.
rm report.txt # hapus satu file
rm -i report.txt # konfirmasi sebelum hapus
rm -r project/ # hapus folder beserta isinya
rm -f report.txt # force: tanpa konfirmasi, abaikan error
rm -rf project/ # ⚠️ hapus folder + isi tanpa konfirmasiKarena rm -rf menghapus tanpa konfirmasi dan tanpa keranjang sampah, satu typo path saja bisa menghabiskan data berharga. Perhatikan dua kasus klasik yang sering menjadi bencana:
rm -rf ~ /etc # ⚠️ baris 1: spasi berlebih — menghapus home & /etc!
rm -rf /var/l/og # ⚠️ baris 2: typo path logCaution
Tidak ada undo untuk rm di Linux. Tidak seperti Windows yang punya Recycle Bin, file yang dihapus dengan rm tidak bisa dipulihkan (kecuali dengan forensic recovery yang mahal dan tidak pasti). Aturan pengaman: (1) selalu tulis path lengkap dengan hati-hati, (2) cek dengan ls dulu sebelum menghapus, (3) gunakan -i saat ragu, dan (4) di direktori kritis seperti /etc, hindari rm untuk file yang belum di-backup. Saat kalian ragu: stop, cek, baru eksekusi.
*, ?, dan []Sekarang bagian yang membuat Linux terasa powerful: wildcards (globbing). Wildcards adalah pola untuk mencocokkan banyak nama file sekaligus — shell yang memperluasnya sebelum perintah dijalankan.
| Wildcard | Arti | Contoh | Mencocokkan |
|---|---|---|---|
* | Nol atau lebih karakter apa pun | *.log | error.log, access.log, a.log |
? | Tepat satu karakter | report?.txt | report1.txt, reportA.txt |
[] | Salah satu karakter dalam daftar | file[12].txt | file1.txt, file2.txt |
ls *.log # semua file log
rm -i report?.txt # hapus report + 1 karakter, dengan konfirmasi
ls report[12].txt # report1.txt dan report2.txt saja
cp *.conf /etc-backup/ # salin semua file konfigurasi sekaligusMengapa wildcard begitu penting? Karena administrasi Linux hampir selalu berurusan dengan banyak file sekaligus — membersihkan log lama, memindahkan batch file, atau menyalin semua konfigurasi. Bayangkan harus mengetik rm seratus kali untuk seratus file; dengan rm *.tmp cukup satu baris.
Note
Wildcards diperluas oleh shell, bukan oleh program. Ketika kalian mengetik ls *.log, shell yang mencocokkan pola menjadi daftar file, lalu meneruskan daftar itu ke ls. Ini menjelaskan kenapa pola yang tidak cocok apa pun (misal ls *.xyz ketika tidak ada file .xyz) akan dikirim apa adanya sebagai nama file literal — sehingga ls melaporkan No such file or directory: *.xyz. Kebiasaan mengetik di terminal akan membuat hal ini terasa natural.
Sekarang mari rangkai semua perintah dalam satu latihan yang mencerminkan pekerjaan sehari-hari. Kita akan membangun struktur project untuk sebuah aplikasi web dengan bagian frontend dan backend:
cd ~
mkdir -p myapp/src/components
mkdir -p myapp/src/utils
mkdir -p myapp/tests/fixtures
mkdir -p myapp/docs
touch myapp/README.md
touch myapp/src/components/Button.tsx
touch myapp/src/utils/format.ts
cp myapp/README.md myapp/docs/README.md
ls -R myappmyapp:
README.md docs src tests
myapp/docs:
README.md
myapp/src:
components utils
myapp/src/components:
Button.tsx
myapp/src/utils:
format.ts
myapp/tests:
fixturesPerhatikan alur yang efisien: buat semua direktori sekaligus dengan mkdir -p (satu baris, bukan enam), lalu buat file dengan touch, salin file dengan cp, dan verifikasi dengan ls -R (recursive — menampilkan seluruh pohon). Latihan ini adalah pola dasar yang akan kalian ulang ratusan kali di dunia nyata.
| Kesalahan | Gejala | Solusi |
|---|---|---|
rm -rf di path salah | Data penting hilang permanen | Tulis path hati-hati, ls dulu, gunakan -i |
cp folder tanpa -r | cp: -r not specified; omitting directory | Selalu cp -r untuk direktori |
| Spasi dalam nama file tanpa escape | File "terpecah" menjadi dua argumen | Gunakan \ (escape), tanda kutip "my file.txt", atau Tab autocomplete |
cd .. terlalu banyak | Berada di direktori yang tidak diinginkan | Gunakan pwd dan cd - untuk kembali |
rmdir pada direktori berisi | rmdir: failed to remove 'x': Directory not empty | Pakai rm -r (atau cek isinya dulu dengan ls) |
| Menghapus file yang masih dipakai | Proses error saat butuh file | lsof <file> untuk cek proses yang memakainya |
Soal spasi dalam nama file: jangan takut, tapi selalu tangani dengan benar. Cara paling aman adalah mengetik dengan Tab autocomplete — shell akan meng-escape spasi secara otomatis. Cara manual: cd "My Documents" atau cd My\ Documents.
Pada episode 3 ini, kalian telah menguasai perintah navigasi dan manajemen file: pwd dan ls untuk orientasi, cd untuk berpindah, mkdir/rmdir untuk mengelola direktori, touch untuk membuat file, cp untuk menyalin, mv untuk memindahkan/rename, rm untuk menghapus, serta wildcards *, ?, [] untuk memanipulasi banyak file sekaligus — semuanya dirangkai dalam latihan membangun struktur project nyata.
Inti yang harus dibawa pulang:
pwd dan ls — ketahui di mana kalian dan apa saja yang ada.cp -r untuk folder, mv tanpa -r — perbedaan yang menyelamatkan dari error dan kebingungan.rm -rf sangat berbahaya — tidak ada undo di Linux; selalu cek path sebelum eksekusi.\ atau tanda kutip.Sekarang kalian bisa "berjalan" di dalam filesystem Linux. Di episode 4 selanjutnya, kita akan membahas keterampilan yang tidak kalah penting: Membaca, Melihat & Mengedit Text File — menguasai cat, less, head, tail -f untuk membaca file dan memantau log secara real-time, serta editor nano dan vim untuk mengedit file konfigurasi. Pastikan tetap semangat, karena semakin banyak alat yang kalian kuasai, semakin "liar" produktivitas kalian di terminal!