linux怎么在文件前面加井号,Linux 下如何处理包含空格和特殊字符的文件名

处理名字包含井号(#)的文件

符号#在 BASH 里有非常特别的含义。#之后的一切都会被认为是评论,因此会被 BASH 忽略。

通过例子来加深理解:

创建一个名字是 #abc.txt 的文件:

$ touch#abc.txt

测试输出

touch:missing file operand

Try'touch --help'formore information.

出现上面错误的原因是,BASH 将 #abc.txt 解释为评论而忽略了。所以命令 touch没有收到任何文件作为参数,所以导致这个错误。

要解决这个问题,你可能需要告诉 BASH 不要将 # 解释为评论。

$ touch./#abc.txt

或者

$ touch'#abc.txt'

检查刚创建的文件:

$ ls-l

total0

-rw-r--r--1avi avi0Jun812:14#abc.txt

现在创建名字中除了开头的其他地方包含 # 的文件。

$ touch./a#bc.txt

$ touch./abc#.txt

或者

$ touch'a#bc.txt'

$ touch'abc#.txt'

运行 ‘ls -l‘ 来检查:

$ ls-l

total0

-rw-r--r--1avi avi0Jun812:16a#bc.txt

-rw-r--r--1avi avi0Jun812:16abc#.txt

如果同时创建两个文件(比如 a 和 #bc)会怎么样:

$ touch a.txt#bc.txt

检查刚创建的文件:

$ ls-l

total0

-rw-r--r--1avi avi0Jun812:18a.txt

很明显上面的例子中只创建了文件 a 而文件 #bc 被忽略了。对于上面的情况我们可以这样做,

$ touch a.txt./#bc.txt

或者

$ touch a.txt'#bc.txt'

检查一下:

$ ls-l

total0

-rw-r--r--1avi avi0Jun812:20a.txt

-rw-r--r--1avi avi0Jun812:20#bc.txt

可以这样移动文件:

$ mv./#bc.txt./#cd.txt

或者

$ mv'#bc.txt''#cd.txt'

这样拷贝:

$ cp./#cd.txt./#de.txt

或者

$ cp'#cd.txt''#de.txt'

可以使用你喜欢的编辑器来编辑文件:

$ vi./#cd.txt

或者

$ vi'#cd.txt'

$ nano./#cd.txt

或者

$ nano'#cd.txt'

这样删除:

$ rm./#bc.txt

或者

$ rm'#bc.txt'

要删除所有以井号(#)开头的文件,可以这样:

# rm ./#*

处理名字包含分号(;)的文件

如果你还不知道的话,分号在 BASH 里起到命令分隔的作用,其他 shell 可能也是一样的。分号作为分隔符可以让你一次执行几个命令。你碰到过名字包含分号的文件吗?如果没有的话,这里有例子。

创建一个名字包含分号的文件。

$ touch;abc.txt

测试输出

touch:missing file operand

Try'touch --help'formore information.

bash:abc.txt:commandnotfound

出现上面错误的原因是,在运行上面命令的时候 BASH 会把 touch 解释为一个命令但是在分号前没有任何文件参数,所以报告错误。然后报告的另一个错误找不到命令 abc.txt,只是因为在分号后 BASH 会期望另一个新的命令,而 abc.txt 并不是一个命令。

要解决这个问题,我们得告诉 BASH 不要将分号解释为命令分隔符,��如:

$ touch./';abc.txt'

或者

$ touch';abc.txt'

注意:我们将文件名用单引号 '' 包含起来。这样可以告诉 BASH 分号 ; 是文件名的一部分而不是命令分隔符。

对名字包含分号的文件和文件夹的其他操作(就是,拷贝、移动、删除)可以直接将名字用单引号包含起来就好了。0b1331709591d260c1c78e86d0c51c18.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值