常用的 echo 和 cat,这次让我折在了特殊字符丢失问题上
摘要:用过 linux 的都知道,echo 和 cat 是我们常用的展示内容和写入内容的方式。
本文分享自华为云社区《echo和cat,重定向到文件时,解决特殊字符丢失问题》,作者: 大金(内蒙的)。
概述:
用过 linux 的都知道,echo 和 cat 是我们常用的展示内容和写入内容的方式。
最近在使用这两个最简单的命令时,遇到了特殊字符写入失败问题。
这里重新学习一下 echo 和 cat 两个命令,记录一下。
三种失败场景
问题现象 1:echo 使用了-e 但是特殊字符还是生效了
命令:
结果:
解释:
echo 会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
可用参数说明:
-n 不要在最后自动换行-e 若字符串出现以下字符,仍以特殊字符处理。
特殊字符如下:
问题现象 2:cat 内容中带有 $符号,字符丢失
命令:
结果:
解释:
cat 内容中带有 $变量的时候会将 $和变量名 变成空格,可以添加转义字符\搞定。也可以是将前面的 EOF,增加‘’或者“”或者\,都可以解决,即是’EDF’,“EOF”,\EOF。
问题现象 3:<<- 重定向时,制表符消失
命令:
注意这里是 <<- EOF
结果:
解释:
Here Document 是在 Linux Shell 中的一种特殊的重定向方式。
基本形式:
作用:
将两个 delimiter 之间的内容(Here Document Content 部分) 传递给 cmd 作为输入参数;
注意事项如下:
@1、EOF 只是一个标识而已,可以替换成任意的合法字符
@2、作为结尾的 EOF 前后不能有任何字符
@3、作为起始的 EOF 前后的空格会被省略掉
@4、重定向增加参数"-"的时候。会清除中间内容的制表符
总结
往文件里面写内容的最好方式是啥呢?
使用 Here Document 写法
转义 EOF 这个特殊字符
追加内容的场景:
覆盖内容的场景:
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/0981a28ef68c30f3e1d4ceefc】。文章转载请联系作者。
评论