一、重定向
1、标准
标准输入(stdin) 0 标准输出(stdout) 1 标准错误(stderr) 2
2、FD
file descriptors 文件描述符 又叫文件句柄
进程使用文件描述符来管理打开的文件,还是访问文件的标识,即链接文件(L)
0 键盘只读
1,2 是终端,可以理解为屏幕
3+ 是文件,可读可写
3、在/proc中查看文本程序的FD
通过ps查看文本程序的进程号,如ps aux | grep vim
ll /proc/5655/fd 5655是进程号
lrwx------. 1 root root 64 10月 10 07:37 0 -> /dev/pts/2 标准输入
lrwx------. 1 root root 64 10月 10 07:37 1 -> /dev/pts/2 标准输出
lrwx------. 1 root root 64 10月 10 07:37 2 -> /dev/pts/2 标准错误输出
lrwx------. 1 root root 64 10月 10 07:37 3 -> /root/.1.txt.swp 常规文件
4、输出重定向及综合案例
分为正确输出和错误输出
(1)正确输出1(stdout):1>1等价于> 是覆盖的意思;>>是追加的意思
Date >> date.txt date是实时显示当前时间信息。将显示的时间追加到date.txt文件中。
(2)错误输出(stderr)2:输出错误的信息。
但是2>2不等价于>,系统默认情况下>左右是1
ls /aaaaaa 2>> file.txt 前提是没有aaaaaa这个目录,这是一个错误的命令。将显示的错误信息追加到file.txt文件中。这里2不能省略。
(3)正确和错误都输出到同一个文件:用&连接符。
ls /home /aaaaaa &>list.txt 将/home的正确输出和/aaaaaa的错误输出输出到list.txt,用cat查询。
5、输入重定向及综合案例:stdin 0
(1)标注输入:< 或 0<
(2)输入重定向发送邮件
==A.默认发送邮件 ==
mail -s(参数,主题的意思) “编辑主题” 邮件接收人(如:alice)
回车之后可以编辑发送的内容,然后按“.”结束编辑并发送。
Su - alice 切换到Alice用户下
Mail 查看该用户可以查看邮件的详细信息
按“邮件编号”即可查看邮件内容
按q退出
B.输入重定向快速发送邮件
如果已经有了现成的邮件,可以用重定向快速输入邮件内容并发送。
Vim list.txt 准备邮件内容
Mail -s “邮件主题” 邮件接收人 < list.txt 发送list.txt内的内容给接收人。
查看邮件具体信息和默认发送邮件相同
二、管道(|)
1、进程管道Piping:cat /etc/passwd | grep nologin
2、Tee管道:三通管道,即交给另一个程序处理,并保存一份副本。
Cat /etc/passwd |tee a.txt |tail -3 | grep nologin
Tee 就是将前一个文件里面的所有内容写入a.txt,然后在提供给tail命令。
3、参数传递Xargs:对于一些特殊命令,用管道进行操作是无法执行。此时需要xargs
Touch file{1…5} 创建五个file文件
Vim files.txt
/root/file1
/root/file2
/root/file3
/root/file4
:wq
cat files.txt |xargs rm -rf
利用rm -rf 命令在xargs帮助下删除files.txt文件中需要删除的内容。当不使用xargs时无法进行删除。