使用linux shell命令时小心转义符号

shell命令1

grep " " /tmp/1

 这个命令比较简单,就是把/tmp/1文件中包含空格的行列出来。

 

如果我们想先ssh到某台机器上再运行这个shell命令1,

你也许会尝试:

ssh 127.0.0.1 grep " " /tmp/1

 但是很快你会发现行不通。

因为ssh拿到的“ ”之后,两个引号就消失了,

然后传递给grep运行的时候,直接就是一个空格,也就相当于没有参数了。

 

正确的写法应该是将两个需要传给grep的引号用附上转义符,如下

shell命令2

ssh 127.0.0.1 grep "\" \"" /tmp/1

 

我们知道grep拿到的参数是“ ”,已经没有转义符了,它就是一个空格,

我们再来一层,如果ssh到一台机器然后在ssh到另一台机器,执行shell命令1,那将会是怎么样?

其实也不难,每传递一次参数就会减少一层转义符,

所以我们要把给第二个ssh的参数中的特殊符号全部转移一遍!

shell命令3

ssh 127.0.0.1 ssh 127.0.0.1 grep "\"\\\" \\\"\"" /tmp/1

 

通过grep监控或查看远端服务器时,可能就会遇到这个问题。

当然如果不用grep到特殊字符,也不用使用引号将有空格的pattern引起来,可以不用理会这点。

如果先将参数传给自己写的脚本,然后在执行上面的shell命令,那也同样需要多一层转义。

 

 匹配任意字符.*

' ', '-','\', '+'等字符在正则表达式中都要转义

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值