它是正确使用某些特殊字符,如+
,&
,'
,.
。(点)和,
(逗号),基本上,在文件名中。
据我所知,您可以使用-
并_
没有问题,但做了一些研究,我一直无法找到明确的关于其他符号; 有些人说可以,有些人说不能,有些人则说“不鼓励”使用它们(无论如何)。
它是正确使用某些特殊字符,如+
,&
,'
,.
。(点)和,
(逗号),基本上,在文件名中。
据我所知,您可以使用-
并_
没有问题,但做了一些研究,我一直无法找到明确的关于其他符号; 有些人说可以,有些人说不能,有些人则说“不鼓励”使用它们(无论如何)。
Answers:
使用某些特殊字符是否正确,例如+,&,',.。(点)和(逗号),基本上是文件名。
是。
正确但不一定明智或方便。
您可以 在现代Unix和Linux文件系统中的文件名中使用除null以外的任何字符/
。
您可以使用ASCII标点符号。某些实用程序在其创建的文件名中使用停止符(点)和逗号。
您可以使用ASCII控制字符,但这是不可取的,因为它们不太可能被可接受地显示并且难以使用。
您可以使用外壳程序元字符,例如ASCII和号和ASCII撇号。但是,这很不方便,并且要求在构造命令时必须格外小心地引用或转义此类字符。
您可以使用多种编码使用多字节字符。由外壳程序和/或实用程序决定是否正确解释和显示非ASCII字符。建议限制自己使用流行的编码(例如UTF-8)并适当设置区域设置。
使用ASCII可打印字符时,您将遇到最少的问题,将标点符号集限制为非Shell元字符,并且不以连字符开头的名称(或终止符-除非要隐藏文件)。
正如其他人所述,在现代Unix / Linux系统上,文件名可以包含除\0
(NUL)和/
(斜杠)之外的任何字符。
除此之外,POSIX标准还为文件名定义了一个可移植的字符集:
3.278可移植文件名字符集
从中构造可移植文件名的字符集。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 . _ -
后三个字符分别是<period>,<underscore>和<hyphen>字符。另请参见路径名。
当使用选项调用GNU Coreutils的pathchk
实用程序进行检查时,该选项将警告空文件名(无效,但可以作为参数传递给)和以连字符()开头的文件名。-p
-P
pathchk
-
最安全的选择是,请参阅Wikipedia条目以获取任何操作系统允许的字符集。从这里可以找到。
例如,对于大多数基于unix的系统,允许的字符集为8位,保留字符为空字符(NUL,'\0'
)。但是,在文件名中使用特殊字符不是一个好习惯,因为在删除特殊字符时会出现问题。
例如,我可以使用一个文件名,-ramesh.txt
然后尝试如下删除它。
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
我需要将文件删除为
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
也可以从此答案中找到更多详细信息。
/
我相信,在Linux和OS-X中,只禁止可打印的ASCII集。某些字符(如shell的元字符*?!
)会在命令行中引起问题,并要求文件名用适当的引号引起来或转义。诸如ext2,ext3之类的Linux文件系统是字符集不可知的(我认为它们或多或少地将其视为字节流-只能为空,并且
/
被禁止)。这意味着您可以使用UTF-8编码存储文件名。我相信要由外壳程序或其他应用程序知道使用哪种编码来正确转换文件名以进行显示或处理。
综上所述,问题不在于文件名中使用特殊字符,而在于如何处理它们。
-
而是为了精确起见:1)您绝对不需要该文件名周围的引号,2)--
您可以完全按照其rm
本身的含义进行操作,而不是使用特殊参数:rm ./-ramesh.txt
因此,您不需要这样做完全按照您的建议。
您的研究几乎是正确的。可以在文件名中使用特殊字符,但是由于这些字符具有特殊含义,因此不建议使用。Linux中的文件命名约定还描述了对文件名的其他限制,例如“文件名绝不能以连字符开头”。
在文件名中使用特殊字符执行命令行操作的简单示例。
作为个人说明,我宁愿避免在文件名中使用特殊字符,因为在将这些文件用于任何处理时,它们需要特别注意。因此,从开发过程中消除了处理特殊字符的问题。
-
,_
并.
在文件名(点)?