I/O重定向与管道

发布时间 2023-11-09 09:43:45作者: 法外狂徒张三!

I/O重定向

 

重定向:

 

  使用tty可以获取当前终端号

  输入命令,例如date会将系统时间输出到终端中,当使用date > 文件名会将系统时间输出到该文件中

  

  修改密码的命令passwd,按下后不继续输入新密码,使用ps aux | grep passwd获取刚才使用passwd进程的信息,其中有pid,使用ls /proc/进程号/fd和ll /proc/进程号/fd获取文件描述符信息

  文件描述符:

    0:标准输入 1:标准输出 2:标准错误 3:常规文件描述符

      举例说明:

        命令 1> 文件a     :当命令有错误的时候会将错误输出到终端,正确命令的内容输出到文件a

        命令 2> 文件b     :当前命令有错误的时候会将错误输出到文件a,正确命令的内容输出到终端

        命令 1> 文件a 2>文件b :当前命令有错误的时候会将错误输出到文件b,错误命令的内容输出到文件a

输入重定向:

  > 表示覆盖

  >> 表示追加

  使用 &>文件a或&>>文件a 将正确和错误的内容输入到文件a

 

输出重定向

  < 文件或命令 将文件或命令输出内容输出到<左边的命令中

 

  命令dd 可以复制文件内容 例如:dd if=a of=b bs=1M count=2 将文件a的内容复制到文件b

  使用dd < 文件a > 文件b    与上面命令效果相同

  

  案例:

    提前将命令写入文件a,创建计划任务 at now +5 min <a

    可以将要执行的任务在5分钟后执行

  

  重定向综合:

    1.使用echo 内容 >或>> 文件可以将内容覆盖或追加到文件中,但每次只能加一行

    2.使用cat > 文件名,可以连续输入多行然后输入Ctrl+C或Ctrl+D结束输入

    3.使用cat > 文件名 <<文件结束符:输入多行要写的内容,然后输入自定义的文件结束符结束输入

    4.使用vim创建shell脚本,里面写内容:

      cat > file200.txt<<EOF

      111

      222

      333

      aaa

      EOF

      可以执行命令并根据最后的EOF结束命令

    5.多条命令同时执行重定向可以将多条命令写在圆括号内 > 文件文件名