zoukankan      html  css  js  c++  java
  • Linux之文件重定向与查找

    文件描述符

    作用

    • 是内核为了高效管理已经被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统都是调用文件描述符
    • 文件描述符是一个非负整数,用来标明每一个被打开的文件 例如:第一个文件其描述符为0 第二个为1 依次类推
    • 可以将文件描述符看成文件的ID

    输入输出标准说明

    • STDIN(标准输入):默认的是键盘输入 文件描述符:0
    • STDOUT(标准输出):默认是显示器 也可以重定向到文件 文件描述符:1
    • STDERR(标准错误):默认是显示器 也可以重定向到文件 文件描述符:2

    fd

    用来查看一个进程下打开了哪些文件

    [root@SR ~]# vim /etc/passwd  
    
    [root@SR ~]# ps -aux | grep passwd
    root       3703  0.9  0.1  48716  8616 pts/0    S+   17:02   0:00 vim /etc/passwd
    
    [root@SR ~]# ll /proc/3703/fd
    总用量 0
    lrwx------. 1 root root 64 5月   1 17:03 0 -> /dev/pts/0
    lrwx------. 1 root root 64 5月   1 17:03 1 -> /dev/pts/0
    lrwx------. 1 root root 64 5月   1 17:03 2 -> /dev/pts/0
    lr-x------. 1 root root 64 5月   1 17:03 3 -> /var/lib/sss/mc/passwd
    lrwx------. 1 root root 64 5月   1 17:03 4 -> 'socket:[64492]'
    lrwx------. 1 root root 64 5月   1 17:03 6 -> /etc/.passwd.swp
    
    ps:上述 0 1 2 4即是文件描述符
    

    对文件描述符的操作就是对文件本身的操作。 我可以直接通过操作文件描述来修改文件。
    查看和临时设置一个迚程最多可以打开几个文件,卲:一个迚程可以打开的文件描述符限制
    [root@SR ~]# ulimit -n #查看一个迚程最多可以同时打开的文件数
    1024
    [root@SR ~]# ulimit -n 2048 #修改一个迚程最多可以同时打开的文件数为 2048
    [root@SR ~]# ulimit -n
    2048
    

    重定向

    作用

    将输出的内容通过重定向可以指定到我们想要存储的文件 而不是直接输出到屏幕

    输出重定向

    >

    将输出的内容输出到一个指定的文件 如果该文件有内容会被直接覆盖

    [root@SR ~]# cat /proc/cpuinfo > cpu.txt   文件重定向
    [root@SR ~]#
    [root@SR ~]# head -1 cpu.txt   # 查看文件首行
    [root@SR ~]#
    [root@SR ~]# echo hello world > cpu.txt  # 再次重定向
    [root@SR ~]# head -1 cpu.txt  # 查看文件首行 发现原来的文件内容都被覆盖了
    

    >>

    将输出的内容输出到一个指定的文件 其不会覆盖原文件的内容 而是会在尾部追加

    [root@SR ~]# echo '测试>>尾部追加' > test.txt
    [root@SR ~]#
    [root@SR ~]# cat test.txt
    测试>>尾部追加
    [root@SR ~]#
    [root@SR ~]# echo '追加成功' >> test.txt
    [root@SR ~]#
    [root@SR ~]# cat test.txt
    测试>>尾部追加
    追加成功
    

    输入重定向

    其输入方式不是从键盘进行输入 而是可以从其余方式进行输入 例如:文件

    <

    [root@SR ~]# grep root < /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    

    错误重定向

    将在输入中产生的错误提示信息 重定向到文件中而不是在屏幕显示

    2>

    [root@SR ~]# ll asjkd~ 2> b.txt
    [root@SR ~]#
    [root@SR ~]# cat b.txt
    ls: 无法访问'asjkd~': 没有那个文件或目录
    
    PS 使用 2> 操作符时,会像使用 > 一样覆盖目标文件的内容,若追加而丌覆盖文件的内容卲可使用 2>> 操作符
    

    null

    把null看成黑洞 写入到该null中的所有文件都会消失 同时读取数据也不会有任何显示

    [root@SR ~]# echo '测试null' > /dev/null
    [root@SR ~]#
    [root@SR ~]# cat /dev/null
    

    zero

    当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。 典型用法是用它来产生一个特定大小的空白文件

    [root@SR ~]# dd if=/dev/zero of=b.txt bs=1M count=50
    记录了50+0 的读入
    记录了50+0 的写出
    52428800 bytes (52 MB, 50 MiB) copied, 0.111958 s, 468 MB/s
    [root@SR ~]# ll -h b.txt
    -rw-r--r--. 1 root root 50M 5月   1 18:02 b.txt
    [root@SR ~]# cat b.txt  # 无任何显示
    

    EOF

    作用

    • EOF 本意是 End Of File,表明到了文件末尾。” EOF“通常不” <<“结合使用
    • <<EOF“表示后续的输入作为子命令戒子 shell 的输入,直到遇到” EOF
    • 再次返回到主调 shell,可将其理解为分界符(delimiter)。既然是分界符,那举形式自然丌是固定的
    • 这里可以将” EOF“可以迚行自定丿,但是前后的” EOF“必须成对出现丏丌能和 shell 命令冲突
    [root@SR ~]# cat > a.txt << EOF
    > ajksdhkasjd
    > asjkdhaksd
    > asdkjhaskdj
    > EOF
    

    管道符

    作用

    一个命令输出的结果作为另外一个命令输出的条件

    语法

    command -a | command -b

    管道命令只处理前面正确命令 不处理错误命令
    管道右边的命令必须能够接受正确的数据输入流
    管道符可以连接多个命令
    

    tee

    作用

    会将标准输出的数据流输出到标准输出设备上同时保存到文件

    可选参数

    -a

    尾部追加

    查找命令

    which

    查看可执行文件的位置

    whereis

    查看可执行文件位置以及相关文件

    locate

    配合数据库缓存 快速查看相关文件

     locate 命令和 find -name 功能差不多 是它的另外一种写法 
     相比较find其查找速度更加快速 因为在find中查找文件是根据目录查找 
     而那个locate查找数据是查找一个数据库/var/lib/mlocate/mlocate.db 
     这个数据库保存本地所有文件的信息 并且自动更新相关的配置信息在/etc/updatedb.conf查看定时任务信息在/etc/cron.daily/mlocate
    

    grep

    其能根据正则进行数据匹配 并且把数据打印出来

    可选参数

    -v

    取反

    ^

    匹配以什么开头

    $

    匹配以什么结束

    ^$

    匹配一个空行

    -i

    忽略大小写

    -n

    对过滤的内容加上行号

    find

    根据条件进行文件查找

    可选参数

    -name

    根据文件名称进行查找

    -perm

    根据文件权限进行查找

    -user

    根据文件属主进行查找

    -group

    根据文件属组进行查找

    -mtime

    按照文件修改时间来查找文件

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

    -type

    根据文件类型进行文件查找

    -size

    根据文件大小进行查找

    -exec

    对匹配的文件执行该参数所给出的其他 linux 命令

    -a

    多个条件并列

    -o

    满足一个条件即可

    -+

    超过

    --

    低于

    命令判断

    ;

    连续执行 不考虑命令的正确性

    &&

    逻辑与
    只有前面的命令执行成功 才会执行后面的命令

    ||

    逻辑或
    前面的命令执行成功 后面的命令则不执行 或者前面的命令执行失败 后面的才会执行

  • 相关阅读:
    Saltstack module apache 详解
    Saltstack module ip 详解
    Saltstack module iosconfig 详解
    Saltstack module introspect 详解
    Saltstack module inspector 详解
    Saltstack module ini 详解
    Saltstack module incron 详解
    Modbus 指令 RS485指令规则
    停车系统对接第三方在线支付平台(二)
    停车系统对接第三方在线支付平台
  • 原文地址:https://www.cnblogs.com/SR-Program/p/12814792.html
Copyright © 2011-2022 走看看