GNU/Linux >> Znalost Linux >  >> Linux

Linux/Windows/Unix/... názvy souborů:Které znaky jsou povoleny? Které jsou neuniknuté?

Řešení 1:

Jediné znaky nepovolené v názvu souboru v *nix jsou NUL a / . V systému Windows pouze NUL , : a \ skutečně nejsou povoleny, ale mnoho aplikací to dále omezuje a také zabraňuje ? , * , + a % .

Žádné znaky v názvu souboru nikdy nepotřebují být escapován, pokud to není nutné, aby nebyl interpretován shellem.

Řešení 2:

V článku Wikipedie o názvech souborů je diskuze o znacích názvů souborů.

Tento esej může být informativní:Oprava názvů souborů Unix/Linux/POSIX.

Tento článek porovnává OS X a Windows XP:X vs. XP:Zakázané znaky v názvech souborů (PDF, viz str. cca 64-66).

Věci, které by neměly být v názvech souborů za 1 000 $ Alex

Nevím, které znaky musí být un -escaped, ale v Linuxu pravděpodobně není dobrý nápad escapovat znaky, které mohou mít speciální význam, jako je "n" (nový řádek), "t" (tabulátor) a další, ale to obecně není problém při operacích se soubory. Možná máte na mysli „uniklý“ spíše než „neuniklý“. Nejběžnější jsou ty, které shell interpretuje, jako je mezera, ">", "<" atd. Diskusi o nich najdete v některých článcích, na které jsem odkazoval.

Řešení 3:

Pokud vytvoříte soubor ve Windows pomocí Průzkumníka pomocí jednoho z následujících znaků, bude si stěžovat, že znaky nejsou povoleny:

\ / : * ? " < > |

Dobrá reference je zde:

Pojmenování souborů, cest a jmenných prostorů
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Microsoft dále uvádí:

"... na platformách stolních počítačů se systémem Windows mohou neplatné znaky cesty obsahovat znaky ASCII/Unicode 1 až 31 a také uvozovky ("), menší než (<), větší než (>), svislou čáru (|), backspace (\b), null (\0) a tabulátor (\t)."

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

Řešení 4:

Na Linuxu a dalších systémech kompatibilních s POSIX je "/" vyhrazeno jako oddělovač adresářů a "\0" (znak NULL) označuje konec řetězce. Vše ostatní je povoleno.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Jak získám cestu k procesu v Unixu / Linuxu

  1. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  2. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  3. Co jsou soubory /dev/zero a /dev/null v Linuxu

  1. Jaké znaky jsou v názvech adresářů Windows a Linux zakázány?

  2. Povolené znaky v názvech proměnných prostředí Linux

  3. Proč je v Linuxu tolik /dev/tty?