系列文章目录
第一章 红帽企业Linux入门
第二章 访问命令行
第三章 从命令行管理文件
第五章 创建、查看文本文件
文章目录
前言
通过命令行输出或在编辑器中创建、查看文本文件。
一、重定向
1、定义
重定向(Redirection) 允许我们控制命令的输入和输出,将它们定向
到文件、设备或其他命令。它主要作用于文件描述符
。
重定向就是改变这些输入输出的流向,比如:
- 将标准输出保存到文件
- 将错误信息丢弃
- 从文件读取输入
- 同时处理标准输出和标准错误
2、文件描述符
在终端中,默认情况下:
- stdout(标准输出)和 stderr(标准错误)都会显示在屏幕上。
- stdin(标准输入)通常来自键盘输入。
3、重定向和文件描述符操作
在 Shell 中,可以使用重定向符号来控制文件描述符的输入和输出。
其中 command > file 等价于 command 1> file。
4、管道符与 tee 命令
作用:
管道符 |
将前一个命令的输出作为后一个命令的输入。
- 如果将重定向与管道组合,shell 会首先
设置整个管道
,然后重定向输入/输出。如果在管道的中间使用输出重定向,则输出将转至文件
,而不是前往管道中的下一个命令。 - 例如:
command1 | command2 | command3- Shell 先创建管道,将 command1 的 stdout 连接到 command2 的 stdin,command2 的 stdout 连接到 command3 的 stdin。
- 启动所有命令,并并行执行。
- 数据从 command1 经过 command2,最后流入 command3。
tee 命令
克服了这个限制。在管道中,tee 将其标准输入复制到其标准输出中,并且还将标准输出重定向到指定为命令参数的文件。
如果将数据想象成流经管道的水,那么可将 tee 视觉化为管道中的T形接头,它负责输出在两个方向上的流向。
tee 将标准输入(stdin)同时写入标准输出(stdout)和一个或多个文件,默认也会把数据输出到终端。
本质上 tee 复制
了数据,并且不会中断
| 的数据流。
使用:
通常,tee 用在 | 之后
,它可以让数据:
继续流向下一个管道命令(不会截断)。
同时可写入一个文件,方便保存记录。
举例:
command1 | tee file.txt | command2
数据流示意图:
command1 的输出
│
├──► 保存到 file.txt
│
└──► 继续传递给 command2
tee 在管道中的不同位置:
tee 既可以在管道中间使用,也可以在管道末尾使用,但它的作用会有所不同。
tee 在管道中间
作用:
数据流继续:tee复制
数据,但不会阻断数据流,数据仍然会传给下一个命令。
保存中间数据:可以保存中间步骤的结果,便于调试或分析。tee 在管道末尾
作用:
仅保存最终结果
(不会再传给下一个命令)。
适用于命令输出需要同时保存和显示或者不需要后续处理的情况的情况。
二、更改shell环境
- 使用Bash shell时,可以设置shell变量、将shell变量导出为环境变量。Shell变量对于特定shell会话是唯一的,如果同时打开了两个终端或者通过两个独立的登录会话登陆了同一远程服务器,也就是同时运行了两个Shell,每个终端拥有自己的一组Shell变量值。
1、Sehll变量
变量名称可以包含大小写字母、数字和下划线,变量赋值只对当前Shell有效。
VARIABLENAME=value
:赋值set
:列出当前设置的所有shell变量echo $variable_name
:显示变量的值unset
:取消变量赋值
2、环境变量
环境变量是 Shell 及其子进程 可访问的一组键值对
,用于存储配置信息,比如系统路径、用户信息、语言设置等。它们在 Shell 运行时加载,并影响命令执行的行为。
export variable_name
:将变量导出为环境变量env
:列出特定shell的所有环境变量export -n variable_name
:(not)取消变量的环境导出
3、bash别名
alias
命令创建别名:alias 别名='命令'
三、问答
1、什么是重定向?解释命令的结果:&>> file; 2> /dev/null
重定向是 Shell 提供的一种机制,可以将命令的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)定向到文件或其他设备,而不是默认的终端。
&>> file 追加标准输出和错误到file。
2> /dev/null 丢弃标准错误,不影响标准输出。
2、什么是管道?tee 命令的作用是什么?举例说明。
管道(|)用 将一个命令的输出作为另一个命令的输入,可以实现多个命令的组合。
tee既输出数据到终端,又写入文件,不中断管道。
例如:
ls -l | tee file.txt | wc -l
ls -l 列出文件
tee file.txt 将输出写入 file.txt
wc -l 计算行数(继续处理 ls -l 的结果)
3、请说明 bash 变量和环境变量的区别。
bash变量:
作用范围:当前 shell 进程
仅当前终端会话
有效,关闭终端后消失。
环境变量:
作用范围:当前shell及其子进程
需要export
才能让变量变成环境变量。
4、.分别在/etc/profile、~/.bash_profile 和 ~/.bashrc 设置环境变量时有什么区别?
全局配置放在 /etc/profile。
环境变量放在 ~/.bash_profile。
别名、PS1(提示符)等放在 ~/.bashrc。