数据流与重定向
什么是数据流重定向?
使用数据流重定向
#在Ubuntu里不支持,不过18.04支持,'ll' 是'ls -l' 的缩写
ll /
#输出重定向
ll / > ~/rootfiles
#进行操作,并将输出转到rootfiles中
ll ~/rootfiles
#-------------------------------------------
• 标准输出流stdout默认情况下将数据输出到device
• 使⽤>将数据输出重定向到⽂件
• >默认为覆盖⽂件内容,如果要追加则用>>
-
#替换成 ubuntu 代码 sudo find /home -name .bashrc #查询结果:/home/yuez/.bashrc #总结一下 #将错误信息重定向,就在命令最后加 2> errorfile(文件名) #将正确信息重定向,就在命令最后加 > infofile(文件名),如果和上边的一块用,就同时重定向两种信息,就是把信息分流了 #要忽略错误信息,就在命令最后加 2> /dev/null
-
#修改文件 demofile的内容;并按Ctrl + d 结束输入 cat > demofile #如果文件不存在则会创建; #如果文件存在:因为使用的是'>',所以会覆盖掉文件内容;使用'>>'则会继续添加 #简单的查看文件内容 cat demofile #输入重定向为 ~/.bashrc 文件 cat > demofile < ~/.bashrc #这里使用了'>'会覆盖掉原有内容,若修改为'>>'则会在文件最后输入 #输入重定向到键盘输入,这里的eof是结束时输入的字符 cat > demofile << "eof" #换成'>>'就可以在文件后添加 #------------------------------- • <:标准输⼊流默认从键盘输⼊ • <<:⽤于设定结束输入的关键字 • 这里的'~/'是返回当前用户的主目录,'.bashrc'是该目录下的一个文件
管道命令
管道命令执行原理
-
管道命令的界定符号为”|”
-
管道命令仅会处理stdout,对stderr会忽略
-
管道命令必须要能够接收来⾃前⼀个命令的数据作为stdin
-
说白了,管道命令是几个命令组合,中间用 | 分开,前一个的输出(stdout)作为后一个的输入(stdin),忽略掉所有的(stderr)
常用管道命令
选取命令 cut 和 grep
cut
值得注意的是 cut 命令是“竖着切”,即每一行都会切。如下:
grep
举个例子:
首先 运行last命令,得到:
之后开始用管道命令’grep‘进行选取:
因为 grep -i 是不区分大小写,可以嵌套进其他的命令,故没有列出;
其他的命令也可以嵌套,但是一旦嵌套上 ‘-c’ 就会只输出数字
排序命令sort、wc、uniq
sort
wc
实操发现 wc 后不跟命令的话就是默认三个都显示:
uniq
归档压缩和软件安装