Quali comuni scaffali sono illegali nei file system di Unix e WIndows?

Ciao mi sto cercando un personaggio nei filesystem Unix e Windows che non è consentito nei nomi di file e directory e mi chiedevo se esista un tale carattere (ho notato che * e% sono consentiti)?

  • Miglior modo per aggiornare i server dal 2008 R2 al 2012 R2
  • Strumento di visualizzazione del monitoraggio delle performance
  • Windows Server non è in grado di sincronizzare in modo affidabile il tempo NTP
  • connessione al server Bitvise SSH
  • Come si installa SQL Server in un server remoto?
  • Imansible avviare php-cgi.exe - MSVCR110.dll manca
  • Rotta aggiunge errore: il parametro non è corretto
  • Hyper-V: Si è verificato un errore durante la mossa: l'operazione non è supportta
  • 4 Solutions collect form web for “Quali comuni scaffali sono illegali nei file system di Unix e WIndows?”

    Non esiste un file system "Unix". Né un filesystem "Windows" viene a questo. Vuoi dire NTFS, FAT16, FAT32, ext2, ext3, ext4, ecc. Ciascuno ha le proprie limitazioni sui caratteri validi nei nomi.

    Inoltre, il tuo interrogativo e la domanda si riferiscono a due concetti totalmente diversi? Vuoi sapere il sottoinsieme dei caratteri giuridici o vuoi sapere quali caratteri jolly possono essere usati in entrambi i sisthemes?

    http://en.wikipedia.org/wiki/Ext3 afferma che "tutti i byte tranne NULL e '/'" sono consentiti nei nomi dei file.

    http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx descrive il caso generico per i nomi di file validi "indipendentemente dal filesystem". In particolare, i seguenti caratteri sono riservati: </>: "/ \ |? *

    Windows inoltre pone restrizioni per non utilizzare i nomi di dispositivo per i file: CON, PRN, AUX, NUL, COM1, COM2, COM3 ecc.

    La maggior parte dei comandi in sisthemes operativi basati su Windows e Unix accettano * come carattere jolly. Windows accetta% come un carattere jolly char, mentre le shell per i sisthemes Unix utilizzano? come carattere jolly carattere singolo.

    La maggior parte dei file system sono abbastanza permissivi: ad esempio, tutti i file NTFS, extN, btrfs, XFS e ReiserFS consentono tutto tranne 1) il byte null e 2) la barra / .

    Il sistema operativo può avere le proprie limitazioni. In particolare, l'API Win32 0 impedisce * ? come wildcards, \ / come separatori di path,: come separatore di stream e < > | " < > | " per nessuna buona ragione 1. Non sono consentiti anche i caratteri di controllo ASCII (la gamma 0x00-0x1F).


    In Unix, l'espansione di wildcard viene eseguita dalla shell e dalla function glob() . In Windows, è il lavoro del driver del filesystem, ecco perché * e ? non può essere utilizzato nei nomi di file.


    0 Non ho informazioni sulle API POSIX e OS / 2 offerte da Windows.

    1 Sono speciali nel shell della row di command ( cmd.exe ), ma sicuramente potrebbe (e infatti) gestire la fuga come i gusci Unix fanno.

    In realtà dipende dal filesystem, ma la maggior parte dei filesystem Unix consente qualsiasi byte tranne NULL e /. NTFS consente tutti tranne NULL e \ /: *? "<> |.

    C'è un grafico di confronto estremamente utile su Wikipedia: http://it.wikipedia.org/wiki/Comparison_of_file_systems

    Detto questo, quasi tutti i gusci riconoscono * come prima wildcard e un carattere in un nome di file solo quando sono fuggiti. Perché non usare l'uso *?

    * dovrebbe funzionare come una wildcard in entrambi, ma è il shell o il command invocato che espande queste cose, piuttosto che il file system stesso. Bash, ad esempio, espanderà * in un elenco separato di spazi di file nella cartella corrente.

    Non penso che il filesystem esplicitamente vieta qualsiasi carattere. È abbastanza ansible creare nomi di file su ext2 o NTFS con nomi come *&( . Windows GUI potrebbe non consentirti, ma puoi farlo in Cygwin, dato che il file system sottostante lo permette.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.