重定向


在Linux中,输入也称为标准输入(0号文件描述符),默认指键盘/dev/stdin;    standard

       输出又分为错误输出2  和  标准输出1,默认都是屏幕/dev/stderr,/dev/stdout


Linux执行命令的过程:

  1. bash读取命令行上用户输入的命令
  2. bash扩展命令中包含的通配符参数
  3. 复制三个文件描述符,如果存下重定向,指向就有可能发生变化
  4. 在PATH中寻找程序,然后执行它
  5. 把二进制程序退出的状态保存到特殊变量?中
  6. 显示命令状态并等待用户输入下一个命令

重定向用到的元字符有<>&-

>后面的文件都有文件描述符,1>file 2>1

[n]>清空保存,省略为1

[n]>>追加,省略为1

>&file标准输出和标准错误输出都重定向到file文件,如果后面是纯数字,bash视其为文件描述符,并执行“复制到1号文件描述符”的操作

>>&file

&>file.txt重定向标准输出和错误输出到文件

1.php test.php 2>&1 >file :错误输出到终端,标准输出被重定向到文件file。理解不了
2.php test.php >file 2>&1 :标准输出被重定向到文件file,然后错误输出也重定向到和标准输出一样,所以错误也输出到文件file。

[n]<target.txt  输入重定向

<<<word  word部分本身作为命令的输入内容,eg: ssh zsan@moo<<<A123 以账号zsan登录到机器moo,密码为A123

应用:gcc abc.c -o adc 1>gcc.txt 2>gcc.err    echo "except HISTFILESIZE"=5000 >> /etc/profile 

cmd << delimiter

  Here Document Content
delimiter
它的作用就是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数。

 

原文地址:https://www.cnblogs.com/daduryi/p/6623035.html