红帽系统管理一 5章节 创建查看和编辑文本文件

标准输入,标准输出和标准错误

进程使用称为文件描述符的编号通道来获取输入并发送输出。所有进程都至少有三个通道:通道0,stdin,标准输入,指从键盘读取输入。通道1,stdout,标准输出,将正常发送到终端。通道2,stderr,标准错误,将错误信息发送到终端。如过程序打开连接至其他文件的单独连接,则需要其他更大编号的通道。

输入输出重定向

输出重定向操作符

操作符说明
> file重定向stdout,如果文件不存在则会创建,存在则会覆盖,不影响stderr
>> file重定向stdout,如果文件不存在则会创建,存在则会追加,不影响stderr
2> file重定向stderr,如果文件不存在则会创建,存在则会覆盖,不影响stdout
2> /dev/null重定向stderr至/dev/null,以此丢弃
&>file 或 >file 2>&1重定向stdout和stderr至同一文件,如果文件不存在则会创建,存在则会覆盖
&>>file 或 >>file 2>&1重定向stdout和stderr,如果文件不存在则会创建,存在则会追加
重定向示例
[root@#test ~]# date > /tmp/save_time
[root@#test ~]# 
[root@#test ~]# tail /tmp/save_time 
2023918日 星期一 23:21:40 CST

构建管道

管道是一个或多个命令构成的序列,用 | 来分隔。管道将第一个命令的标准输出连接到下一个命令的标准输入。
I/O重定向和管道都可以操作标准输出和标准输入。I/O重定向的对象是文件,从文件获取标准输入,或向文件标准输出。管道的对象是进程,将一个进程的标准输出发送到另一个进程的标准输入。

管道示例
[root@#test ~]# ls -l
总用量 12
-rw-------. 1 root root 1257 88 11:26 anaconda-ks.cfg
-rw-r--r--  1 root root  447 916 16:56 editing_final_lab_1694854574.txt
-rw-r--r--  1 root root 1942 916 18:04 editing_final_lab.txt
[root@#test ~]# 
[root@#test ~]# ls | wc -l
3

I/O重定向,管道和tee

当重定向和管道组合时,管道会首先被设置(或者说被执行),然后在执行重定向。因此,如果管道中执行了输出重定向,则输出将会被重定向到文件,而不会前往管道的下一个命令。
如下,执行后会打开less,但是less里面并没有内容。而在/tmp/save_output中会有ls的输出。

[root@#test ~]# ls >/tmp/save_output |less
[root@#test ~]# 
tee命令

tee命令避免了上述情况。tee命令功能是从标准输入读取,再写入标准输出和文件。(将前面命令的输出作为输入,分别发送给标准输出即终端和参数指定的文件)

[root@#test ~]# ls |tee /tmp/save_output  #将ls的输出发送给了终端和
#/tmp/sava_output
anaconda-ks.cfg
editing_final_lab_1694854574.txt
editing_final_lab.tx
注意

可以使用管道来重定向标准错误,但是不能使用合并重定向运算符(&> 和 >>&)来执行此操作。以下是正确命令。

vim编辑器

vim管理模式

打开vim,他会以命令模式启动。此时
i 键:进入插入模式,在此模式下进行文本输入。按esc返回到命令模式。
v ,shift+V 或 Ctrl+V :进入可视模式,在此模式下"Shift+V"对文件进行按行选择,"Ctrl+V"对文件进行按块选择。
按:键启动命令拓展模式,对文件进行保存等操作。

在命令模式中,u键可撤销最近的编辑。X键可删除单个字符。

重排现有文本
在vim中复制和粘贴称为拖拉和放置,使用的命令字符是y和p,首先将光标定位到要选择的第一个字符。然后进入可视模式,使用箭头键扩展可视选择准备好时,按y将所选内容拖放到内存中,将光标定位到新位置上,然后按p将所选内容放置到光标处。

更改shell环境

使用shell变量

bash shell 允许设置shell变量,可以使用shell变量来帮助运行命令或修改shell的行为。此外可以将shell变量导出为环境变量,环境变量会在程序启动时自动复制到从该shell运行的程序中。
因此可以使用变量来更轻松的运行带有长参数的命令,或者将常用设置应用于从该shell运行的命令。
shell变量对于特定的shell会话是唯一的,如果打开了两个终端窗口,或者通过两个独立的登录会话,登录同一远程服务器,此时运行的是两个不同的shell,每个shell都有自己的一组变量值。
以下语法定义变量。注意,等号两边不能有空格。

[root@#test ~]# VARIABLE=VALUE

可以使用set命令查看当前设置的所有shell变量,他还会列出所有shell函数,这个列表很长,一般配合less命令使用。

[root@#test ~]# set | less
使用变量拓展检索值

使用 变量拓展 来指代已设置的变量值。(在变量名前加上符号 $)
一种实际的示例是使用变量来指代多个命令的长文件名。
变量名称左右有任意别的字符时,都应该用花括号保护变量名称。

[root@#test ~]# var1=/tmp/save_time
[root@#test ~]# ls -l $var1
-rw-r--r-- 1 root root 43 102 23:21 /tmp/save_time
使用shell变量配置bash

某些shell变量在bash启动时被设置,以此来配置和调整shell的行为。比如,变量 HISTFILE 和 HISTFILESIZE,前者将会指定shell历史记录文件的存储位置,通常情况下这是 ~/.bash_history。后者将会指定历史记录的命令的个数。

使用环境变量配置程序

shell为程序运行提供一个环境,此环境包括有关文件系统上当前工作目录信息,传递给程序的命令行选项以及环境变量的值。不是环境变量的shell变量只能有shell本身使用,环境变量可以由shell和此shell运行的程序使用。
通过export导出变量为环境变量。

[root@#test ~]# export EDITOR=vim
[root@#test ~]# 

应用程序和会话使用这些环境变量来确定某些行为。比如,shell启动时会自动晶HOME变量设置为用户主目录的的文件名,用以帮助程序确定保存文件的位置。LANG用以设置区域,调整语言。
环境变量PATH,PATH变量包含一个含成簇的目录的冒号分隔的列表。

[root@#test ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin

每当运行系统二进制命令时(比如ls),shell将会按照上面列表的顺序注意的查找名为“ls”的可执行文件,然后运行匹配到的第一个文件。通常ls会在/usr/bin/ls。

可以在PATH变量后添加其他目录。例如,当我们希望像运行常规命令那样运行我们在 /home/user/sbin 的可执行程序或者脚本,可以将 /home/user/sbin 添加到PATH的末尾。

[root@#test ~]# export PATH=${PATH}:/home/user/sbin
[root@#test ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/home/user/sbin

环境变量EDITOR,设置默认文本编辑器,如果不指定,多数程序使用vi或者vim,可以手动覆盖为nano。
注意:按照惯例,shell自动设置的环境变量和shell变量均为全大写的英文字符名,如PATH。因此,我们设置shell变量时最好使用小写。

自动设置脚本

如果希望在shell启动后自动设置shell或环境变量,可以编辑bash启动脚本。当shell启动时,会运行几个包含shell命令的文本文件,以初始化shell环境。
运行的确切脚本取决于shell的启动方式,交互式登录shell,交互式非登录shell或者shell脚本。
在默认情况下,如果要更改影响所有交互式shell提示符的用户账户,请编辑 ~/ . bashrc 文件。
此处其他细节待补充。。。。。

取消设置变量和取消导出变量

unset 命令,完全取消设置变量和导出变量。

[root@#test ~]# unset var1
[root@#test ~]# echo $var1

[root@#test ~]# 

export -n 命令,指取消导出,不取消设置为shell变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值