常用的echo和cat,这次让我折在了特殊字符丢失问题上
摘要:用过linux的都知道,echo和cat是我们常用的展示内容和写入内容的方式。
本文分享自华为云社区《echo和cat,重定向到文件时,解决特殊字符丢失问题》,作者: 大金(内蒙的)。
概述:
用过linux的都知道,echo和cat是我们常用的展示内容和写入内容的方式。
最近在使用这两个最简单的命令时,遇到了特殊字符写入失败问题。
这里重新学习一下echo和cat两个命令,记录一下。
三种失败场景
问题现象1:echo使用了-e但是特殊字符还是生效了
命令:
echo -e 'aa\taa' > a.txt cat a.txt
结果:
解释:
echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
可用参数说明:
-n 不要在最后自动换行
-e 若字符串出现以下字符,仍以特殊字符处理。
特殊字符如下:
\a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \\ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符;
问题现象2:cat内容中带有$符号,字符丢失
命令:
cat << EOF > a.txt eth=pwd PATH=${eth} EOF
结果:
cat a.txt
解释:
cat内容中带有$变量的时候会将 $和变量名 变成空格,可以添加转义字符\搞定。
也可以是将前面的EOF,增加‘’或者“”或者\,都可以解决,即是’EDF’,“EOF”,\EOF。
问题现象3:<<- 重定向时,制表符消失
命令:
注意这里是 <<- EOF
cat <<- EOF > a.txt eth=pwd PATH=/\${eth} EOF
结果:
cat a.txt
解释:
Here Document 是在Linux Shell 中的一种特殊的重定向方式。
基本形式:
cmd << delimiter Here Document Content delimiter
作用:
将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数;
注意事项如下:
- @1、EOF 只是一个标识而已,可以替换成任意的合法字符
- @2、作为结尾的EOF前后不能有任何字符
- @3、作为起始的EOF前后的空格会被省略掉
- @4、重定向增加参数"-"的时候。会清除中间内容的制表符
总结
往文件里面写内容的最好方式是啥呢?
- 使用Here Document写法
- 转义EOF这个特殊字符
追加内容的场景:
cat << \EOF >> 文件名 文件内容 EOF
覆盖内容的场景:
cat << \EOF >文件名 文件内容 EOF

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TDSQL | DB·洞见回顾|基于LSM-Tree存储的数据库性能改进
LSM-Tree(Log Structured Merge Tree)是数据库领域内较高效的key-value存储结构,被广泛应用于工业界数据库系统,如经典的单机kv数据库LevelDB、RocksDB,以及被诸多分布式NewSQL作为底层存储引擎。 本期将由腾讯云数据库高级工程师韩硕来为大家分享基于LSM-Tree存储的数据库性能改进,重点介绍近年来学术界对LSM-Tree的性能改进工作,并探讨这些改进措施在工业界数据库产品中的应用情况以及落地的可能性。以下是分享实录: 1. LSM-Tree基本结构 LSM-Tree全称为“Log Structured Merge Tree”,是一种基于磁盘存储的数据结构。1996年Patrick O’Neil等人在信息系统期刊上发表了一篇题名为“Log Structured Merge Tree”的论文,首次提出LSM-Tree结构。相比于传统的B+树,LSM-Tree具有更好的写性能,可以将离散的随机写请求转换成批量的顺序写操作,无论是在RAM、HDD还是在SSD中,LSM-Tree的写性能都更加优秀。 作为高效的key-value存储结构,L...
- 下一篇
“千言”开源数据集项目全面升级:数据驱动AI技术进步
“千言”是由百度联合中国计算机学会、中国中文信息学会共同发起的面向自然语言处理的开源数据集项目,旨在推动中文信息处理技术的进步。近日,在2021年12月12日的WAVE SUMMIT+2021深度学习开发者峰会上,清华大学长聘副教授黄民烈作了题为“千言:数据驱动技术进步”的演讲,回顾了千言过去一年中取得的进展和广泛影响力,并发布了千言的全新升级,重点聚焦大模型时代的机遇和挑战。此外,还推出了“百+”计划,邀请更多的专家学者共同建设千言,构建世界范围内的中文NLP影响力。 中文开源数据集项目 “千言”获得广泛关注和使用 “千言”开源数据集项目自2020年8月发布以来,已经有来自清华、哈工大、中科院、美团、OPPO等14家单位的数据集作者加入共同建设,目前已经覆盖了10多个自然语言处理的任务,包含了开放域对话、机器阅读理解、机器同传、文本生成、情感分析等任务。“千言”为研究者提供了一站式的数据集浏览、整理、下载以及评测体验,受到了越来越多研究者的关注和使用,数据集下载量增长134%,相关任务的提交次数增长649%,增长非常显著。 此外,千言还推动了多项自然语言处理的评测,截至目前总共支持...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作