常用的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
常用的echo和cat,这次让我折在了特殊字符丢失问题上的更多相关文章
- linux命令echo和cat比较
当前主要比较echo 和 cat的重定向功能 1.echo 1 > /proc/xxx 解析: echo 进行重定向的时候,仅仅是将字符"1" 输出到 /proc/xxx文件 ...
- [Linux]常用命令之【cat/echo/iconv/vi/grep/find/head/tail】
cat cat [选项] [文件].. # 一次显示整个文件或从键盘创建一个文件或将几个文件合并成一个文件 cat -n file1 # 编号文件内容再输出 echo -n 输出后不换行 -e 遇到转 ...
- 查看日志文件常用命令:tail,cat,tac,head,echo
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- shell-输入与输出<echo, read, cat, tee >
1. echo echo命令可以显示文本行或变量,或者吧字符串输入到文件. 用法:echo [option] string #[option]可选:-e ==>解析转移字符,(常用的\n & ...
- echo 和 cat 的 区别
tt="1 10 17 10-134-9-154.xml" echo $tt 只是单纯地打印出tt保存的这些变量 cat $tt 则会对tt 中保存的变量文件挨个打印出来
- Linux echo和cat和grep和tr的基础用法
Linux vim 搜索 echo : 显示输出功能 echo oldboy>1.txtx cat 1.txtx > 重定向 文件内容覆盖 >> 追加重定向 ...
- 【Shell案例】【tail/head/sed、echo $res ·· cat和管道】2、打印文件的最后5行
描述经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行示例:假设 nowcoder.txt 内容如下: #include& ...
- linux常用命令 echo输出命令
echo输出命令 'echo [选项] [输出内容]' 选项 '-e' 支持反斜线控制的字符转换 控制字符 \a 输出警告音 \b 退格键,也就是向左删除键 \n 换行符 \r 回车键 \t 制表符 ...
- 反弹Shell原理及检测技术研究
1. 反弹Shell的概念本质 所谓的反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端. 本文会先分别讨论: ...
- 02 python 必知
一.变量 1.变量的定义 将程序运算的中间结果临时存在内存里,以便后续代码调用. 2.变量的使用规范 1)变量必须要有数字,字母,下划线,任意组合. 2)变量不能数字开头. 3)不能是python中的 ...
随机推荐
- Django + celery + redis 执行异步任务及查看结果
官方文档 https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-wit ...
- c#中工厂模式详解
总体介绍: 工厂模式主要有三种类型:简单工厂.工厂方法和抽象工厂,该模式用于封装和管理对象的创建,是一种创建型模式. 万物皆对象,创建对象时必然需要new该对象,当需要更改对象时,需要把项目中 ...
- 🔥🔥Java开发者的Python快速进修指南:文件操作
Python提供的文件操作相对于Java来说,确实简单方便许多.不仅操作简单,代码可读性也相对较高.然而,我们需要注意的不仅仅是文件操作的简单性,还有文件操作的各种模式.在Java中,我们并不经常使用 ...
- 发现AI自我意识:进入混合增强只能的纪元
执行性思维:人工智能的现实优势 如何解构人类的思维模型是一个跨多学科的综合性问题.本文仅针对AI领域发展方向预测以及理解,提出一个简化的模型.我认为人类的思维基于思考的目的性可以分为:执行性思维和创造 ...
- 🔥🔥Java开发者的Python快速进修指南:面向对象基础
当我深入学习了面向对象编程之后,我首先感受到的是代码编写的自由度大幅提升.不同于Java中严格的结构和约束,Python在面向对象的实现中展现出更加灵活和自由的特性.它使用了一些独特的关键字,如sel ...
- 伯俊ERP与金蝶云星空对接集成连通应收单新增
伯俊ERP与金蝶云星空对接集成表头表体组合查询连通应收单新增(应收单-标准应收单(KD应收单销售退) 数据源系统:伯俊ERP 未来,伯俊科技也会砥砺前行,不断为品牌提供更全面的零售终端致胜利器.伯俊科 ...
- 三分钟使用github的技巧
一.GitHub搜索技巧--找开发者 搜索条件 备注 location: location:china,匹配用户填写的地址在china language: language:javascript,匹配 ...
- 手撸一个SpringBoot配置中心实现配置动态刷新
业务需求 SpringBoot项目配置信息大多使用@Value注解或者@ConfigurationProperties注解读取配置信息,线上项目经常需要对某些配置进行调整,如果每次都需要修改配置文件再 ...
- Java8新特性之-Map
Map一些新方法的具体使用案例 1.getOrDefault:default V getOrDefault(Object key, V defaultValue) package com.qbb.th ...
- 华企盾防泄密软件关于U盘无法注册问题
1.以管理员权限运行控制台注册 2.如果是非加密注册可在USB拔插日志中右键日志远程注册 3.检查USB的驱动程序注册表是否都有 4.换一台电脑安装控制台注册 5.检查是否有与驱动有关的程序卸载试试 ...