管道和重定向
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