命令简介
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
注意:
- 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
- 标准输出文件(stdout):stdout的文件描述符为1,Unix程序默认向stdout输出数据。
- 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
默认情况下,command > file 将 stdout 重定向 file,command < file 将 stdin 重定向 file
输出重定向
echo "Jack" > users
cat users # 输出 Jack
echo "Tom" > users
cat users # 输出 Tom
注意:输出重定向会覆盖文件内容,如果不希望覆盖原文件内容可以使用追加
echo "Mary" >> users
cat users
# 输出结果
Tom
Mary
输入重定向
接着上面的实例,统计users文件行数,执行以下命令:
wc -l users # 输出结果为 2 users
# 将输入重定向到 users
wc -l < users
# 输出结果为 2
注意:第一个例子会输出文件名,第二个不会,因为它仅从标准输入读取内容。
同时替换输入和输出
执行command,从 infile 读取内容,将输出写入 outfile 中。
command < infile > outfile
实例:
# 新建infile文件,内容输入2行字符串
wc -l < infile > users
cat users
# 输出结果为
2
文件符重定向
如果希望将 stderr 重定向到文件,可以这样写:
command 2 > file
其中2表示标准错误文件,如果希望追加可以用追加的命令。
commadn 2 >> file
如果希望将 stdout 和 stderr 合并后重新定向到file,格式为:
command > file 2>&1 或 command >>file 2>&1
例如
ls 2 users > users 2>&1
cat users
# 输出结果为
ls: 无法访问2: 没有那个文件或目录
users