定义:
数据流重定向大概是指把数据传导到文件或者屏幕去.
standard output: 顾名思义,标准输出指命令执行回传的正确信息.
standard error output: 标准错误输出,指命令执行失败,传回的错误信息.- 查询命令 + > + File
如果File不存在,则系统会自动创建File并且把命令执行结果写入File,如果File已经存在,则原本文件内容会被清空,而执行结果重新写入,可以理解为覆盖掉原来的信息. 查询命令 + >> + File
与上面的区别就在于,如果文件存在,执行结果会继续写入,保留原来的文件内容, 是在原来文件基础上增加信息.查询命令 + n+>> + File
- n=1,把正确的数据以累加的方式输出到指定File
- n=2,把错误的数据以累加的方式输出到指定File
所谓的错误信息就比如,如果你的Linux创建了多个user,你输入find /home -name .bashrc会提示正确的和错误的信息(Permission denied).所以你可以通过 find /home -name .bashrc > list_right 2> list_error把正确和错误的信息写到不同文件. - 如果是写入一个文件的话,语法稍微麻烦一点: find /home -name .bashrc > list 2> list或者 find /home -name .bashrc > list 2>&1
- cat + > + file 这个符号比较形象可以理解为写入
创建一个file并且下方让你输入直到你按ctrl+d,表示结束输入.
我们还可以用一个文件的信息来输进去,
cat > 哇哈哈 < ~/another_file - cat + > + file << “结束指令”
当你输入结束指令并且按回车之后,会自动认为你写入结束,其中结束指令可以你自己规定. - 命令判断依据: ; && ||
- ; :不考虑相关性的连续命令执行.鸟哥举的例子是:sync; sync; shutdown -h now执行两次写入磁盘再来关机.
- $? && ||
- $? :表示命令的执行结果,和一般编程的思想相反,非零表示失败,零表示成功执行.
- && : 比如,cmd1 && cmd2 ,如果cmd1执行正确($?=0),cmd2才会执行.
比如:ls /tmp/A_test && touch /tmp/A_test/ABC 逻辑上表示,如果/tmp/A_test目录存在则列出信息,如果不存在就在目录下touch一个文件 - || :比如,cmd1 || cmd2 ,如果cmd1执行正确($?=0),cmd2不会执行.如果cmd1执行错误,cmd2才执行.
比如:
ls /tmp/abc || mkdir /tmp/abc 显而易见,它表示如果目录不存在就创建目录
管道命令:首先,要知道管道命令仅仅能处理前面一个命令传来的正确信息(standard output),对于错误信息没有直接处理能力(standard error).
- 对于standard error管道命令会忽略
- 管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行
管道命令常用功能:
- cut,字面意思就是切取一段信息
cut -d +’分割单位’ -f 3,5表示 提取以:为分割单位的第3段和第5段内容. - grep,筛选指定行.
last 执行结果有很多登录者不同时间的信息,如果我们要筛选只有reboot的行,可以敲 last | grep ‘reboot’
如果反选,则 last | grep -v ‘reboot’
- sort,排序.
如果要指定对某一列排序,比如根据passwd这个文件内容的第三列排序:
则可以cat /etc/passwd | sort -t ‘:’ -k 3
注意的是:此处排序是按文字类型排序,不是简单的数字大小排序.所以如果要按常规排,要敲入:cat /etc/passwd | sort -t ‘:’ -k 3 -n - uniq,unique(独一无二)的缩写,去除重复行.
-c表示统计数量.意味着,每个用户的登陆次数. - wc,统计行数,字数和字符数
也可以直接单独计算文件含有行数(-l),英文单字(-w)和字符数(-c)
参考资料<鸟哥linux私房菜基础学习篇>p328-337
Linux学习笔记(7)----数据流重定向
最新推荐文章于 2024-05-30 19:51:20 发布