命令逻辑符和输出重定向

命令逻辑符

linux命令逻辑符包括 ;&&||| ,这三种命令逻辑符的相关描述分别为:

ls ; ls -ltr 无论第一个命令是否正确执行,第二个命令都会执行。
ls && ls -ltr 第一个命令正确执行,第二个命令才会执行。
ls || ls -ltr 第一个命令非正确执行,第二个命令才执行。

下面就来详细说一下这三种命令逻辑符的用法和场景。

1
2
3
4
5
6
7
8
9
10
11
# 进入tmp目录,删除指定文件。
cd ~/tmp ; rm -f test

# 如果存在tmp目录,则删除文件,不存在则不操作。
cd ~/tmp && rm -f test

# 如果不存在tmp目录,则新建目录。
cd ~/tmp || mkdir ~/tmp

# 如果存在tmp目录,则删除文件,不存在则输出指定信息。
cd ~/tmp && rm -f test || echo "文件夹不存在!"

需要注意的是,每个命令逻辑符的两边,都是独立的命令。比如普通用户使用root权限进行安装时 sudo make && make install 这样往往会提示权限不够,因为 make install 是一条独立的命令,需要单独加上 sudo ,即 sudo make && sudo makeinstall

输出重定向

命令 > 文件 –以覆盖的方式,把命令的正确输出保存到指定文件或设备。

ls -ltr > ls.log

命令 >> 文件 –以追加的方式,把命令的正确输出保存到指定文件或设备。

ls -ltr >> ls.log

命令 2> 文件 –以覆盖的方式,把命令的错误输出保存到指定文件或设备。

cd ~/tmp 2> error.log

命令 2>> 文件 –以追加的方式,把命令的错误输出保存到指定文件或设备。

cd ~/tmp 2>> error.log

命令 > 文件 2>&1 –以覆盖的方式,把命令的正确输出和错误输出保存到同一个文件或设备。

ls > info.log 2>&1 ; lsa > info.log 2>&1

命令 >> 文件 2>&1 –以追加的方式,把命令的正确输出和错误输出保存到同一个文件或设备。

ls >> info.log 2>&1 ; lsa >> info.log 2>&1

命令 &> 文件 –以覆盖的方式,把命令的正确输出和错误输出保存到同一个文件或设备。

ls &> info.log ; lsa &> info.log

命令 &>> 文件 –以追加的方式,把命令的正确输出和错误输出保存到同一个文件或设备。

ls &>> info.log ; lsa &>> info.log

命令 >> 文件1 2>>文件2 –把命令正确的输出追加到文件1,错误的输出追加到文件2。

ls >> info.log 2>> error.log ; lsa >> info.log 2>> error.log