object(stdClass)#38 (2) { ["docs"]=> array(0) { } ["count"]=> int(0) } linux-重定向和文件的查找 - 爱码网
kezi

linux-重定向和文件的查找

1、文件描述符(0,1,2)

2、重定向的含义-相关管道的使用(tee命令)

3、常用查找相关命令(which-whereis-locate-grep-find)

4、相关命令的判断

linux下面我们听的最多的是一切皆文件(普通文件、目录文件、设备文件、链接文件等)

 

1.1 文件描述符的定义

内核为了高效管理已被打开的文件所创建的索引 ,用于指向被 打开的文件,所有执行I/O操作的系统调用都通过文件描述符;它是非负整数,从0开始,其实是一个文件的身体ID。

输入输出说明:
stdin      0        标准输入设备       常见键盘是键盘

stdout    1       标准输出设备       常见显示器

stderr     2      标准错误              常见显示器

查看一个进程打开那些文件

ll  /proc/ 进程ID/fd

ulimit  -n    可以设置一个进程可以打开文件的文件数

 

2.1 输出重定项

输出重定项指:将命令正常输出的结果保存到文件,也不是直接在显示器上

>    覆盖原文件

>>  追加到原文件里

例:cat  /etc/passwd >passwdbak.txt

2.2 输入重定项

输入重定项:将原来命令等待从键盘中输入的内容,改成以一个文件。

例:grep kkk </etc/passwd

我们常见mysql 导入数据     mysql -uroot -p123456<abc.sql

 

2.3 EOF 的使用

EOF通常与<<  结合使用:这表示EOF输入的内容作为子命令或者shell的输入,直到再次输入EOF才结束。

这其中EOF可以换ccc  任意内容。

例:cat >q.txt<<EOF

>abc

>cde

EOF

例:cat b.txt <<ddd

>EDN

>ddd

例:在 shell 中的应用 

cat <<efo

++++++

ASP

C++

++++++

efo

2.4 错误重定向

 将命令执行过程中出现的错误信息保存到指定的文件,而不是直接显示到显示器

作用:错误信息保存到文件

操作符:错误重定向符号:2>;标准输入:0<或者<;标准输出:1>或者>

2指的是标准错误输出的文件描述符

 

 ls /tmp ddd   >a.txt  2> err1.txt

 2>>也是追加的意思。

2.5 null 黑洞与zero空文件

/dev/null  是把内容写入这里,永远也丢失了。

 

 zero使用

dd if=/dev/zero of=cc.txt bs=1M  count 50

if:表示输入文件

of:表示输出文件

bs:表示块单位的大小

count表示块个数

 

 2.6 &>与>&符号

&表示等同于

例:把正确和错误的消息输入到相同的位置

1>&2   把标准输出重定向到标准错误

2>&1  把标准错误重定向到标准输出。

cat /etc/passwd bbb >1.txt 2>&1

ls /etc/passwd ccc 2>2.txt 1>&2

在shell 中应用

cat /etc/passwd >/dev/null 2>&1

2.7 管道符的应用   |

(1)、管道命令处理前一个命令正确输出,不处理错误输出

(2)、管道右边,必须能够接收标准输入的数据流命令才行

(3)、管理符可以把多条命令连接起来

例:ps -aux |grep vim

       cat /etc/passwd|awk -F:   \'{print $1}\'|grep root

 

 2.8 tree 命令

将读取的标准输入的数据,并将其内容输出成文件。

tree -a    内容追加。

例:cat /etc/passwd  |tree log.txt

 

 3、常用查找相关命令

 which 查看可执行文件的命令的位置

whereis  查看可执行文件的位置及相磁文件

locate 配合数据缓存,快速查看文件位置

grep  过滤匹配,是一个文件搜索工具

find 查找相关文件

 

 

 lcate 命令

local命令与find -name 功能相似,local 查询要快一些,有搜索的数据库/var/lib/mlocate/mlocate.db 每天会进行自动更新

/etc/updatedb.conf

查定时任务信息   /etc/cron.daily/mlocate

 

 

 

 

grep查找使用

作用:过滤,它能够使用正则表达式来搜索文本,并把结果打印出来
参数:

-v  取反

-i  忽略大小写

^#    以#开头

#$    以#结尾

^$    空行

-n 对过滤的内容加上行号

或者的意思

 

 

 

 

 

 egrep 是grep 的增强版

 

 

3.2 find命令使用(必会,参数比较多)

格式:find    pathname    -options    [-print]

    命令字   路径名称        选项        输出

参数:

pathname:  find命令所查找的目录路径,不输入代表当前目录例如用 . 来表示当前目录,用 / 来表示系统根目录。

find命令选项:

-name     按照文件名查找文件。  “名称”

-perm      按照文件权限来查找文件。666 777 等

-user       按照文件属主来查找文件

-group     按照文件所属的组来查找文件

-mtime  -n  / +n  按照文件的更改时间来查找文件,

                - n 表示文件更改时间距现在n天以内

                + n       表示文件更改时间距现在n天以前

-type       查找某一类型的文件

               b - 块设备文件

               d - 目录

               c - 字符设备文件

               p - 管道文件

               l- 符号链接文件

               f - 普通文件

-size n  查找符合指定的文件大小的文件

-exec          对匹配的文件执行该参数所给出的其他linux命令, 相应命令的形式为\' 命令 {} \;,注意{ }和 \;之间的空格,{}代表查到的内容

 

 find /root/ -mtime -1

 

 

 

 

比较符的使用:

-a  and 并且

-o  or  或者

超过

-   低于

 

 find /etc -size +20k -a -size -50k | wc -l

  find /bin/ -perm 755

  find /bin/ -perm  -644

 find /root -type f -perm  -777

-maxdepth 1  #只查找目录第一层的文件和目录

find /bin/ -maxdepth 1 -perm 755

 

find / -user mk -exec cp -a {} /root/findresults/  \;

#参数: -a  #复制时,保留原来文件的所有属性

4  命令判断 

4.1  用到的三个特殊符号:   ;   &&   ||

&&逻辑与====》它是只有在前面的命令执行成功后,后面的命令才会去执行

cd /opt/ && touch /opt/a.txt  && ls

 ./configure  &&  make -j 4 &&  make install  

||   逻辑或===》如果前面的命令执行成功,后面的命令就不去执行了;或者如果前面的执行不成功,才会去执行后面的命令

ls aaa || cd /mnt

id kill || useradd kill && echo "123456" |passwd --stdin kill && id kil

分类:

技术点:

相关文章: