一个计算机技术爱好者与学习者

0%

好好学Linux:输入输出重定向

1. 重定向语法

1.1. 文件描述符

  • 0:标准输入
  • 1:标准输出,默认指向屏幕
  • 2:错误输出,默认指向屏幕
  • /dev/null: 黑洞

1.2. 重定向操作符

  • >:将命令的标准输出重定向到指定文件
  • >>:将命令的标准输出追加到指定文件的末尾
  • <:将命令的标准输入重定向为指定文件的内容
  • |:将一个命令的标准输出作为另一个命令的标准输入
  • &>:将命令的标准输出和错误输出重定向到指定文件

2. 重定向示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 标准输出重定向到文件
ls >out.txt
cat out.txt
# 等同于
ls 1>out.txt
cat out.txt

# 错误输出重定向到文件
ls 2>out.txt
cat out.txt
ls xxx 2>out.txt
cat out.txt

# 标准输出和错误输出都重定向到文件
(ls xxx || ls) &>out.txt
cat out.txt
# 等同于
(ls xxx || ls) >out.txt 2>&1
cat out.txt

# 标准输出和错误输出都丢弃
(ls xxx || ls) &>/dev/null
# 等同于
(ls xxx; ls) &>/dev/null

3. 重定向应用

3.1. 输出到屏幕和文件

输出内容同时到屏幕和文件:

1
echo "hello" | tee test.log

3.2. 清空文件内容

清空test.txt文件中的内容

1
2
3
4
5
echo "" > test.txt
echo -n "" > test.txt
cat /dev/null > test.txt
:> test.txt
> test.txt

3.3. cat写入文件

新建文件:

1
2
3
4
5
6
7
8
9
cat <<EOF > test.txt
hello world
welcome to python world!
EOF

cat <<EOF | tee test.txt
hello world
welcome to python world!
EOF

追加内容:

1
2
3
4
5
6
7
8
9
cat <<EOF >> test.txt
hello world
welcome to python world!
EOF

cat <<EOF | tee -a test.txt
hello world
welcome to python world!
EOF

写入的内容有$符:

1
2
3
4
5
cat <<EOF > /etc/init.wsl
#!/bin/sh
/etc/init.d/cron \$1
/etc/init.d/ssh \$1
EOF
  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-linux-io-redirect/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~