本节所讲内容:
重定向的作用
文件描述符0、1、2
实现输入输出重定向 >、 >>
tee 命令介绍
管道|
which 查看可执行文件的位置
whereis 查看可执行文件的位置 及相关文件
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
grep 过滤
文件描述符:内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。
linux下一切皆文件。
STDIN 标准输入 如:键盘文件 文件描述符为:0
STDOUT 标准输出 屏幕终端 文件描述符为:1
STDERR 错误输出 屏幕终端 文件描述符为:2
[root@localhost ~]#echo 123456 | passwd --stdin rm > /dev/null
/dev/null 代表空设备文件,就是Linux中的黑洞。放多少东西都填不满。
输出重定向
> #输出重定向到哪里
1> 表示stdout标准输出,系统默认值是1,所以"> /dev/null"等同于"1> /dev/null"
[root@localhost ~]# ls/home/ 1> a.txt
[root@localhost ~]# cata.txt
rm
2> #表示标准错误输出
[root@localhost ~]# ls/homee 2> b.txt
[root@localhost ~]# catb.txt
ls: cannot access/homee: No such file or directory
& & 表示等同于的意思
[root@localhost ~]# ls/home/ /homee > d.txt 2>&1
[root@localhost ~]# catd.txt
ls: cannot access/homee: No such file or directory
/home/:
rm
[root@localhost ~]# ls/home/ /homee 2> d.txt >&2
&>混合输出
[root@localhost ~]# ls/home/ /homee &> a.txt
[root@localhost ~]# cata.txt
ls: cannot access/homee: No such file or directory
/home/:
rm
输出重定向,追加和覆盖
> 和>> 的区别
> 每次都产生新文件。
>> 是追加,不产生新的文件。
[root@localhost ~]#echo yangguangqiming > a.txt
[root@localhost ~]# cata.txt
yangguangqiming
[root@localhost ~]#echo yangguangqiming >> a.txt
[root@localhost ~]# cata.txt
yangguangqiming
yangguangqiming
输入重定向
<
实例1:wc查看文件的字节数、字数、行数
[root@localhost ~]# wc/etc/passwd
39 77 2002 /etc/passwd
行 字数(以空格为分隔符) 大小(字节为单位)
[root@localhost ~]# wc< /etc/passwd
39 772002
[root@localhost ~]# cat> a.txt <<EOF
>**********************************
> **** welcome to hero aliance ****
>**********************************
> EOF
[root@localhost ~]# cata.txt
**********************************
**** welcome to hero aliance ****
**********************************
管道
前一个程序的标准输出,交给后一个程序做标准输入。
[root@localhost ~]# ps-aux | grep vim
tee命令:
功能说明:读取标准输出的数据,并将其内容输入成文件。
[root@localhost ~]# ps-aux | grep vim | tee a.txt
root 3597 0.0 0.1 151456 5232 pts/1 S+ 21:20 0:00 vim a.txt
root 3723 0.0 0.0 112640 956 pts/0 S+ 21:29 0:00 grep --color=auto vim
[root@localhost ~]# cata.txt
root 3597 0.0 0.1 151456 5232 pts/1 S+ 21:20 0:00 vim a.txt
root 3723 0.0 0.0 112640 956 pts/0 S+ 21:29 0:00 grep --color=auto vim
文件查找方法
which 查看可执行文件的位置
grep 过滤
whereis 查看可执行文件的位置 及相关文件
locate 配合数据库缓存,快速查看文件位置
find 实际搜寻硬盘查询文件名称
查找文件:
#which CHMMAND
[root@localhost ~]#which shutdown
/usr/sbin/shutdown
[root@localhost ~]# rpm-qf /usr/sbin/shutdown
systemd-208-20.el7.x86_64
[root@localhost ~]# rpm-qf `which shutdown`
systemd-208-20.el7.x86_64
[root@localhost ~]# rpm-qf $(which shutdown)
systemd-208-20.el7.x86_64
#whereis CHMMAND
[root@localhost ~]#whereis shutdown
shutdown:/usr/sbin/shutdown /usr/share/man/man2/shutdown.2.gz/usr/share/man/man3p/shutdown.3p.gz /usr/share/man/man8/shutdown.8.gz
locate 配合数据库缓存,快速查看文件位置
[root@localhost ~]# locate hucheng
[root@localhost ~]#updatedb
[root@localhost ~]#locate hucheng
/root/hucheng
grep 过滤
[root@localhost ~]# grep bash passwd
root:x:0:0:root:/root:/bin/bash
rm:x:1000:1000:rm:/home/rm:/bin/bash
-v 反转
-i 忽略大小写
^# 以#开头
#$ 以#结尾
^$ 空行
例:-v取反,查找出文件中不带nologin的行
[root@localhost ~]#grep -v "nologin" passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
rm:x:1000:1000:rm:/home/rm:/bin/bash
例:-i 忽略大小写进行查找
[root@localhost ~]#grep -i "rm" passwd
rm:x:1000:1000:rm:/home/rm:/bin/bash
RM********************************************
例:^ 过滤文件中的所有以#号开头的行
[root@localhost ~]#grep "^#" passwd
#ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
#usbmuxd:x:113:113:usbmuxduser:/:/sbin/nologin
#ntp:x:38:38::/etc/ntp:/sbin/nologin
例:$ 过滤文件中的所有以%结尾的行
[root@localhost ~]#grep "%$" passwd
nobody:x:99:99:Nobody:/:/sbin/nologin%
abrt:x:173:173::/etc/abrt:/sbin/nologin%
radvd:x:75:75:radvduser:/:/sbin/nologin%
例:^$ 过滤文件中的空行
[root@localhost ~]#grep "^$" passwd -n
16:
22:
27:
注:-n 对过滤的内容加上行号
扩展:过滤文件中没有空行和注释行的真实有效的内容
[root@localhost ~]#grep -v "^$" /etc/ssh/sshd_config | grep -v "^#"
学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589
转载于:https://blog.51cto.com/xuegodlinux/1720561