重定向,管道及文件查找

I/O 重定向:

什么是重定向:先了解几个概念:标准输入(即从键盘输入),标准输出(即从显示屏输出),标准错误(就是错误信息error,也是标准输出到显示屏上)

那么重定向呢? 其实就是更改它的标准输入输出错误模式,比如说标准输出到文件中,就把本该在显示屏上的东西,添加到一个文件中,文件的内容就是本在显示屏上的东西。

(数字表示:0表示标准输入,1表示标准输出,2表示标准错误)

输出重定向:

> : 覆盖 >> : 追加

输出正确内容: > / >> 等价于 1> / 1>>

输出错误内容: 2> / 2 >>

正确和错误的内容都输出到相同位置: &> (混合输出) , 2>&1

区别:

 

输出到空设备: > /dev/null (/dev/null 文件相当于一个无底洞,就相当于丢弃)

输出重定向:

< 等价于 0<

组合使用:

eg: cat > test.txt <<EOF (可以试试哈,EOF可以随便写,表示输入的结束)

 

管道: |

管道就是把一个进程的标准输出作为一个进程的标准输入

eg: ps -ef | grep httpd #选择httpd 的进程

匿名管道和命名管道:

咱们就简单理解就行,普通的管道一般都是匿名管道,他会随着进程的结束而结束,是一个血缘的进程通信,一个半双工通信方式等

比如 ps -ef | grep httpd 这个例子,ps -ef 就相当于父进程, grep httpd 就相当于子进程,他就只能从父进程到子进程

命令管道(FIFO)

FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道是一个设备文件(就是上篇文章中讲到的管道文件,可以使用ll 命令来查看),因此,即使进程与创建FIFO的进程不存在亲缘关系,也是半双工通信,只要可以访问该路径,就能够通过FIFO相互通信。值得注意的是,FIFO(first input first output)总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出

如何创建命名管道?

在Linux系统下,命名管道可由两种方式创建(假设创建一个名为“fifoexample”的有名管道):

( 1)mkfifo("fifoexample","rw");

( 2)mknod fifoexample p

mkfifo是一个函数,mknod是一个系统调用

tee 管道:

就直接上图了

tee命令就像管道的T接头。将STDIN的数据同时发送到两个目的地。一个是STDOUT,一个是指定 的文件名

 

文件查找:which, locate,find(重要)

which:

查找可执行文件的路径

什么意思呢?简单理解就是which之能查找命令的路径

locate:

相当于find -name ,但是比find 的速度快,因为locate是从数据库中直接查询的,而find是从通过遍历磁盘来查找

whereis:

参数说明:

-b : 只找二进制文件

-m: 只找在说明文件manual路径下的文件

-s : 只找source源文件

-u : 没有说明文档的文件

whereis 也是直接从数据库中查询,速度也是很快的

find (重要的一个)

用法: find 路径 参数

Eg: find / -name test.txt

(从 / 开始查找test.txt的文件)

相关参数:

时间查找参数:

-atime n :将n*24小时内存取过的的文件列出来

-ctime n :将n*24小时内改变、新增的文件或者目录列出来

-mtime n :将n*24小时内修改过的文件或者目录列出来

-newer file :把比file还要新的文件列出来

与使用者或组名有关参数:

-gid n       :寻找群组ID为n的文件

-group name  :寻找群组名称为name的文件

-uid n       :寻找拥有者ID为n的文件

-user name   :寻找用户者名称为name的文件

-nouser  :寻找文件的拥有者不存在 /etc/passwd 的人!

-nogroup  :寻找文件的拥有群组不存在于 /etc/group 的文件!

 

-name :按照名字查询

-size: 按照大小查询

-exec

      1.参数是一个一个传递的,传递一个参数执行一次rm

      2.文件名有空格等特殊字符也能处理

  -xargs

  1.一次将参数传给命令,可以使用-n控制参数个数

   2.处理特殊文件名需要采用如下方式:

find . -name "*.txt" print0 |xargs -0 rm {}

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值