Saya di direktori home saya di mac saya:
$ pwd
/Users/lukas
Ketika saya cd
berkeliling, saya tidak (dan tidak bisa) memulai jalan dengan /
:
$ cd Documents/
/Users/lukas/Documents
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Kecuali ketika saya di /
:
$ pwd
/
$ cd Users
/Users
$ cd /Users
/Users
Mengapa saya dapat menggunakan /
di depan jalan ketika pergi dari /
ke /Users
tetapi tidak di tingkat berikutnya? Apakah ini khusus untuk macOS atau apakah ini perilaku Unix standar?
linux
command-line
mac
terminal
LukasKawerau
sumber
sumber
Jawaban:
Ini adalah perilaku standar Unix.
Di
/
awal lintasan mewakili akar disk (atau level awal / paling atas dari pohon sistem file). KarenaDocuments
bukan dari akarnya,/Documents
tidak dapat ditemukan./Users
tidak aktif dari direktori root, jadi masalah ini tidak terjadi.Anda bisa menggunakan
cd /Users/lukas/Documents
untuk mengubah ke jalur itu.Atau, Anda bisa menggunakan pengalamatan relatif. Filesystem berbasis Unix memiliki 2 direktori khusus:
.
yang berarti "direktori ini",..
yang berarti direktori induk.Jika Anda berada di
/Users/lukas
,cd ./Documents
akan membawa Anda ke tempat yang benar.Mari kita asumsikan Anda berada di
/Users/Lukas/Documents
dan ingin pergi ke/Users/Janes/Documents
, Anda bisa mengeluarkan perintahcd ../../Janes/Documents
- menggunakan..
akan membawa Anda kembali tingkat - jadi Anda akan melakukannya dua kali, sebelum masuk ke jalur relatif baru.sumber
Users/lukas
,cd Documents
panggilan untuk jalur relatif ;cd /Users/Lukas/Documents
panggilan untuk jalur absolut (yang akan bekerja di mana pun Anda berada saat memanggil perintah ini)./
dengan `\`) karena DOS meminjamnya (melalui sejarah yang panjang dan berbelit-belit) dari Unix./Users/lukas
adalah jalan "absolut". Yang memimpin/
mewakili direktori root dari sistem file Anda.lukas
adalah jalur "relatif". Karena tidak berlabuh ke root, itu berarti "lihat ini di direktori saat ini ". Kecuali direktori saat ini adalah/Users
(atau direktori lain dengan alukas
di dalamnya), ini akan gagal.Jadi, mari kita telusuri contoh Anda, dengan asumsi Anda berada di
/Users/lukas
:Path relatif yang diberikan => ubah ke direktori "Documents" yang ada di dalamnya
/Users/lukas
.Path absolut yang diberikan => ubah ke direktori
/Documents
.Ini menunjukkan bahwa Anda sekarang telah mengubah direktori kerja ke direktori root,
/
(meskipuncd
perintah untuk melakukan ini tidak ditampilkan).Path relatif yang diberikan => ubah ke direktori "Users" yang ada di dalamnya
/
.Path absolut yang diberikan => ubah ke direktori
/Users
.Kuncinya setiap kali memimpin itu
/
. Dengan itu, jalan itu mutlak. Tanpanya, jalan itu relatif. Aturan ini tidak ambigu karena semua path absolut dimulai dengan/
(karena direktori root selalu dipanggil/
).Berikut ini beberapa pseudocode yang secara longgar menggambarkan algoritma itu:
Argumen yang Anda berikan harus
cd
melalui algoritma ini; direktori yang akhirnya Anda ubah adalah jalur yang dikembalikan algoritma.Bacaan lebih lanjut:
Joseph L. Zachary
"Pengantar Pemrograman Ilmiah"
sumber