linux shell 输入输出重定向

linux 系统通常从终端接受用户输入,处理完成后将结果输出到终端。标准输入设备通常是键盘输入,当然也可以将输入重定向为文件或其他设备。标准输出设备通常是显示器终端窗口,当然也可以将输出重定向到文件或其他设备。下面简单介绍 linux shell 环境下常用的输入输出重定向的用法。

在 linux 环境下,通常使用文件描述符 0 代表标准输入(stdin),1 代表标准输出(stdout),2 代表标准错误输出(stderr),在使用命令行时,可直接使用 0,1,2 表示对应的标准输入和输出。

1. 输入重定向

# 将 file 文件内容作为输入,传递给程序 command

command < file

# 示例:将 test.sql 文件传递给 mysql 客户端执行
mysql < test.sql

2. 输出重定向

(1)标准输出重定向

command > log
或者
command 1> log

# 示例1,将 date 命令输出的内容重定向到文件 date.log 中,覆盖写入
date > date.log

# 示例2,将 date 命令输出的内容重定向到文件 date.log 中,追加写入
date >> date.log

# 示例3,1表示标准输出
date 1> date.log

(2)标准错误输出重定向

command 2> log

# 示例1,date 命令不能识别 -error 参数,报错信息输出到 stderr,重定向到文件 error.log 中
date -error 2> error.log

# 示例2,追加模式写入
date -error 2>> error.log

(3)标准输出和标准错误输出合并后一起重定向

command > log 2>&1
或者
command >> log 2>&1

# 示例1,date 命令重定向
date > date.log 2>&1

# 示例2,追加模式写入
date >> date.log 2>&1

3. 标准输入输出合并重定向

可以在一个命令中同时使用输入重定向和输出重定向,如将 infile 作为输入,outfile 作为输出,如下:

command1 < infile > outfile

4. 特殊的 /dev/null 文件

/dev/null 可以理解为是一个垃圾桶,任何标准输出,包含标准错误输出,都可以重定向到这个特殊的文件中,如下所示:

command > /dev/null
或
command > /dev/null 2>&1

5. 带有回车的文本作为标准输入

如果标准输入的内容是一段文本,其中包含多个回车符,这样的文本也可以通过标准输入传递给命令,如下:

# 示例
cat << EOF
this is text1
this is text2
this is text3
EOF

文章评论

0条评论