Saya mendapat fungsi yang memeriksa apakah nama file yang dikirimkan adalah .
atau ..
. Tapi saya tidak tahu bagaimana cara menamainya dengan benar. Sesuatu seperti IsCurrentOrParentDirectory()
ambigu, karena fungsinya mengambil nama file dan bukan path lengkap. (Secara intuitif sesama programmer akan berharap lulus /usr/
sementara saya masuk /usr/
akan kembali true
, sementara ini sebenarnya tidak demikian.)
Apakah ada istilah teknis untuk entri direktori ini? Jika ada, apa itu?
path
technical-writing
Max Truxa
sumber
sumber
.
dan..
yang nama file sesuai dengan standar POSIX. Lihat kutipan saya di bawah ini. Saya akan mengatakan itu baik-baik saja di sini karena ini tentang konsep komputasi umum.foo.bar
,foo
, ...) tapi tidak jalan (foo/bar
,/foo/
, ...). Tetapi karena direktori, tautan, dll adalah file juga, saya akan membiarkannya seperti itu.Jawaban:
Dari standar POSIX :
Jadi, sungguh, jika Anda ingin memeriksa apakah nama file itu
.
atau..
Anda harus menyebutnyaIsDotOrDotDot()
, atau, menggunakan terminologi POSIX dari resolusi pathnameIsPredecessorOrParentOfPredecessor()
,, atau bahkan mungkinPointsToPredecessorOrParentOfPrecedessor()
... Anda mendapatkan idenya. Masalahnya adalah bahwa terminologi terakhir hanya masuk akal ketika melihat nama path lengkap. Tapi toh tidak ada yang akan mengerti itu.Mempertimbangkan hal itu
.
dan..
merupakan nama file yang valid (hanya ditafsirkan berbeda), Anda harus tetap berpegang pada apa yang Anda miliki, bergantung pada artinya daripada bagaimana mereka disebut secara internal.sumber
.bash_history
dot atau bukan dot? Saya tidak yakin apakah nama fungsi itu lebih deskriptif daripada open OP yang diajukan..
atau..
, dan bukan apakah itu baru saja dimulai dengan a.
. Tentu saja nama fungsi OP lebih deskriptif; Saya baru saja mengarahkannya ke bagaimana itu disebut secara teknis.IsDotOrDotDot()
mengatakan apa-apa tentang fungsi ini.IsDotOrDotDot
. Siapa pun yang berpengetahuan luas dengan konsep sistem file akan langsung memahaminya. Dapat diperdebatkan apakah.bash_history
"dot" karena tidak ada konteks yang disediakan kemudian untuk arti "dot", tetapi jelas BUKAN "dot atau dot dot"..
dan..
biasanya digunakan untuk menggambarkan jalur relatif vs yang absolut suka/usr
. Saya akan menggunakan perbedaan ini dan menyatakan fungsinya sebagaiIsRelativeCurrentOrParentDirectory()
.Waspadai dot-referensi dapat terjadi di mana saja di jalan. Bagaimana dengan
/usr/local/..
?sumber
Standar POSIX, yang biasanya dikutip, mengatakan,
(penekanan ditambahkan). Jadi, sementara itu tidak terlalu teknis , sepertinya "nama file khusus" mungkin hanya nama resmi . Pengguna Anda mungkin akan mengerti jika Anda disebut fungsi Anda salah satu dari berikut:
IsSpecialDirectory()
,IsSpecialFilename()
, atau hanyaIsSpecialName()
.Atau Anda bisa pergi dengan
IsStandardDirectory()
,IsStandardFilename()
atauIsStandardName()
. Ini mengikuti konvensi penamaan Unix (input standar, output standar) untuk hal-hal yang ditetapkan untuk Anda secara otomatis (dalam hal ini, olehmkfs
danmkdir
).IsAutomatic…()
atauIsDefault…()
, di sisi lain, mungkin tidak cukup intuitif.sumber
IsMagicDirectory()
sangat dekat dengan itu, tapi saya pikir kata-kata Anda jauh lebih intuitif dan tepat (terutama karena menggunakan konvensi penamaan yang mapan). MenggunakanIsSpecialFileName
bahkan akan memperjelas bahwa fungsi tersebut tidak menerima jalur tetapi satu file (atau direktori, tautan, dll) nama.IsSpecialFile()
itu adalah saran yang buruk. Tapi saya tidak menyarankan itu; Saya menyarankanIsSpecialFilename()
. Sementara nama-namasda1
,console
,kmem
,myfifo
danurandom
yang sugestif, mereka tidak dilindungi dan tidak inheren khusus. Tapi.
dan..
secara inheren nama file khusus .Satu-satunya istilah yang saya tahu dari dunia * nix adalah
CWD
untuk Direktori Kerja Saat Ini. Itu sebenarnya cukup sering digunakan. Lihat, misalnya/proc/$$/cwd
yang merupakan tautan ke direktori tempat Anda menjalankan perintah.Saya tidak tahu nama standar
..
selaindot-dot
dan sebagai @slhck menunjukkan itu bukan pilihan yang baik.sumber
Posix cukup ambigu berbicara tentang hubungan direktori orangtua-anak. Seperti orang lain berkata,
.
/..
tidak membantu saat berbicara atau berkomunikasi dengan manusia lainnya.Struktur file dapat dianggap sebagai struktur data pohon. Di sini, umumnya "orang tua" dan "anak" atau "anak perempuan" cukup untuk menyampaikan makna. Anda akan melihat buku teks struktur data membawa konvensi ini
Atau, sepertinya pohon dapat dibicarakan sebagai "atas" dan "turun" pohon. Dengan konvensi, "naik" berarti lebih dekat ke direktori root, dan "turun" mengacu pada anak (ren).
Saya pikir salah satu
IsCurrentOrUp()
atauIsCurrentOrParent()
dapat dikatakan sebagai praktik yang baik untuk fungsi penamaan.sumber