linux文件名规则
在Linux中,大小写字母是严格区分开的。例如,my-filE、my-file、my-FILE是三个不同的文件(口令也是要严格区分大小写的。同样,UNIX和C研发语言也都要严格区分大小写字母)。
文件名长度最大能为256个字符,他通常是由字母、数字、“.”(点号)、“_”(下划线)和“-”(减号)组成的。
例如:/abc/dd.d
(\/[a-zA-Z0-9\_\-][a-zA-Z0-9\.\_\-]*)*
另外更有一些字母是合法的,不过,我们并不推荐使用他们。例如,“*”(星号)、“?”(问号)、“ ”(空格)、“$”(美元符号)、“&”和所有括号。这些字母对于Linux shell有特定的含义。
文件名中一定不能含有“/ ”,因为“/ ”在Linux的目录树中表示根目录或是路径中的分隔符(如同DOS中的“\”)。
在对一个含有特别字符的文件操作时,应当用一对单引号将其括起来,这样shell就不会对他们进行处理了。例如,要删去一个名为my file*的文件(文件名中有空格和星号),应当写为:
$ rm ´my file*´
这里要注意的是我们使用单引号而非双引号进行引用。对某些特别字符即使用双引号进行引用,shell还是会对其进行解释,因此双引号的功能比单引号要弱一些。
下面是对一些特别字符的说明:
星号(*):匹配零个或多个字符;
?:匹配所有一个字符;
[abc1]:匹配所有一个在枚举集合中的字符。在该例中,该集合是a、b、c或1;
[a-z]:匹配所有一个小写字符;
[A-F]:匹配所有一个从A到F的大写字符;
[0-9]:匹配所有一个单个数字;
[a-z A-Z 0-9]:匹配所有字符(小写或大小)或所有数字。
例如,下面的命令将列出当前目录下的所有文件的文件名(除了以点号开头的文件)。
$ ls *
以点号开头的文件类似于DOS中的隐藏文件。用ls -a或ls .*命令才能显示这些文件。这些以点号开头的文件常在用户主目录中,用做用户的设置文件。
下面的命令显示了含有点号的文件。
$ ls *.*
下面的命令显示了含有两个点号的文件。
$ ls *.*.*
Linux不具有文件扩展名的概念或所有其他DOS文件名特性(如,Micro~1.doc)。
例如,下面的命令将显示当前目录下所有以“a”、“b”或所有大写字母开头的文件的文件名。
$ ls [abA-Z]*