GNU/Linux >> Belajar Linux >  >> Linux

Karakter apa yang dilarang dalam nama direktori Windows dan Linux?

Sederhanakan dan jawab pertanyaannya terlebih dahulu.

  1. Karakter ASCII yang dapat dicetak terlarang adalah:

    • Linux/Unix:

      / (forward slash)
      
    • Jendela:

      < (less than)
      > (greater than)
      : (colon - sometimes works, but is actually NTFS Alternate Data Streams)
      " (double quote)
      / (forward slash)
      \ (backslash)
      | (vertical bar or pipe)
      ? (question mark)
      * (asterisk)
      
  2. Karakter yang tidak dapat dicetak

    Jika data Anda berasal dari sumber yang mengizinkan karakter yang tidak dapat dicetak, maka masih ada lagi yang harus diperiksa.

    • Linux/Unix:

      0 (NULL byte)
      
    • Jendela:

      0-31 (ASCII control characters)
      

    Catatan: Meskipun legal di sistem file Linux/Unix untuk membuat file dengan karakter kontrol dalam nama file, mungkin akan menjadi mimpi buruk bagi pengguna untuk berurusan dengan file semacam itu.

  3. Nama file yang dicadangkan

    Nama file berikut dicadangkan:

    • Jendela:

      CON, PRN, AUX, NUL 
      COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
      LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9
      

      (baik sendiri maupun dengan ekstensi file arbitrer, misalnya LPT1.txt ).

  4. Aturan lainnya

    • Jendela:

      Nama file tidak boleh diakhiri dengan spasi atau titik.


"Panduan komprehensif" karakter nama file terlarang tidak akan berfungsi di Windows karena menyimpan nama file dan juga karakter. Ya, karakter seperti * " ? dan yang lainnya dilarang, tetapi ada banyak sekali nama yang hanya terdiri dari karakter valid yang dilarang. Misalnya, spasi dan titik adalah karakter nama file yang valid, tetapi nama yang hanya terdiri dari karakter tersebut dilarang.

Windows tidak membedakan karakter huruf besar dan huruf kecil, jadi Anda tidak dapat membuat folder bernama A jika salah beri nama a sudah ada. Lebih buruk lagi, nama yang tampaknya diperbolehkan seperti PRN dan CON , dan banyak lainnya, dicadangkan dan tidak diizinkan. Windows juga memiliki beberapa batasan panjang; nama file yang valid di satu folder bisa menjadi tidak valid jika dipindahkan ke folder lain. Aturan penamaan file dan folder ada di dokumen Microsoft.

Secara umum, Anda tidak dapat menggunakan teks buatan pengguna untuk membuat nama direktori Windows. Jika Anda ingin mengizinkan pengguna memberi nama apa pun yang mereka inginkan, Anda harus membuat nama yang aman seperti A , AB , A2 et al., simpan nama yang dibuat pengguna dan persamaan jalurnya dalam file data aplikasi, dan lakukan pemetaan jalur dalam aplikasi Anda.

Jika Anda benar-benar harus mengizinkan nama folder yang dibuat pengguna, satu-satunya cara untuk mengetahui apakah itu tidak valid adalah dengan menangkap pengecualian dan menganggap nama itu tidak valid. Bahkan itu penuh dengan bahaya, karena pengecualian yang diberikan untuk akses yang ditolak, drive offline, dan ruang drive yang habis tumpang tindih dengan pengecualian yang dapat diberikan untuk nama yang tidak valid. Anda membuka satu kaleng luka besar.


Di Linux dan sistem terkait Unix lainnya, hanya ada dua karakter yang tidak dapat muncul dalam nama file atau direktori, yaitu NUL '\0' dan garis miring '/' . Garis miring, tentu saja, dapat muncul di nama jalur, memisahkan komponen direktori.

Rumor mengatakan bahwa Steven Bourne (dari ketenaran 'shell') memiliki direktori yang berisi 254 file, satu untuk setiap huruf (kode karakter) yang dapat muncul dalam nama file (tidak termasuk / , '\0'; nama . adalah direktori saat ini, tentu saja). Itu digunakan untuk menguji shell Bourne dan secara rutin menimbulkan malapetaka pada program yang tidak hati-hati seperti program cadangan.

Orang lain telah membahas aturan Windows.

Perhatikan bahwa MacOS X memiliki sistem file case-insensitive.

Adalah Kernighan &Pike dalam The Practice of Programming yang mengatakan sebanyak itu di Bab 6, Testing, §6.5 Stress Tests:

Ketika Steve Bourne sedang menulis shell Unix-nya (yang kemudian dikenal sebagai shell Bourne), dia membuat direktori berisi 254 file dengan nama satu karakter, satu untuk setiap nilai byte kecuali '\0' dan garis miring, dua karakter yang tidak dapat muncul di nama file Unix. Dia menggunakan direktori itu untuk semua jenis pengujian pencocokan pola dan tokenisasi. (Direktori pengujian tentu saja dibuat oleh sebuah program.) Selama bertahun-tahun setelah itu, direktori itu menjadi kutukan bagi program berjalan pohon-file; itu menguji mereka sampai kehancuran.


Linux
  1. Ganti Nama Semua File dan Nama Direktori menjadi Huruf Kecil di Linux

  2. Apa itu Pengguna SELinux dan bagaimana Memetakan Pengguna Linux ke Pengguna SELinux

  3. Dalam bahasa apa Windows, Mac OS X dan Linux ditulis?

  1. Apa panggilan OS / sistem asli Windows dan Linux yang dibuat dari malloc ()?

  2. Apa itu double dot(..) dan single dot(.) di Linux?

  3. Apa perbedaan antara lsof dan netstat di linux?

  1. Linux – Apa Memori Tinggi dan Memori Rendah Di Linux?

  2. Sistem file apa yang digunakan saat menggunakan Windows dan Linux?

  3. Bagaimana \n dan \r ditangani secara berbeda di Linux dan Windows?