快速上手Linux系统输入输出

一、管理系统中的输入输出

1.什么是重定向?

将原本要输出到屏幕上的内容,重新输入到其他设备中或文件中

重定向类型包括

  • 输入重定向
  • 输出重定向

2.输入重定向

指定设备(通常是文件或命令的执行结果)来代替键盘作为新的输入设备

|---------|-----------------------------------------------------------------------|---------------------|----------------------------------------------------------------------------|
| 单行输入重定向 | tr 'a-z' 'A-Z' < file | 把file文件中的内容定向到tr程序中 | |
| 多行录入 | tr 'a-z' 'A-Z' <<man ##(此字符任意) aaa bbb ccc ddd man (当首字母再次出现表示录入结束) | | |

3.输出重定向

将原本要输出在屏幕上的结果放到指定的设备(通常是文件)

重定向作用

1.当屏幕输出的信息很重要,而且希望保存重要的信息备份

2.不干扰屏幕的使用,例如ping baidu

3.储存错误/报错日志

4.定时任务的运行结果

5.执行一个命令,把报错信息丢弃到/dev/null

6.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。

  • 输出重定向类型

|------|---------|----------------------------------------------------------------------------|
| > | 重定向正确输出 | |
| 2> | 重定向错误输出 | |
| &> | 重定向所有输出 | |

👾注意:输出重定向会覆盖源文件内容

  • 追加定向类型

|--------|-----------|----------------------------------------------------------------------------|
| >> | 追加正确输出到文件 | |
| 2>> | 追加错误输出到文件 | |
| &>> | 追加所有输出到文件 | |

👺注意:追加定向不会覆盖原文件内容,而是添加内容

4.管道

管道在Linux中是一种特殊的文件类型,它在内存中创建一个缓冲区,用于存储一个命令的输出和另一个 命令的输入。当使用管道连接命令时,前一个命令的标准输出(stdout)会被重定向到管道的写端,而 后一个命令的标准输入(stdin)会被连接到管道的读端

|-------------------|------------------|----------------------------------------------------------------------------|
| ls /bin/ | wc -l | 统计/bin/ 目录中有多少文件 | |

  • 2>&1

当使用管道时,只有正确输出会被管道处理,错误输出是无法通过管道的,如果想让管道处理错误输出,需要把错误输出放到正确输出的设备中,2>&1就是用来完成此操作的

|-----------------------------------------|-----------------|----------------------------------------------------------------------------|
| find /etc/ -name passwd 2>&1 | wc -l | 统计find命令输出结果的行数 | |

  • tee

当输出通管道后,内容就被管道处理了,如果要看到输出内容需要对输出内容进行复制然后再通过管道处理

|------------------------------------------------------|----------------------------------------------------------------------------|
| find /etc -name passwd 2>&1 | tee pd.all | wc -l | |

相关推荐
王道长服务器 | 亚马逊云5 分钟前
AWS Elemental MediaConvert:视频转码不再难
linux·服务器·网络·云计算·音视频·aws
Jm_洋洋9 分钟前
【Linux系统编程】程序替换:execve(execl、execlp、execle、execv、execvp、execvpe)
linux·运维·c语言·开发语言·程序人生
HIT_Weston17 分钟前
14、【Ubuntu】【VSCode】VSCode 断联问题分析:hostname(二)
linux·vscode·ubuntu
冲上云霄的Jayden35 分钟前
bash执行脚本 CondaError: Run ‘conda init‘ before ‘conda activate‘
linux·ubuntu·conda·bash·init·activate
驱动探索者1 小时前
影石Insta360发展史:从深圳公寓到全球影像创新标杆
linux
Wang's Blog1 小时前
Linux小课堂: SSH 免密登录原理与实现之基于公钥认证的安全连接机制
linux·安全·ssh
戴草帽的大z2 小时前
交叉编译FFmpeg:从x264到RK3588部署实战
linux·ffmpeg·rk3588·h.264·aarch64
qiuiuiu4132 小时前
正点原子RK3568学习日志19- Linux错误处理 字符驱动框架完全体
linux·服务器·学习·ubuntu
如果是君2 小时前
【git使用】ubuntu下利用git工具提交一个工程
linux·git·ubuntu
橘颂TA2 小时前
【Linux】 层层递进,抽丝剥茧:调度队列、命令行参数、环境变量
linux·运维·服务器·c/c++