码迷,mamicode.com
首页 > 其他好文 > 详细

CentOS之重定向与管道

时间:2021-01-20 12:03:22      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:定向   通过   cst   tde   指令   find   不显示   unix   无法   

重定向

输出重定向
????进程产生的信息,存放到文件中

  1. 标准正确输出: >
  2. 标准错误输出: 2>
  3. 标准混合输出: &>

输入重定向 <
????以文本内容,作为进程的标准输入

FD简介

文件句柄是windows系统的概念,在linux下称之为文件描述符FD(file description)

进程使用文件描述符在管理打开的文件

概要

????文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向 内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符.在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX,Linux这样的操作系统。

优点

文件描述符的优点主要有两个

  • 基于文件描述符的I/O操作操作兼容POSIX标准。
  • 在UNIX、Linux的系统调用中,大量的系统调用都是依赖于文件描述符。

FD是访问文件的标识,即链接文件

  • 0 标准输入
  • 1 标准输出
  • 2 标准错误输出
  • 3+ 是文件,可读可写

FD使用

输出

输出正确内容

  • 1> = >
  • 1>> = >>

输出错误内容

  • 2>
  • 2>>
[root@CatdeXin-PC ~]# date > time.txt //覆盖
[root@CatdeXin-PC ~]# date >> time.txt //追加

// 正确输出只会将正确的结果输出到文件
[root@CatdeXin-PC ~]# date > a.txt
[root@CatdeXin-PC ~]# cat a.txt
2021年 01月 19日 星期二 15:59:01 CST
[root@CatdeXin-PC ~]# error > a.txt
bash: error: 未找到命令...


// 错误输出只会讲错误信息输出到文件
[root@CatdeXin-PC ~]# date 2> b.txt
2021年 01月 19日 星期二 16:00:38 CST
[root@CatdeXin-PC ~]# cat b.txt
[root@CatdeXin-PC ~]# error 2> b.txt
[root@CatdeXin-PC ~]# cat b.txt
bash: error: 未找到命令...

将正确结果和错误结果都输出到文件中

  • 将正确结果和错误结果都输入到同一个文件
    [root@CatdeXin-PC ~]# ls /home/ /asdasd
    ls: 无法访问/asdasd: 没有那个文件或目录
    /home/:
    catdexin
    [root@CatdeXin-PC ~]# ls /home/ /asdasd &> c.txt
    [root@CatdeXin-PC ~]# cat c.txt
    ls: 无法访问/asdasd: 没有那个文件或目录
    /home/:
    catdexin
  • 将正确结果和错误结果输出到不同的文件
    [root@CatdeXin-PC ~]# ls /home/ /asdasd 1> yes.txt 2> no.txt
    [root@CatdeXin-PC ~]# cat yes.txt
    /home/:
    catdexin
    [root@CatdeXin-PC ~]# cat no.txt
    ls: 无法访问/asdasd: 没有那个文件或目录
  • 不显示输出信息
    [root@CatdeXin-PC ~]# ls /home/ /asdasd &> /dev/null
其他程序可以吗?
mkdir 可以吗
程序本身需要输出

 


输入

  • 0< = <
[root@CatdeXin-PC ~]# cat < a.txt
holle word  

 

管道

进程管道Piping

????管道命令可以将多条命令组合起来,一次性完成复杂的处理任务

????管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

// 指令1 | 指令2 | 指令3

[root@CatdeXin-PC ~]# cat a.txt | grep 123

tee管道

三通管道,把输出保留副本

// 指令1 |tee File | 指令2

[root@CatdeXin-PC ~]# cat /etc/passwd |tee test.txt | head -1

[root@CatdeXin-PC ~]# cat /etc/passwd | grep "root" |tee test.txt | head -1

xargs 管道

转换 把输入输出进行格式转换

[root@CatdeXin-PC 桌面]# mkdir ./file{1..6}
[root@CatdeXin-PC 桌面]# ls
file1  file2  file3  file4  file5  file6

[root@CatdeXin-PC 桌面]# cat file.txt
/root/桌面/file1
/root/桌面/file2
/root/桌面/file3
/root/桌面/file4
/root/桌面/file5
/root/桌面/file6

[root@CatdeXin-PC 桌面]# cat file.txt |xargs rm -rvf
已删除目录:"/root/桌面/file1"
已删除目录:"/root/桌面/file2"
已删除目录:"/root/桌面/file3"
已删除目录:"/root/桌面/file4"
已删除目录:"/root/桌面/file5"
已删除目录:"/root/桌面/file6"

// 查找所有的 jpg 文件,并且压缩它们:
# find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

// 假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:
# cat url-list.txt | xargs wget -c

 

扩展

EOF

终端输入<<EOF 可以多行输入,再次输入EOF结束输入

// 可以实现终端回车输入多行内容
[root@CatdeXin-PC 桌面]# cat <<EOF
> holle word
> today
> weather
> right
> EOF
holle word
today
weather
right
  • EOF高级用法
    // cat将查看到的EOF内容输出到test.txt
    [root@CatdeXin-PC 桌面]# cat > test.txt <<EOF
    > holle
    > Li
    > EOF
    [root@CatdeXin-PC 桌面]# cat test.txt
    holle
    Li

[root@CatdeXin-PC 桌面]# cat run.conf
cat > /root/桌面/1.txt <<EOF
天不生我李淳罡
剑道万古如长夜出处
EOF

[root@CatdeXin-PC 桌面]# chmod +x run.conf
[root@CatdeXin-PC 桌面]# ll
总用量 4
-rwxr-xr-x. 1 root root 85 1月  19 17:28 run.conf
[root@CatdeXin-PC 桌面]# ./run.conf
[root@CatdeXin-PC 桌面]# ll
总用量 8
-rw-r--r--. 1 root root 50 1月  19 17:31 1.txt
-rwxr-xr-x. 1 root root 85 1月  19 17:28 run.conf
[root@CatdeXin-PC 桌面]# cat 1.txt
天不生我李淳罡
剑道万古如长夜出处

 

CentOS之重定向与管道

标签:定向   通过   cst   tde   指令   find   不显示   unix   无法   

原文地址:https://www.cnblogs.com/CatdeXin/p/14300343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!