Linux数据流重定向
数据,linux2016-08-12
Linux中,数据流的重定向被分为输入重定向 和 输出重定向。
命令 > 文件
命令的执行结果将会保存到>后面的文件中去,而不会在屏幕上显示。
命令 < 文件
当执行命令时,如果命令需要读取数据,那么就会从<后面的文件中读取。
标准输出
当一条命令执行成功时,输出的结果称为标准输出。
标准输出在Linux中用1表示,因此:1> 和 1>>表示标准输出,一般1可以省略。
标准错误输出
当一条命令执行失败时,输出的结果称为标准错误输出。
标准错误输出在Linux中用2表示,因此2> 和 2>>表示标准错误输出,2不能省略!
将正确结果输出到success中,将错误结果输出到error中去
cd chai > success 2> error
将错误信息直接忽略
cd chai 2> /dev/null
PS:/dev/null称为垃圾黑洞,类似于垃圾箱。
将成功和错误信息输出到一个文件中
cd chai >log 2> log
上述方式会产生巨大的bug!因为标准输出和标准错误输出会交替执行,输入到同一个文件会产生数据混为一潭,为了避免这种情况可使用如下方式:
cd chai &> log
创建一个新文件,并从键盘输入文件数据:
cat > 文件名
该命令执行后会要求你输入文件内容,按ctr+d结束输入:
chai bo zhou is a baby
然后一个含有内容的文件就会被创建。
PS:不要问我为什么,我也不知道为什么!
创建一个新文件,从指定文件中读取数据:
cat > 文件名 < 指定文件
上述命令执行后指定文件中的数据将会拷贝到新建的文件中去。
创建一个新文件,从指定文件中读取数据,并以EOF作为结束符:
cat > 文件名
命令连接符用于连接多个命令,能够控制命令的执行次序。
分号连接的两个命令只有先后次序而没有关联性,第一个命令执行结束后便会执行第二个命令。
命令1 && 命令2
若第一个命令执行成功才会执行第二个命令;
若第一个命令执行失败,则不会执行第二个命令。
命令1 || 命令2
若第一个命令执行成功,则不执行第二个命令;
若第一个命令执行失败,才会执行第二个命令。
若./chai不存在则创建该命令,若存在则不作任何操作:
ls ./chai || mkdir chai
若./chai存在则显示“存在”,若不存在则显示“不存在”:
方法一:
ls ./chai && echo "存在" || echo "不存在"
方法二:
ls ./chai || echo "不存在" && echo "存在"
这两者等价。