管道和重定向


date:查看计算机的日期时间;

[root@localhost 001]# date
2022年 05月 28日 星期六 15:48:20 CST

重定向

>覆盖输入信息
>>追加输入信息
[root@localhost /]# touch /time. #在跟下创建文件time.; [root@localhost /]# date > time. 查看虚拟机的日期时间并输入到time.文件上去; [root@localhost /]# cat time. 查看文件time.的内容; 2022年 05月 28日 星期六 15:52:20 CST [root@localhost /]#

FD简介

file descriptors,FD,文件描述符,文件句柄进程使用描述符来管理打开的文件。
每个程序都有FD,FD是针对程序的,让程序更方便;
FD是访问文件的标识(链接文件),省去了冗长的绝对路径;
FD:文件描述符(0——255)
0:stdin:标准输入(键盘文件) 1:stdout:标准输出(显示器文件)
<覆盖
<<追加 2
:stderr:标准错误(显示器文件) 。。。。。。other files 0是键盘只读; 1,2是终端可以理解是屏幕; 3+是文件,可读可写;
other:&》混合输出
echo:输出代码到终端显示器上
[root@localhost 001]# echo 1                    #输出1在终端显示器上
1
[root@localhost 001]# echo 123 > 001        #覆盖输出123到文件001上
[root@localhost 001]# echo 12345 >001       #覆盖输出123到文件001上
[root@localhost 001]# cat 001                   #查看文件001的全部内容
12345

 输出重定向1,2

输出重定向分为:
正确输出:
1>
1>>

错误输出:当某条程序出现错误时才会有错误输出并重定向;
2>
2>>

[root@localhost /]# ls /001 2>001
/001
[root@localhost /]# cat /001#查看001文件的内容,2>没报错,所以没错误输出;
[root@localhost /]# ls /0001 2>001
[root@localhost /]# cat /001
ls: 无法访问/0001: 没有那个文件或目录

例子:

[root@localhost /]# touch /a/001 1>>001        #正确追加输出
[root@localhost /]# cat /001
ls: 无法访问/0001: 没有那个文件或目录
mkdir: 已创建目录 "/a"
[root@localhost /]# touch /a/001 2>>001        #错误追加输出
[root@localhost /]# cat /001
ls: 无法访问/0001: 没有那个文件或目录
mkdir: 已创建目录 "/a"
[root@localhost /]# ls /a 001 &>>001           #把正确输入或者错误输出到001文件
[root@localhost /]# cat /001
ls: 无法访问/0001: 没有那个文件或目录
mkdir: 已创建目录 "/a"
001

/a:
001
[root@localhost /]# ls /a /s     1>001 2>001   #分别把正确,错误的输出到2个文件里
[root@localhost /]# cat /001
/a:
001
??访问/s: 没有那个文件或目录
[[root@localhost /]# ls /home///     &> /dev/null#把正确/错误输出丢到垃圾桶里面
[root@localhost /]#  

  输入重定向0<

[root@localhost /]# mail -s '1' 001#发邮箱名为1给用户001
hello
.
EOT
(:冒号+邮件名:就可以看邮件;按q退出;)
先准备一段内容
mail -s ’test内容‘  用户001 < word.txt

 管道

进程管道piping
1.管道命令可以将多条命令组合起来,一次性完成复杂的处理任务;
语法:command1 | command2 | command3  |...command99    c0mmand99:输出
命令1的输出,作为命令2的输入,命令2的输入,作为命令3的输入。
[root@localhost /]# cat /etc/passwd | grep "root"       #管道查看过滤关键词root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost /]# cat /etc/passwd | grep "root" | head -1#管道查看过滤关键词root的第一行
 root:x:0:0:root:/root:/bin/bash
tee管道
tee:把输出显示在终端;
tee 文件名:把输出留副本 [root@localhost
/]# cat /etc/passwd |tee 001 | tail -1
#管道查看过滤关键词root的末尾一行
#并过滤/etc/passwd文件内容到文件001里
 001:x:1000:1000:001:/home/001:/bin/bash [root@localhost /]# cat /001
参数传递Xargs
cp  rm   一些特殊命令就是不服其它程序;
[root@localhost /]# cat file
file1
file2
file3
[root@localhost /]# ls /
001   1  bin   dev  file   file2  home  lib64  mnt  proc  run   srv  tmp  var
0098  a  boot  etc  file1  file3  lib   media  opt  root  sbin  sys  usr
[root@localhost /]# cat /file    |xargs    rm -rfv  
已删除"file1"
已删除"file2"
已删除"file3"
[root@localhost /]# ls /
001   1  bin   dev  file  lib    media  opt   root  sbin  sys  usr
0098  a  boot  etc  home  lib64  mnt    proc  run   srv   tmp  var
[root@localhost /]# 
[root@localhost 001]# cat /etc/passwd | grep ntp | cut -d: -f1#-d后加切割的分界线:,-f是第几个字符;
ntp
[root@localhost 001]# cat /etc/passwd | grep ntp | cut -d: -f2
x
[root@localhost 001]# cat /etc/passwd | grep ntp | cut -d: -f3
38