Linux学习-标准输入输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习-标准输入输出相关的知识,希望对你有一定的参考价值。
标准输入输出重定向—— Linux下任何一个命令的执行,他都会经过下图所示的流程:
目录
三种I/O设备
把I/O重定向入文件
tr
使用管道链接命令
实际案例
一、I/O设备
Linux提供了三种I/O设备:
标准输入(STDIN)-0默认接受来自键盘的输入
标准输出(STDOUT)-1默认输出到终端窗口
标准错误(STDERR)-2默认输出到终端窗口
操作符号:
1> 或者 > 正确输出到文件
2> 错误输出到文件
> 覆盖
2>> 追加
文件存在:>和>>都可以创建新文件
文件不存在:> 覆盖 >> 追加
set -C 禁止覆盖,但可追加
>|+文件名 强制覆盖
set +C 允许覆盖
&> 全部输出文件
2>&1 把错误的转成正确的
1>&2 把正确的转成错误的
() 合并多个程序的输出
例如:(cal 2007;cal 2008) > all.text
tr 转换字符
例如:
tr abcd 123 将a转换成1,b转换成2,cd转换成3
tr abc 1234 将a转换成1,b转换成2,c转换成3,4无效
tr -t abcd 123 将a->1,b->2,c->3,d无效
tr -d a 将a字符串删除
echo hello 123 world | tr -cd 0-9 只有留下0-9,将输入文本中不在补集中的所有字符全部删除(有点绕)
运行结果截图
tr -s ab 将多个连续的a和b转换成一个a和b
tr a [:punct:] 会报错
< 输入重定向
tr -d abd < /etc/fstab 删除fstab文件中所有abc的任意字符
cat > file 然后输入内容,Ctrl+d离开 变相的一种输入方式
cat > file3.txt < /etc/fstab 将fstab的内容复制到file3.txt
视频56.03处截屏
<< 终止词 ******多用在脚本中******
cat > file4.txt << EOF
视屏57.19处截屏
| 管道 --将前边的输出的正确结果传递给下一条命令执行
可以利用 2>&1 | 将错误结果也能传递给管道
less 翻页查看输出
ls -l /etc | less
mail -s "主题" +用户名 --电子邮件发送给指定用户
用户lisi发送主题为test,内容为hello world 的邮件给用户zhanshan,结果图如下:
和管道符结合使用:
echo hello world | mail -s "test" +username
案例:
1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
cat /etc/issue |tr a-z A-Z > /tmp/issue.out
tr a-z A-z < /etc/issue > /tmp/issue.out
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
who | tr [a-z] [A-Z] > /tmp/who.out
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
Hello, I am 用户名,The system version is here,please help me to check it ,thanks+操作系统版本信息
echo -e Hello,I am `whoami`,The system version is here,Please help me to check it,Thanks."\n"`cat /etc/redhat- release` | mail -s help root
4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开
ls -1 /root/ |tr "\n" " "
5、计算1+2+3+..+99+100的总和
echo {1..100} |tr " " + |bc
6、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格
echo "xt.,l 1 jr#hat-releasemn 2 c*/fe 3 uz 4" | tr -cd [:digit:][:blank:]
7、将PATH变量每个目录显示在独立的一行
echo $PATH |tr : "\n"
以上是关于Linux学习-标准输入输出的主要内容,如果未能解决你的问题,请参考以下文章