Saya bertanya-tanya tentang perbedaan antara \
dan /
di jalur file. Saya perhatikan bahwa kadang-kadang jalan berisi /
dan kadang-kadang dengan \
.
Akan lebih bagus jika ada yang bisa menjelaskan kapan harus menggunakan \
dan /
.
Saya bertanya-tanya tentang perbedaan antara \
dan /
di jalur file. Saya perhatikan bahwa kadang-kadang jalan berisi /
dan kadang-kadang dengan \
.
Akan lebih bagus jika ada yang bisa menjelaskan kapan harus menggunakan \
dan /
.
Jawaban:
/
adalah pemisah jalur pada sistem Unix dan Unix-like. Windows modern umumnya dapat menggunakan keduanya \
dan secara /
bergantian untuk filepath, tetapi Microsoft telah menganjurkan penggunaannya\
sebagai pemisah jalur selama beberapa dekade.
Hal ini dilakukan karena alasan historis yang berasal dari tahun 1970-an, sebelum Windows lebih dari satu dekade. Pada awalnya, MS-DOS (fondasi untuk Windows awal) tidak mendukung direktori. Unix memiliki dukungan direktori menggunakan /
karakter sejak awal. Namun, ketika direktori ditambahkan dalam MS-DOS 2.0, Microsoft dan IBM sudah menggunakan /
karakter untuk perintah switch , dan karena parser ringan DOS (diturunkan dari QDOS , dirancang untuk berjalan pada perangkat keras ujung bawah), mereka tidak dapat menemukan cara yang layak untuk menggunakan /
karakter tanpa memutus kompatibilitas dengan aplikasi yang ada.
Jadi, untuk menghindari kesalahan tentang "missing a switch" atau "switch tidak valid" saat meneruskan file data sebagai argumen untuk perintah seperti ini:
cd/ <---- no switch specified
dir folder1/folder2 <---- /folder2 is not a switch for dir
diputuskan bahwa \
karakter akan digunakan sebagai gantinya, sehingga Anda dapat menulis perintah-perintah seperti ini
cd\
dir folder1\folder2
tanpa error.
Kemudian, Microsoft dan IBM berkolaborasi pada sistem operasi yang tidak terkait dengan DOS yang disebut OS / 2 . OS / 2 memiliki kemampuan untuk menggunakan kedua pemisah, mungkin untuk menarik lebih banyak pengembang Unix. Ketika Microsoft dan IBM berpisah pada tahun 1990 , Microsoft mengambil kode apa yang mereka miliki dan menciptakan Windows NT , yang menjadi dasar semua versi Windows modern, membawa agnostisisme pemisah ini dengannya.
Karena kompatibilitas ke belakang telah menjadi nama permainan untuk Microsoft dari semua transisi OS utama yang telah mereka lakukan (DOS ke Win16 / DOS, ke Win16 / Win32, ke Win32 / WinNT), kekhasan ini macet, dan mungkin akan ada untuk sementara waktu.
Karena alasan inilah perbedaan ini ada. Seharusnya benar-benar tidak berpengaruh pada apa yang Anda lakukan karena, seperti saya katakan, WinAPI umumnya dapat menggunakannya secara bergantian. Namun, aplikasi pihak ke-3 mungkin akan rusak jika Anda memberikan /
ketika mereka mengharapkan \
nama direktori. Jika Anda menggunakan Windows, tetap gunakan \
. Jika Anda menggunakan Unix atau URI (yang memiliki fondasi di jalur Unix, tapi itu cerita lain sepenuhnya), maka gunakan /
.
Dalam konteks C #: Perlu dicatat, karena ini secara teknis adalah pertanyaan C #, bahwa jika Anda ingin menulis lebih banyak kode C "portabel" yang bekerja pada Unix dan Windows (bahkan jika C # sebagian besar adalah bahasa Windows), Anda mungkin ingin menggunakan Path.DirectorySeparatorChar
bidang tersebut sehingga kode Anda menggunakan pemisah yang disukai pada sistem itu, dan gunakan Path.Combine()
untuk menambahkan jalur dengan benar.
Path.Combine
.
foo.exe /bar
dapat ditafsirkan sebagai saklar baris perintah, sementara foo.exe \bar
mungkin ditafsirkan sebagai merujuk ke file / folder yang disebut bar
yang terletak di direktori root \
dari "drive" saat ini, sepertiC:\
misalnya.
/
ke \
dilakukan di lapisan compat Win32, yang berarti bahwa jika Anda mengelak, akan ada perbedaan. Contoh paling dikenal dari ini adalah jalur panjang diperpanjang: \\?\C:\
akan bekerja seperti yang diharapkan pada NTFS tetapi \\?\C:/
tidak akan.
/
dan` is not entirely true. For network path you have to use
`(mis. \\ <servername> bot tidak // <servername>)
MS-DOS 1.0 mempertahankan opsi baris perintah (atau beralih) konvensi karakter '/' dari CP / M. Pada saat itu tidak ada struktur direktori dalam sistem file dan tidak ada konflik.
Ketika Microsoft mengembangkan lingkungan yang lebih mirip Unix dengan MS-DOS (dan PC-DOS) 2.0, mereka harus mewakili pemisah jalur menggunakan sesuatu yang tidak bertentangan dengan opsi baris perintah yang ada. Secara internal, sistem bekerja sama baiknya dengan '/' atau '\'. Prosesor perintah (dan banyak aplikasi) terus menggunakan '/' sebagai karakter sakelar.
Sebuah CONFIG.SYS
entri SWITCHAR=-
dapat digunakan untuk mengesampingkan /
standar untuk meningkatkan kompatibilitas Unix. Ini membuat perintah bawaan dan utilitas standar menggunakan karakter alternatif. Pemisah jalur Unix kemudian dapat digunakan untuk nama file dan direktori. Entri ini telah dihapus di versi yang lebih baru, tetapi panggilan DOS didokumentasikan untuk mengatur nilai setelah boot.
Ini sedikit digunakan dan sebagian besar alat pihak ketiga tetap tidak berubah. Kebingungan masih ada. Banyak port alat Unix mempertahankan karakter '-' switch sementara beberapa mendukung kedua konvensi.
Prosesor perintah PowerShell tindak lanjut mengimplementasikan parameter pelolosan dan sakelar yang ketat dan sebagian besar menghindari kebingungan kecuali di mana alat lawas digunakan.
Baik pertanyaan maupun jawabannya tidak berhubungan dengan C #.
/
sebagai pengantar opsi dalam berbagai sistem operasi PDP-11 seperti RSTS (1970) dan RSX (1972) mendahului dalam CP / M (1973).
Pada sistem berbasis Unix \
adalah karakter pelarian, yaitu, \
memberitahu parser bahwa ini adalah ruang dan bukan akhir dari pernyataan. Pada sistem Unix /
adalah pemisah direktori.
Pada Windows \
adalah pemisah direktori, tetapi /
tidak dapat digunakan dalam nama file atau direktori.
\
dan /
(juga beberapa simbol lainnya) tidak dapat digunakan dalam nama file karena DOS tidak memiliki parser kompleks yang sama dengan yang digunakan oleh para pengguna Unix. Kurangnya pengurai yang baik adalah hasil dari MS-DOS yang diturunkan dari QDOS ("Sistem Operasi Cepat dan Kotor"). Itu dimaksudkan untuk membuat semuanya berjalan cepat dan pada perangkat keras yang terbatas. Semua ini tentu saja masih ada sampai sekarang untuk kompatibilitas.
/
ditambahkan sebagai "Alternate_Directory_Separator"
\
benar di jalur file Windows dan /
benar dalam URI.Ini bisa menjadi sumber yang relevan.
\
ke /
otomatis. Dalam buku saya ini disebut "bekerja dengan mulus".
Terlepas dari jawaban yang diberikan, perlu disebutkan bahwa \
banyak digunakan untuk karakter khusus (seperti\n
\t
) dalam bahasa pemrograman, editor teks dan sistem umum yang menerapkan analisis leksikal.
Jika Anda pemrograman misalnya, kadang-kadang tidak nyaman bahkan perlu melarikan diri backslash dengan yang lain ( \\
) untuk menggunakannya dengan benar - atau perlu menggunakan string yang lolos, seperti C # @"\test"
.
Tentu saja, seperti yang disebutkan sebelumnya, web URI menggunakan garis miring dengan standar tetapi kedua garis miring bekerja di alat baris perintah terbaru dan paling umum.
UPDATE: Setelah mencari sedikit, tampaknya seluruh cerita antara /
dan \
kembali ke "sejarah komputer", di zaman DOS dan sistem berbasis Unix pada waktu itu. HowToGeek memiliki artikel yang menarik tentang kisah ini.
Dalam jangka pendek, DOS 1.0 pada awalnya dirilis oleh IBM tanpa dukungan direktori, dan /
digunakan untuk fungsionalitas perintah lain ("switching"). Ketika direktori diperkenalkan dalam versi 2.0, /
sudah digunakan, jadi IBM memilih simbol yang paling dekat secara visual \
. Di sisi lain, Unix secara standar digunakan /
untuk direktori.
Ketika pengguna mulai menggunakan banyak sistem yang berbeda, mereka mulai menjadi bingung, membuat pengembang OS berusaha membuat sistem bekerja dalam kedua kasus - ini bahkan berlaku di bagian URL, karena beberapa browser mendukung http: \\ www.test. Format com \ go . Ini memiliki kelemahan meskipun secara umum, tetapi semuanya berdiri hari ini masih untuk penyebab kompartibilitas mundur, dengan upaya untuk mendukung kedua garis miring pada Windows, meskipun mereka tidak berdasarkan DOS lagi.
` as well as many
make` shells ... Anda benar bahwa Windows baru-baru ini telah mendefinisikan variabel lingkungan ALTERNATE_PATH_SEPARATOR yang default untuknya /
maka Windows mungkin dapat menerima keduanya.
/
jalur pendukung di mana saja dalam sistem - tentu saja, aplikasi bisa salah paham jalur itu di waktu luang mereka, jadi itu tidak digunakan terlalu banyak. Aplikasi non-CLI yang tidak mencoba melakukan validasi jalurnya sendiri (rusak) bekerja dengan baik sejak awal.
Anda seharusnya tidak menggunakan salah satu di C #. Anda harus selalu menggunakan Path
kelas . Ini berisi metode yang disebut Path.Combine
yang dapat digunakan untuk membuat jalur tanpa menentukan pemisah sendiri.
Contoh penggunaan:
string fullPath = System.IO.Path.Combine("C:", "Folder1", "Folder2", "file.txt");
\
digunakan untuk jalur file lokal Windows dan jalur jaringan seperti pada:
C:\Windows\Temp\
atau \\NetworkSharedDisk\Documents\Archive\
/
adalah apa yang diperlukan oleh URI standar seperti pada:
/
jalur (setidaknya 7).
/
dalam standarad URI seperti yang telah saya sebutkan dalam jawaban.