Linux中创建文件名为特殊字符(#、*、-等)的文件

CentOS6.9中用touch命令创建名字为#的文件时报错

[root@sotneC6 tmp]# touch #
touch: missing file operand
Try `touch --help' for more information.

百度了一下,发现原因是shell把特殊字符#解释为注释符,所以touch后面因缺少操作数报错。解决方法有两个:一是将文件名加上单引号;二是指明文件的绝对路径或相对路径(不能直接是文件名)。(参考:如何在Linux中操作文件名有空格和特殊字符

[root@sotneC6 tmp]# touch '#'    # 扩单引号的文件名
[root@sotneC6 tmp]# ls
*  #
[root@sotneC6 tmp]# touch ./#	 # 指明相对路径的文件名
[root@sotneC6 tmp]# ls
*  #
[root@sotneC6 tmp]# touch "#"	 # 扩双引号的文件名
[root@sotneC6 tmp]# ls
*  #

创建名字为!和@的文件名是可以正常创建的

[root@sotneC6 tmp]# touch ! @
[root@sotneC6 tmp]# ls
!  @  #

以其他特殊字符*、?、.、…、/、-为文件名的文件无法正常创建,需按以上方法特殊处理

[root@sotneC6 tmp]# touch '*' "?" ./. '..' '/' '-'
[root@sotneC6 tmp]# ls
!  ?  @  *  #
[root@sotneC6 tmp]# touch ./-
[root@sotneC6 tmp]# ls
-  !  ?  @  *  #

输入命令后发现 . … / 这三个特殊符号不适用以上方法创建,有点麻烦,应该是shell把三个符号分别解释为当前目录、当前目录上一级目录和根目录。查阅资料得知不能创建文件名包含/的文件除非有Unicode支持。名字为/的文件先不管了,找到一种方法可以让文件名包含.和…(用\让shell忽略下一个字符,得到文件名开头为空格的文件)

[root@sotneC6 tmp]# touch \ .
[root@sotneC6 tmp]# ls
 .  -  !  ?  @  *  #
 [root@sotneC6 tmp]# touch \ ..
[root@sotneC6 tmp]# ls
 .   ..  -  !  ?  @  *  #

至此,创建了文件名为- ! ? @ * #和名字包含. …的文件

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值