Navigasi di terminal artinya selalu tahu kamu sedang di folder mana, melihat isinya, lalu pindah ke folder lain, semuanya dengan mengetik. Bayangin kamu menjelaskan arah ke rumah teman. Ada dua cara. Alamat lengkap, "Jalan Dago 12, Bandung, Jawa Barat", benar dari mana pun orang berangkat. Petunjuk arah, "dari sini belok kiri, rumah kedua", cuma benar kalau orangnya berdiri di tempatmu. Di terminal, alamat lengkap disebut path absolut dan petunjuk arah disebut path relatif.
🧪 Tebakan cepat: kamu sedang di
/home/budi/proyek-web/src, lalu mengetikcd ../logs. Sekarang kamu di folder mana? Tebak dulu, jawabannya ada di bagian "Path absolut dan path relatif".
Folder di dalam folder: pohon file system
Semua file dan folder di Linux dan macOS tersusun seperti pohon terbalik dengan satu akar. Ini sebagian pohon di laptop Budi:
/
├── etc
├── home
│ └── budi
│ ├── Documents
│ ├── Downloads
│ └── proyek-web
│ ├── logs
│ └── src
├── tmp
└── var
└── log
/adalah root, akar paling atas. Gak adaC:atauD:seperti di Windows: semua ada di bawah/.- Directory adalah nama lain folder. Keduanya dipakai bergantian.
/home/budiadalah home folder Budi, tempat file pribadinya. Shell menyingkatnya jadi~. Di macOS, home folder ada di/Users/budi.
pwd: kamu ada di mana?
Folder tempat kamu berdiri disebut working directory. pwd (print working directory) mencetaknya lengkap dari root:
budi@laptop:~$ pwd
/home/budi
Prompt juga menunjukkannya dalam bentuk singkat: ~ di prompt sama dengan /home/budi.
ls: melihat isi folder
budi@laptop:~$ ls
Documents Downloads proyek-web
budi@laptop:~$ ls proyek-web
error.log index.html logs script.js src style.css
budi@laptop:~$ ls -a proyek-web
. .. .env error.log index.html logs script.js src style.css
lstanpa argument menampilkan isi folder sekarang. Dengan argument, isi folder itu.-a(all) ikut menampilkan nama yang diawali titik. File seperti.envsengaja disembunyikan..adalah folder ini sendiri,..adalah folder induknya.-l(long) menampilkan satu baris per item, dengan detail.
budi@laptop:~$ ls -la proyek-web
total 36
drwxrwxr-x 4 budi budi 4096 Oct 7 21:14 .
drwxr-x--- 5 budi budi 4096 Oct 6 19:30 ..
-rw-rw-r-- 1 budi budi 34 Oct 6 19:32 .env
-rw-rw-r-- 1 budi budi 84 Oct 7 21:30 error.log
-rw-rw-r-- 1 budi budi 196 Oct 7 20:41 index.html
drwxrwxr-x 2 budi budi 4096 Oct 6 19:46 logs
-rw-rw-r-- 1 budi budi 69 Oct 7 20:55 script.js
drwxrwxr-x 2 budi budi 4096 Oct 6 19:45 src
-rw-rw-r-- 1 budi budi 59 Oct 7 20:48 style.css
- Huruf pertama:
dartinya directory,-artinya file biasa. - Angka sebelum tanggal adalah ukuran dalam byte:
index.html196 byte. Folder selalu tercatat 4096. - Lalu waktu terakhir diubah, dan namanya. Huruf
rwxdanbudi budidibahas di pelajaran Permission. -hmengubah ukuran jadi mudah dibaca (4.0K), jadils -lahadalah kombinasi favorit banyak developer.
cd: pindah folder
cd (change directory) memindahkanmu. Kalau berhasil, dia diam saja, yang berubah prompt-nya:
budi@laptop:~$ cd proyek-web
budi@laptop:~/proyek-web$ cd src
budi@laptop:~/proyek-web/src$ pwd
/home/budi/proyek-web/src
budi@laptop:~/proyek-web/src$ cd ..
budi@laptop:~/proyek-web$ cd ~
budi@laptop:~$ cd -
/home/budi/proyek-web
budi@laptop:~/proyek-web$
cd namamasuk ke folder di dalam folder sekarang.cd ..naik satu tingkat ke folder induk. Ada spasi di antaracddan...cd ~, atau cukupcd, pulang ke home folder.cd -balik ke folder sebelumnya dan mencetak path-nya. Enak untuk bolak-balik di antara dua folder.
Path absolut dan path relatif
- Path absolut selalu diawali
/, dihitung dari root:/home/budi/proyek-web/src. Hasilnya sama dari folder mana pun kamu mengetiknya, seperti alamat lengkap. - Path relatif gak diawali
/, dihitung dari folder sekarang:src,./src(.artinya di sini),../logs,src/main.js. Hasilnya tergantung kamu berdiri di mana.
Dari /home/budi/proyek-web/src, ini yang terjadi:
| Kamu ketik | Dihitung dari | Kamu sampai di |
|---|---|---|
cd .. |
/home/budi/proyek-web/src |
/home/budi/proyek-web |
cd ../logs |
/home/budi/proyek-web/src |
/home/budi/proyek-web/logs |
cd /var/log |
/ (root) |
/var/log |
cd logs |
/home/budi/proyek-web/src |
error: bash: cd: logs: No such file or directory |
cd ../logs naik dulu ke proyek-web, lalu masuk ke logs, jadi kamu sampai di /home/budi/proyek-web/logs. Itu jawaban tebakannya. Baris terakhir gagal karena di dalam src gak ada folder logs: path relatif selalu dihitung dari tempatmu berdiri.
~/proyek-web juga menuju tempat yang sama dari mana pun, karena shell mengganti ~ jadi /home/budi sebelum perintahnya jalan.
Dari perintah ke kode
Latihannya meminta dua function JavaScript yang memegang aturan di atas:
| Tugas | Perintah |
|---|---|
| lihat isi | ls -la |
| posisi sekarang | pwd |
| kembali atas | cd .. |
| ke home | cd ~ |
| masuk folder src | cd src |
- Untuk tugas
masuk folder ..., nama foldernya diambil dari teks tugas, jadimasuk folder testsmenjadicd tests. Cek awalannya dengantask.startsWith("masuk folder "), lalu sambung"cd "dengan sisa teksnya. - Path absolut dikenali dari karakter pertamanya:
path.startsWith("/"). Garis miring di tengah gak berpengaruh, jadisrc/index.jstetap relatif.
⚠️ Jebakan yang sering ketemu
cd..tanpa spasi. Bash membacanya sebagai satu nama perintah dan menjawabbash: cd..: command not found. Tuliscd ...- Lupa sedang di mana. Path relatif yang benar di satu folder bisa gagal di folder lain. Kalau ragu, jalankan
pwddulu. - Huruf besar-kecil.
cd documentsgagal karena foldernyaDocuments. - Mengira file tersembunyi gak ada.
.envgak muncul dilsbiasa. Pakails -aatauls -la. - Di latihan, menganggap
src/index.jsabsolut karena ada/. Yang menentukan cuma karakter pertama.
TL;DR: File system adalah pohon folder dengan satu akar, /, dan home folder-mu /home/budi disingkat ~. pwd mencetak folder tempatmu berdiri, ls menampilkan isinya (-a ikut file tersembunyi, -l detail, -h ukuran mudah dibaca), dan cd memindahkanmu: cd nama masuk, cd .. naik satu tingkat, cd ~ pulang, cd - balik ke folder sebelumnya. Path absolut diawali / dan sama dari mana pun, path relatif dihitung dari folder sekarang, termasuk ./src dan src/index.js.