Linux中的文本流
echo笔记
>>追加到文件结尾
参考: https://blog.51cto.com/laokebang/1891432
echo "net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
>覆盖文件
# 会将1.txt原内容覆盖
echo "123" > 1.txt
-e启用转义字符
# 启用转义字符
echo -e "\e[1;31mThis is red text\e[0m"
使用-e
选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
● \a
发出警告声
;
● \b
删除前一个字符
;
● \c
不产生进一步输出 (\c
后面的字符不会输出);
● \f
换行但光标仍旧停留在原来的位置;
● \n
换行且光标移至行首;
● \r
光标移至行首,但不换行;
● \t
插入tab
;
● \v
与\f
相同;
● \\
插入\
字符;
● \nnn
插入 nnn(八进制)
所代表的ASCII
字符;
echo单引号和双引号的区别
单引号' '
,双引号" "
的区别:
- 单引号’‘剥夺了所有字符的特殊含义,单引号’'内就变成了单纯的字符。
- 双引号"“则对于双引号”"内的参数替换($)和命令替换(``)是个例外。
Linux中的文本流
文本流
存在于 Linux 的每一个进程
中
Linux 的每个进程启动
时,会打开三个文本流的端口:
标准输入
标准输出
标准错误
这三个端口
对应着一个程序
的输入
、输出
和异常的抛出
例如:
在 bash 中输入一串字符后,bash 进程中的标准输入
端口捕获命令行中的输入
,进行处理后从标准输出
端口中传出
,回显
在屏幕上;
如果处理过程中发生异常
,则会通过标准错误
端口,将异常回显
在屏幕上。
>
: 正确信息
的重定向(只收集前面命令的正确输出)
2>
: 错误信息
的重定向,(只收集前面命令的错误输出)
&>
: 混合
重定向,收集前面命令的正确与错误输出
输出重定向
覆盖重定向>
覆盖重定向
需要以END开始
,以END结束
.
cat > 1.txt <<END
> 1
>
> END
# 再执行一次
cat > 1.txt <<END
> 2
> END
# 查看1.txt讲第一次是写入信息清空了
cat 1.txt
2
输出追加>>
使用这种方式会将程序的标准输出追加
至文件的末尾
# 将标准输出追加到文件中:
ls >> dir_log
小写end
是追加符
.
cat >> 1.txt <<end
> 3
> 4
> end
# 查看1.txt
cat 1.txt
EOF结束符
<<EOF
表示当遇到EOF时结束输入
。
END
和EOF
的区别:
https://blog.csdn.net/robin90814/article/details/86705155
cat>file<<EOF
主要用于分行写入文件
,以EOF(文件结束符)
为结尾结束输入
.
输入重定向
格式:command < inputfile
# 将右边的文件作为标准输入,然后传入左边的命令
wc -l < /dev/file
内联输入重定向:
格式: command << maker
输出重定向需要文件,而内联输入重定向
可以使用即时输入的文本
作为标准输入,传入左边的命令 右边的字符“maker
”作为标志
,表示标准输入
的开始
和结束
,自身不包含在标准输入里。
# 输入
$less << EOF
> item1
> item2
> item3
> EOF
# 敲回车
显示如下图:
黑洞重定向
1
表示stdout 标准输出
2
表示stderr 标准错误
2>&1
是将错误输出
到标准输出
。
1>
指标准信息输出路径(也就是默认的输出方式)
2>
指错误信息输出路径
2>&1
指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)
禁止输出
>/dev/null 2>&1
作用如下:
• >
是重定向
• /dev/null
代表空设备文件
• 1
表示stdout标准输出,系统默认值是1,所以 “>/dev/null” 等同于 "1>/dev/null“
• 2
表示stderr标准错误
• &
表示等同于的意思,2>&1
,表示2
的输出重定向等同
于1
简便写法
# 黑洞重定向
&>/dev/null
示例
# 执行的命令 >> /dev/null 2&1
systemctl disable firewalldd.service >> /dev/null 2>&1
# 将所有输出都丢弃
systemctl disable firewalldd &>/dev/null
覆盖重定向和追加重定向
# 将/etc/passwd的前两行 覆盖追加到abc09.txt
head -2 /etc/passwd > /opt/abc09.txt
# 将主机名追加到abc09.txt
hostname >> /opt/abc09.txt