Dalam komponen path name di Unix, hanya dua karakter yang tidak dapat digunakan: karakter null, yang mengakhiri string dalam C (bahasa kernel) dan slash, yang dicadangkan sebagai pemisah path. Selain itu, komponen jalur tidak boleh berupa string kosong.
Jadi, dalam nama jalur, kami hanya memiliki dua jenis token: garis miring, dan komponen.
Misalkan, tanpa menambahkan token baru , kami ingin mendukung dukungan dua jenis jalur, relatif dan absolut. Lebih jauh, kami ingin dapat merujuk ke direktori root, yang tidak memiliki nama (tidak memiliki orang tua yang akan memberinya nama).
Bagaimana kita bisa mewakili jalur relatif, jalur absolut, dan merujuk ke direktori root, hanya menggunakan garis miring?
Cara paling jelas untuk memperluas bahasa (selain pengenalan token baru) adalah dengan membuat sintaks baru: memberikan arti baru pada kombinasi token yang sintaks tidak valid.
Jalur yang dimulai dengan garis miring tidak masuk akal, jadi mengapa tidak menggunakan garis miring sebagai penanda yang menunjukkan "jalur ini mutlak, bukan relatif".
Jalur yang tidak berisi apa pun selain garis miring juga tidak valid, jadi mengapa tidak menetapkannya sebagai "direktori root".
Kedua makna ini bersatu karena jalur absolut mulai mencari di direktori root. Dengan kata lain garis miring dapat dianggap memiliki arti:
- arahkan ke direktori root, dan gunakan karakter slash
- jika ada lebih banyak materi di jalur, maka proseskan sebagai jalur relatif, jika tidak Anda selesai.
Kemudian, kita mungkin juga melemparkan garis miring, yang dapat berarti "jalur ini menegaskan bahwa komponen jalur terakhir adalah nama direktori daripada file biasa atau jenis objek lainnya: bahwa garis miring menunjukkan direktori yang mirip dengan cara slash terkemuka menunjukkan direktori root. "
Dengan semua sintaks di atas, kita masih memiliki sintaks dengan makna yang belum ditentukan: garis miring ganda, garis miring tiga, dan sebagainya.
Mengapa tidak memperkenalkan token lain saja dan melakukannya secara berbeda. Ini mungkin karena para desainer mengambil pendekatan minimalis pada umumnya. (Mengapa ed
editor hanya menampilkan a ?
ketika Anda melakukan sesuatu yang salah?) Garis miring mudah diketik, tidak memerlukan perubahan. Bahasa jalur dengan hanya dua jenis token (komponen dan garis miring) mudah diingat dan digunakan.
Pertimbangan penting lainnya adalah manipulasi jalur yang mudah dimungkinkan hanya dengan menggunakan representasi string. Sebagai contoh, kita dapat "me-root" path absolut ke direktori induk baru dengan cukup mudah:
OLD_PATH=/old/path
NEW_HOME=/new/home
NEW_PATH="$NEW_HOME$OLD_PATH" /new/home/old/path
Ini tidak akan berhasil jika kita menunjukkan jalur absolut dengan cara lain, seperti tanda dolar terkemuka atau apa pun yang lain:
OLD_PATH=^old/path # ^ means absolute path
NEW_HOME=^new/home
# now we need more string kung-fu than just catenation
NEW_PATH="$NEW_HOME/${OLD_PATH#^}"
Jenis pengkodean ini masih diperlukan dalam beberapa kasus ketika berhadapan dengan jalur gaya-Unix, tetapi jumlahnya lebih sedikit.
cd /home
dengancd /home/
menambahkan/
pada akhir nama kosong memberikan akses ke direktori itu.