阅读目录
- 1. 标准输入输出
- 2.输入输出重定向
- 3.tr命令
- 4. 管道和tee
- 5.练习
1、标准输入输出
(1)linux 给程序提供三种I/O设备
标准输入 :(STDIN) — 0 默认接受来自键盘的输入
标准输出 :(STDOUT) — 1 默认输出到终端窗口
标准错误 :(STDEER) — 2 默认输出到终端窗口
(2)输入设备有:键盘、鼠标、扫描仪、摄像头等
输出设备有:打印机、显示器、投影仪等
2、输入输出重定向
〉正确输出
2〉错误输出
&〉全部输出(覆盖重定向)
>文件内容会被覆盖
set -C :禁止将内容覆盖已有文件,但可追加
>| file :强制覆盖
set +C 允许覆盖
>> 原有内容基础上,追加内容
文件不存在时,>和>> 都能创建新文件,文件已存在时 >表示覆盖,>>表示追加
2>&1 把错误的结果转成正确的结果
1>&2 把正确的结果转成错误的结果
():合并多个程序的STDOUT
cal 2007;cal 2008
(cal 2007 ; cal 2008 ) >all.txt
** 3、tr命令
tr 转换和删除字符
tr [OPTION] ....SET1[SET2]
选项:
-c -C --complement:取字符集的补集
-d --delete:删除所有属于第一个字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独的一个字符表示
-t --truncate-set1:将第一个字符集对应字符转换为第二字符集对应的字符
从文件中导入STDIN
(1) 使用<来重定向标准输入
(2)某些命令能够接受从文件中导入的STDIN
Tr ‘a-z’ ‘A-Z’< /etc/issue 该命令会把/etc/issue中的小写字符都转换成大写字符
(3) tr -d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符
(4) cat > file
Mage
wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入
使用“<<终止词”把多行重导向给STDIN
4、管道和tee
使用符号“|”表示,用来连接命令
命令1 | 命令2 | 命令3 ...
组合多种工具的功能:
ls | tr `a-z` `A-Z`
less : 一页一页的查看输入 ls -l /etc | less
mail :通电子邮件发送输入 echo "test email" | mail -s "test" [email protected]
tee:从标准输入读取,写入到标准输出,并保存到文件中
5、练习
1、计算1+2+3+..+99+100的总和
echo 1+2|bc echo {1..100} echo {1...100} |tr " "+|bc
2、 一个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
3、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
who | tr [a-z] [A-Z] > /tmp/who.out
4、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
cat /etc/issue |tr a-z A-Z > /tmp/issue.out
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"
原文地址:http://blog.51cto.com/13572399/2060869