前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux入门】数据流重定向

【Linux入门】数据流重定向

原创
作者头像
参谋带个长
发布2024-02-08 16:35:05
1510
发布2024-02-08 16:35:05
举报

数据流重定向概念

在 Linux 中,数据流重定向是一种将命令的输出或错误输出从一个地方(如屏幕)重定向到另一个地方(如文件或设备)的技术。

数据流重定向主要涉及三个部分:标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。

1、标准输入是程序从其输入设备(如键盘)接收数据的通道。 2、标准输出指的是命令执行所返回的正确信息。 3、标准错误输出是命令执行失败返回的错误信息。

输入输出使用格式

标准输入(stdin):代码为0,使用<<<

标准输出(stdout):代码为1,使用>>>

标准错误输出(stderr):代码为2,使用2>2>>

标准输出使用方法及示例

使用示例:

代码语言:bash
复制
# 直接输出到屏幕上
ll /

# 可能返回以下内容
total 72
lrwxrwxrwx.   1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Jan  8 16:48 boot
drwxr-xr-x    2 root root  4096 Nov  5  2019 data
drwxr-xr-x   19 root root  3040 Feb  8 15:29 dev
drwxr-xr-x.  95 root root 12288 Feb  8 15:29 etc
drwxr-xr-x.   3 root root  4096 Feb  8 15:29 home
lrwxrwxrwx.   1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwx------.   2 root root 16384 Mar  7  2019 lost+found

# 输出信息至某个文件
ll / > /root/fileinfo

# 查看文件内容
cat /root/fileinfo

# 返回的内容与直接运行命令相同,表明信息被输出到文件中
total 72
lrwxrwxrwx.   1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Jan  8 16:48 boot
drwxr-xr-x    2 root root  4096 Nov  5  2019 data
drwxr-xr-x   19 root root  3040 Feb  8 15:29 dev
drwxr-xr-x.  95 root root 12288 Feb  8 15:29 etc
drwxr-xr-x.   3 root root  4096 Feb  8 15:29 home
lrwxrwxrwx.   1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwx------.   2 root root 16384 Mar  7  2019 lost+found

以示例中 /root/fileinfo 进行说明(同理也适用于错误信息):

  1. 文件若不存在,执行命令时系统会自动建立
  2. 文件若存在(示例中/root/fileinfo),以>执行命令时会先清空内容然后写入(即覆盖)
  3. 文件若存在(示例中/root/fileinfo),以>>执行命令时会将信息追加在文件内容后(即累加)

文件及内容建立规则

  1. 文件若不存在,系统则自动建立
  2. >覆盖的方式将正确的数据输出到指定文件上
  3. >>累加的方式将正确的数据输出到指定文件上
  4. 2>覆盖的方式将错误的数据输出到指定文件上
  5. 2>>累加的方式将错误的数据输出到指定文件上

/dev/null 特殊用途

/dev/null 是一个特殊的文件,被称为“空设备”或“空设备文件”。这个文件会丢弃所有写入到它的数据,就好像一个黑洞一样。当读取/dev/null时,它立即返回一个文件结束(EOF)标记。

在命令行操作中,/dev/null 常常被用来丢弃不需要的输出。例如运行一个命令,但是并不关心这个命令的输出,可以将输出重定向到 /dev/null,这样命令的输出就会被丢弃,不会显示在终端或者写入到其他文件。

命令示例:

代码语言:bash
复制
# 输出的内容被丢弃
ll / > /dev/null

标准输入使用方法及示例

<<< 是用于将原本需要由键盘输入的数据,改为由文件内容来输入。

<命令示例:

代码语言:bash
复制
# 建立文件
vim 1.txt

# 输入内容
hello~

# 输入信息至文件testfile,内容则是由 1.txt 中的内容来输入
cat > testfile < /root/1.txt

# 查看文件testfile
cat testfile

# 可能返回以下内容
hello~

以上命令执行的结果为,testfile文件的内容由原本需要由键盘输入的数据,改为由指定文件1.txt的内容来输入。

<<命令它允许定义多行的字符串,以下为使用方法及示例:

代码语言:bash
复制
# 使用方法
command << EOF
这里是内容
可以多行
EOF

# command 表示命令
# EOF 表示输入结束
代码语言:bash
复制
# 使用示例
cat > test_file << EOF
hello
OK
EOF

# 读取文件
cat test_file

# 可能返回以下内容
hello
OK

合理使用数据流重定向功能,可以保存输出结果、处理错误信息、分离正常输出和错误输出以及屏蔽不需要的输出,从而提高命令或程序的可靠性和可维护性。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据流重定向概念
  • 输入输出使用格式
  • 标准输出使用方法及示例
    • 文件及内容建立规则
      • /dev/null 特殊用途
      • 标准输入使用方法及示例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档