Sho*_*opi 2 ls special-characters filenames
我需要创建一个名为*'test'*
如果我写touch \'test\'
ls节目'test'
但如果我写touch \*\'test\'\*
ls现在显示*'\''test'\''*
有什么窍门?有人可以解释我做错了什么吗?
我的操作系统是 Ubuntu 20.04
问题是 GNUls试图通过以明确的引用格式输出奇怪的文件名来提供帮助,类似于在 shell 中输入它们以获得相同名称的方式。
有时它会有所帮助,有时只会增加混乱。要关闭该功能,请设置控制环境变量:
\nexport QUOTING_STYLE=literal\nls\nRun Code Online (Sandbox Code Playgroud)\n或者使用相应的命令行标志:
\nls --quoting-style=literal\nRun Code Online (Sandbox Code Playgroud)\n或更短的ls -N.
您可以通过引用来创建带有奇怪字符的文件名:
\ntouch "*\'test\'*" # \xc2\xab *\'test\'* \xc2\xbb\nRun Code Online (Sandbox Code Playgroud)\n请记住,具有不同类型引号的字符串可以相邻(这里我们有一个单引号字符串,后面紧跟一个双引号字符串),因为它是在执行命令行之前处理带引号的字符串的 shell:
\ntouch \'Quotes "here" at\'" 5 o\'clock" # \xc2\xab Quotes "here" at 5 o\'clock \xc2\xbb\n# \'\xe2\x86\x90-first-string-\xe2\x86\x92\'"\xe2\x86\x90-second-\xe2\x86\x92"\nRun Code Online (Sandbox Code Playgroud)\n你的例子:
\ntouch \\\'test\\\' # \xc2\xab \'test\' \xc2\xbb\ntouch \\*\\\'test\\\'\\* # \xc2\xab *\'test\'* \xc2\xbb\n\nls -1 --quoting-style=literal # List files one per line\n *\'test\'*\n \'test\'\nRun Code Online (Sandbox Code Playgroud)\n