将输出重定向到文件程序
标准输入、输出和错误
一个运行的程序(或称为进程)需要从某位置
读取输入并将输出
写入某位置
shell 命令通常会从键盘输入,在终端窗口输出,进程使用称为 file descriptors 的通道来处理输入和输出,所有进程至少使用三种 file descriptors:
stdin
Standard input (channel 0 通道0):读取键盘输入 仅读取
stdout
Standard output (channel 1):将正确输出发送到 terminal 仅写入
stderr
Standard error (channel 2):将错误输出发送到 terminal 仅写入
如果程序打开连接至其他文件的单独连接,则可能使用更大编号的文件描述符
将输出重定向到文件
I/O 重定向可更改进程获取其输入或输出的方式
从文件读取或向文件写入信息(而不是从键盘读取和输出到 terminal)
仅重定向stdout不会阻止stderr错误消息显示在终端上。如果文件不存在,则会创建文件。如果文件确实存在,但是所需的重定向没有附加到文件,则该文件内容将被覆盖。也可以使用重定向到 /dev/null 来丢弃错误输出,而不在 terminal 显示
> 覆盖
>> 附加
重定向举例
构建管道
管道包含多个命令,用竖线字符 ( | ) 分隔,管道将第一个命令的
标准输出
连接到下一个命令的
标准输入
# head将ls -t 输出的前十行 重定向到 /tmp/ten-last-changed-files文件中
管道、重定向和 tee
当重定向与管道组合时,重定向的优先级高于管道,第一个命令不会在屏幕上显示任何输出, 但
tee 命令
可用于解决这个问题
# ls命令的输出只会转移至文件,less不会在终端上显示任何内容
# ls命令的输出重定向到 /tmp/saved-output文件 ,并且将输出传递到 less 显示
从 Shell 提示符进行编辑
使用 VIM 编辑文件
Linux 的一个重要原则是信息和配置通常都存储在基于文本的文件中,文 本文件的优点在于易于查看和编辑
Vim 是随 Linux 和 UNIX 系统的 vi 编辑器的改进版本。Vim 对于有经验的 用户而言具有很高的可配置性和效率,其包含分屏编辑、颜色格式和突出 、显示编辑文本等功能
Vim 模式
Vim模式分为:命令模式、扩展命令模式、编辑模式和可视模式
vim
以 command 命令模式启动,
i
进入 edit 插入模式,
Esc
退回 command 模式
v
进入 VISUAL可视 模式
shift+v
选择多行 进入VISUAL LINE模式
ctrl+v
选择块 进入VISUAL BLOCK模式
:
进入 extended 自动扩展模式,执行保存、退出等工作
:w
保存文件,
:wq
保存退出,
:q!
强制退出
在 command 模式下,
u
撤销,
x
删除单个字符 ,
y
复制(),
p
粘贴
使用 Shell 变量
Bash shell 可以设置变量,甚至将变量导出成为环境变量,从而自动带入启动的程序
变量相当于一个容器,可以用来保存各种不同类型的值,如数字、字符串、布尔值等。
shell 变量对于 shell 会话是唯一的。如果打开了两个终端运行两个shell,那么每个shell都有自己的一组shell变量值
为变量赋值
变量名称可以包含大写或小写字母、数字和下划线字符 _
以上变量赋值只对当前 shell 有效
set 命令可以查看当前所有变量 # 将所有变量输出通过管道传输到 less 命令中
查询和取消变量值
通过
echo $variable_name
获得变量值(在变量名称前加 $ )
查询和取消变量值
使用
unset
命令取消变量赋值
使用 Shell 变量配置 Bash值
有些 shell 变量可以在 Bash 启动时设置,但可以进行修改来调整 shell 的行为 ,例如影响 history 命令的两个变量 HISTFILE 和 HISTFILESIZE
环境变量
环境变量是操作系统提供的一种机制,用于存储和传递与操作系统环境相关的信息。它们是具有特定名称和对应值的变量。环境变量在操作系统级别上起作用,可以被所有用户、进程和程序访问和使用。它们包含了一些重要的配置信息,如系统路径、语言设置、用户偏好等。
shell 提供了一个环境,可以从中运行程序
不是环境变量的 Shell 变量只能由 shell 使用。环境变量不仅可以由 shell 也可以从该 shell 运行的程序使用
环境变量 PATH,shell 会在其中目录中查找程序
#含有程序目录的冒号分隔的列表
使用 export -n variable_name 取消环境变量赋值, export 命令可以将变量导出成为环境变量
自动设置变量
bash 启动时,会从 /etc/profile、/etc/bashrc 、~/.bash_profile 和 ~/.bashrc 中导入环境变量(运行的确切脚本取决于基于 shell 启动方式, 是交互式登录 shell、交互式非登录 shell 还是 shell 脚本)
如果要更改启动时影响所有
交互式shell
提示符的用户账户,编辑(vim)
~/.bashrc
文件