linux管道、重定向和查看命令

目录

二、linux管道、重定向和查看命令

1.管道:|

2.tee

3.重定向

4.文件内容浏览

5.文件内容过滤:grep

6.命令搜索

7. find 查找文件---按照文件名称、大小、类型、权限、日期等进行搜索


二、linux管道、重定向和查看命令

1.管道:|

(1)要求:将前面命令的标准输出作为后面命令的标准输入,可以有多层管道

(2)进程管道

(3)注意:

  • 管道命令只处理前一个命令正确输出,不处理错误输出。
  • 管道命令右边命令,必须能够接收标准输入流命令才行。

(4)示例:

例1:仅查看IP地址

[root@server ~]# hostname -I | cut -d" " -f1
192.168.174.123
[root@server ~]# ifconfig ens160 | grep "inet " | tr -s " " | cut -d" " -f3
192.168.174.123
[root@server ~]# ifconfig ens160 | awk '/inet / {print $2}'
192.168.174.123

例2:面试题:统计/etc/passwd中用户使用的shell类型

[root@server ~]# cut -d":" -f7 /etc/passwd |sort |uniq -c | sort -nr
[root@server ~]# awk -F: '{print $7}' /etc/passwd |sort |uniq -c| sort -nr

例3:将/etc/passwd中的用户按UID大小排序

[root@localhost ~]# sort -t":" -k3 -n /etc/passwd //以: 分隔,将第三
列按字数升序
[root@localhost ~]# sort -t":" -k3 -n /etc/passwd -r //逆序
[root@localhost ~]# sort -t":" -k3 -n /etc/passwd |head

2.tee

(1)作用:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

(2)示例:

[root@server ~]# date |tee date.txt---输出date命令,添加到文件date.txt中
Thu Oct 27 14:02:27 CST 2022
[root@server ~]# cat date.txt---查看date.txt文件
Thu Oct 27 14:02:27 CST 2022

-a或-append   附加到既有文件后面,而非覆盖它

[root@server ~]# date |tee -a date.txt
Thu Oct 27 14:06:05 CST 2022
[root@server ~]# cat date.txt
Thu Oct 27 14:04:30 CST 2022
Thu Oct 27 14:06:05 CST 2022

3.重定向

(1)分类:

  • 0 stdin---标准输入  默认是键盘
  • 1 stdout---标准输出  默认是屏幕(或终端)
  • 2 stderr---错误输出 默认是屏幕(或终端)

(2)输出重定向:本在终端输出,改变输出方向,输出到文件中。

<1> “>”、“>>”称为输出重定向操作符。

<2> 示例:

例1:>

[root@server ~]# date > date.txt
[root@server ~]# cat date.txt
Thu Oct 27 14:10:53 CST 2022

例2:">>"追加重定向,不覆盖源文件内容

[root@server ~]# date >> date.txt
[root@server ~]# cat date.txt
Thu Oct 27 14:11:08 CST 2022
Thu Oct 27 14:13:26 CST 2022

例3:错误输出的重定向

[root@server ~]# aaaa 2> err.txt
[root@server ~]# cat err.txt
bash: aaaa: command not found...

(3)输入重定向:原是键盘输入,现在通过文件输入,这种就是输入重定向

 <1> “<”、“<<”称为输入重定向操作符。

<2> 示例:

例1:将date.txt文件输入重定向到命令行中

[root@server ~]# cat < date.txt
Thu Oct 27 14:11:08 CST 2022
Thu Oct 27 14:13:26 CST 2022

例2:统计文件安装行数

[root@server ~]# wc -l < date.txt
2

(4)示例:

例1:正确输出和错误输出同时保存到文件

法1:[root@server ~]# ls /tmp /ttttt &> all.txt
法2:[root@server ~]# ls /tmp /ttttt > all.txt 2>&1

例2:正确输出和错误输出重定向到空设备---/dev/null

[root@server ~]# ls /tmp /tttt &> /dev/null---将产生的输出丢掉

工作中主要应用场景:

[root@server ~]# ping -c2 www.baidu.com &> /dev/null
[root@server ~]# echo $?
0---结果为0代表ping通了,不为0代表没ping通

(5)主要使用:

使用形式功能
命令 >文件或 者:命令 1>文 件将命令执行后的输出信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定 文件中,若指定的文件不存在,则自动创建该文件
命令 2>文件将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件
命令 &>文件将命令执行后的输出信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件
命令 2>/dev/null将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件中,即将输出的错误信息丢弃掉
命令>>文件将命令执行后的输出信息以追加的方式写入到指定的文件中
命令<文件使命令从指定的文件中读取输入数据
命令<<结束标 识字符串读取命令行输入,直到遇到输入行为指定的结束标识字符串

例:命令<<结束标 识字符串

[root@server ~]# cat > hello.txt << EOF
> hello world
> EOF

4.文件内容浏览

(1)cat:默认显示最后一屏

<1> 格式:cat [选项] 文件名列表

<2> 常用选项:

  • -n——对输出内容中的所有行标注行号。
  • -b——对输出内容中的非空行标注行号。

(2)分页查看文件内容--- more 和 less 命令

<1> 格式:more | less [选项] 文件名

<2> 常用选项:

  • -数字——仅适用于more命令,用来指定分页显示时每页的行数。
  • +num——指定从文件的第num行开始显示。
  • -c——从顶部清屏然后显示文件内容。
  • -N——仅适用于less命令,其作用是在每行前添加输出行号。

<3> 操作方法:

  • 按Enter键向下逐行滚动
  • 按空格键向下翻一屏、按b键向上翻一屏
  • 文件末尾时more会自动退出,less 按q键退出 

(3)查看文件开头或末尾的部分内容--- head 和 tail 命令

<1> 格式:head | tail [选项] 文件名

<2> 常用选项:

  • -num——指定需要显示文件多少行的内容,若不指定,默认只显示十行。
  • -f——使tail不停地去读取和显示文件最新的内容, 以监视文件内容的变化。这样有实时监视的效果。(可用来查看日志文件)

<3> 示例:

例1:查看前四行

[root@server ~]# head -4 passwd

例2:查看文件最后一行

[root@server ~]# tail -1 passwd

例3:查看文件第五行(面试常考)

[root@server ~]# head -5 passwd | tail -1
[root@server ~]# awk 'NR==5' passwd

5.文件内容过滤:grep

(1)格式:“grep [参数] 文件名称”

(2)参数及其作用

参数作用
-b将可执行文件(binary)当作文本文件(text)来搜索
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择——仅列出没有“关键词”的行。

(3)示例:

 例1:查找文件中含有root的行

[root@server ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

例2:查找文件/etc/passwd中以root开头的行  ^root ---正则表达式

[root@server ~]# grep "^root" /etc/passwd

例3:查找文件/etc/passwd中/bin/bash结尾的行   /bin/bash$

[root@server ~]# grep "/bin/bash$" /etc/passwd

例4:统计文件中含有root的行数

[root@server ~]# grep "root" /etc/passwd |wc -l
[root@server ~]# grep -c "root" /etc/passwd 
2

例5:统计文件中含有root的行,不区分大小写  -i

[root@server ~]# grep -i "root" /etc/passwd

例6:过滤掉配置文件中的注释和空行  -v(反转显示)

[root@server ~]# grep -E -v "#|^$" /etc/ssh/sshd_config

6.命令搜索

(1)whereis:搜索系统命令的命令,whereis 命令不能搜索普通文件

[root@server ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

(2)which:也是搜索系统命令的命令。

[root@server ~]# which locate
/usr/bin/locate

(3)区别:

  • whereis命令可以在查找到二进制命令的同时,查找到帮助文档的位置
  • which命令在查找到二进制命令(按照环境变量path)的同时,如果这个命令有别名,则还可以找到别的命令

(4)locate:按照数据库搜索,搜索速度快,消耗资源小。(只能按照文件名来搜索)

7. find 查找文件---按照文件名称、大小、类型、权限、日期等进行搜索

(1)格式:find 搜索路径 [选项] 搜索内容---(如果不提供搜索路径,则在当前目录查找)

(2)对应参数及作用:

(3)按照文件名搜索

-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索

(4)按照文件大小搜索

-size [+|-]大小: 按照指定大小搜索文件

(5)按照指定修改时间搜索文件

-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索

(6)按照文件类型查找

-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件

(7)逻辑运算符

-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非

(8)“-exec {} \;” 参数,其中的{}表示find命令搜索出的每一个文件,并且命令的结尾必 须是“\;”

-exec:执行命令

(9)示例:

例1:按名称查找 -name(查找/etc下面的以re开始,.conf结尾的文件)

[root@server ~]# find /etc -name "re*.conf"

例2:按大小查找 -size  +/-/nM(面试:查找当前文件路径下大于50k,小于5M的文件,复制到/opt。)

[root@server ~]# find -size +50k -size -5M -exec cp {} /opt/  \;

[root@server ~]# find -size +50k -size -5M -exec ls -lh {} \;
-exec:执行当前命令
ls -lh:以长格式列表列出来并显示容量
{ }:代表前面的内容
\;---结束符

例3:按时间搜索(保留一周数据---删除七天前的日志文件)

[root@server ~]# find ./ -name “*.log” -mtime +6 -exec rm -rf { } \;

例4:按用户搜索(查找student用户文件 ---user)

[root@server ~]# find / -user student
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值