I/O(IN Out)重定向(本来位置被改到别处位置):
指的改变默认输入输出的位置
程序:数据+指令 IO
可用于输入的设备:文件
键盘设备,文件系统上的常规文件,网卡等
可用于输出的设备:文件
显示器,文件系统上的常规文件,网卡等;
程序的数据流有三种:
输入的数据流:<— 标准输入(stdin),键盘;
输出的数据流:—> 标准输出(stdout),显示器;
错误输出流: —> 错误输出(stderr),显示器;
标准输出重定向:> 特性:覆盖输出
~]# date > date.log
~]# cat date.log
Tue Mar 28 01:30:46 CST 2017
标准输出追加重定向: >> 特性:追加输出
Set: 控制bash的特性
set -C 禁止将内容覆盖到已经有的文件 特殊保护机制
此时可使用强制覆盖输出: >
set +C 关闭上述输出:
标准错误输出重定向:2>, 2>>
~]# fdfdfdfd > date.log
bash: fdfdfdfd: command not found…
~]# fdfdfdfd 2> date.log
~]# cat date.log
bash: fdfdfdfd: command not found…
~]# fdfdfdfd 2>> date.log
~]# fdfdfdfd 2>> date.log
~]# cat date.log
bash: fdfdfdfd: command not found…
bash: fdfdfdfd: command not found…
合并正常输出流和错误输出流:
(1) &>, &>>
(2) COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
~]# date &> date.log
~]# cat date.log
Tue Mar 28 01:33:55 CST 2017
~]# datefdfd &> date.log
~]# cat date.log
bash: datefdfd: command not found…
特殊设备: /dev/null
[root@MFX2 ~]#ls /var &> /dev/null
[root@MFX2 ~]#echo $?
0 (状态值) 表示成功即目录存在
[root@MFX2 ~]#ls /varr &> /dev/null
[root@MFX2 ~]#echo $?
2 表示失败即目录不存在
标准输出重定向到date.log 标准错误输出重定向到date2.log
~]# date22 > date.log 2> date2.log
&> &>> 将标准输出和标准错误输出(覆盖|追加)同一个文件
~]# date &> date.log
~]# cat date.log
Tue Mar 28 01:40:48 CST 2017
~]# date &>> date.log
~t]# cat date.log
Tue Mar 28 01:40:48 CST 2017
Tue Mar 28 01:41:14 CST 2017
~]# datefdfd &>> date.log
~]# cat date.log
Tue Mar 28 01:40:48 CST 2017
Tue Mar 28 01:41:14 CST 2017
bash: datefdfd: command not found…
标准输入重定向: <
tr [OPTION]… SET1 [SET2]
把输入的数据当中的字符,凡是在SET1定义范围出现的,通通对位换为SET2出现的字符;
用法1:
tr SET1 SET2 < /PATH/FROM/SOMEFILE
用法2:
tr -d SET1 < /PATH/FROM/SOMEFILE
注意: 不修改原文件
~]#tr ‘a-z’ ‘A-Z’ < /etc/issue > issue.log
~]#cat issue.log
CENTOS RELEASE 6.8 (FINAL)
KERNEL \R ON AN \M
-c 取指定字符的补集
~]# tr -d -c ‘0-9’ < /etc/fstab
tr -d ‘0-9’ < ./fstab > ./fstab 是不会成功的
-s “s“ 对重复字符去重
Here document(此处创建文档): <<
cat << EOF
cat > /PATH/FROM/SOMEFILE <<EOF
cat >> shanghai.log << ‘EOF’
where are you from,I’m from $SHELL
EOF
加引号与不加引号的区别
加引号(双引号和单引号)输入内容里面的变量是不会被替换
不加引号的话 输入的内容里面变量会被替换
结束符不一定要使用EOF,可以使用其他任意字符。
写一个脚本 脚本定义个配置文件,执行脚本的时候自动生成自定义的配置文件
#!/bin/bash
cat >> my.cnf << EOF 或者 ‘EAD’
a=b
b=c
EAD
…
原创文章,作者:MFX,如若转载,请注明出处:http://www.178linux.com/72470
评论列表(1条)
总结了bash的一些特性,和linux下的一些基础的命令,内容写的很好,排版上可以再往好的弄弄