标准IO和管道

一.三种I/O设备

  1. 标准输入(STDIN) -0   默认接受来自键盘的输入
  2. 标准输出(STDOUT) -1  默认输出到终端窗口
  3. 标准错误(STDERR) -2   默认输出到终端窗口

程序:指令加数据

每个文件打开都有一个文件描述符(fd)

ll /proc/$$/fd      //可以查看文件的描述符

exec 8<>/data/hosts   //自己指定一个文件的描述符(数字)

I/O重定向:改变默认位置

ls  >  /dev/pts/5    重定向到其他窗口显示

ls  >  /data/ls.out      重定向到指定文件

cmd  2>  /data/err.log     重定向错误信息到指定文件

>    实现功能相当于覆盖

>|      实现强行覆盖

>>     相当于追加,保留文件原内容

set  -C   禁止覆盖

set   +C   允许覆盖

ls   /error  /data   >f1   2>f2    //实现标准输出和错误各保存在一个文件中

ls   /error  /data  >all.log   2>&1   //将标准输出和错误都放在同一个文件中

ls   /error  /data  &>all.log     或(ls   /error  /data   2>&1 )  >all.log

多条命令的输出重定向:例如(ls;pwd)  >  all.log

/dev/null    用来吸收消化不想输出的内容

>>    创建空文件(比touch更安全)

>    软链接文件    //清空原文件

<     标准输入重定向

echo redhat |passwd –stdin user     //实现修改用户user的口令

cat <f1 >f1    //将f1 文件清空

 

tr命令:   转换和删除字符

-c   取字符集的补集

-d   删除所有属于第一字符集的字符

-s     将连续重复的字符以单独一个显示

-t      将第一个字符集对应字符转化为第二个字符集对应的字符

 

cat   >f1    //创建一个空文件

aaaa   后回车   实现单行重定向

 

使用<<EOF或<<END  实现多行重定向 (指定结束词后,文本结束必有结束词)

 

dos2unix      //将Windows文件格式转换为Linux文件格式

unix2dos      //将linux文件格式转化为Windows文件格式

 

mail    命令:  发/收邮件

mail  -s  ‘hello’  user     //给用户user发邮件标题为hello

mail  -s  ‘hello’  user  <<END    //可手动输入多行邮件内容(可引用变量和命令)

mail  -s  ‘hello’  user  <mail.txt   //将文件内容作为邮件的内容来发送

mail    收邮件

 

二.管道:用于连接命令

命令1  |    命令2       命令1的标准输出作为命令2 的标准输入

hostname | tr ‘a-z’ ‘A-Z’     //输出大写的主机名

cat   mail.txt   |  mail  -s  ‘hello’  user      //将文件内容作为邮件的内容来发送

|&     可实现将错误信息转化为正确信息传给下个命令(旧版本不支持)

echo {1..100} | tr ‘ ‘ ‘+’ |bc     //实现1到100加和(或seq -s + 100 |bc)

 

tar 命令:打包文件

tar –cvf  –  /home  |  tar  -xvf  –     //打包文件后解包该文件

 

tee   重定向到多个目标

-a    追加

三.命令补充

mktemp   xxxx.log    //创建临时的文件或目录(名字随机)

touch f$[RANDOM%20]   用这条就行

systemctl enable autofs     //启用autofs功能

systemctl  autofs      //开启autofs功能后才可以挂载光盘

lsb_release   -a    //   查看操作系统版本信息(centos6中)

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/94700