一.三种I/O设备
- 标准输入(STDIN) -0 默认接受来自键盘的输入
- 标准输出(STDOUT) -1 默认输出到终端窗口
- 标准错误(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