第五章
一,将输出重定向到文件或程序
1.标准输入、标准输出和标准错误
2.将输出重定向到文件
(1)作用:改变程序如何接收输入和输出结果。可以把数据引到其他的文本文件中, 而不是默认从键盘输入或在屏幕上输出。如果这个文本文件不存在 的情况下,会自动创建该文件。
(2)输出重定向操作符
<1> > 重定向输出(覆盖)
<2> >> 重定向输出(追加)
<3> 2> 只收集错误的输出结果(覆盖)
<4> 2>/dev/null 丢弃错误的输出
<5> >file 2>&1 或者 &> 正确错误都收集(覆盖)
<6> >>file 2>&1 或者 &>> 正确错误都收集(追加)
3.构建管道
(1)概念:就是将一个进程的标准输出发送到另一个进程的标准输入
(2)管道、重定向和附加到文件
重定向和管道可以一起使用,但它们的顺序很重要,Shell会先设置整个管道,再处理重定向。如果在管道中间用输出重定向,输出就不会继续流向下一个命令,而是会被保存文件里。
(3)使用tee命令
tee 命令可以让数据同时“继续向前流“和“存到文件”,它不会像普通的重定向那样打管道。可以把 tee想象成一个分流器,把数据分成两部分:一部分保存到文件里,另一部分继续传递给下一个命令。
(4)如果要通过管道传递标准错误和标准输出,应该用 2>&1 | 这种写法,而不是使用 &> 或 &>> 的简便方式。
注:管道和I/O重定向
管道和 I/O重定向都可以操作标准输出和标准输入。
管道会将一个进程的标准输出发送到另一个进程的标准输入。
I/O重定向会向文件发送标准输出,或从文件获取标准输入。
二、从shell提示符编辑文本文件
1.使用vim编辑文件
(1)vim操作模式
<1>命令模式:默认进入vim时就是命令模式。
功能:用来执行导航、复制、删除、粘贴、移动光标等操作
<2>扩展命令模式:在命令模式下按 ;
功能
:
用来输入底部命令行的命令,如保存、退出、查找替换等操作
常用命令: :w保存文件。
:q 退出 Vim。
:wq 或 :x 保存并退出。
:q! 强制退出不保存
<3>编辑模式:在命令模式下按 i I a A o O
等
功能:
用于插入或修改文本
常用进入方式: i:在光标前插入。
I:在行首插入。
a:在光标后插入。
A:在行尾插入。
o:在当前行下方插入新行。
O:在当前行上方插入新行。
<4>可视模式:在命令模式下按v进入可视模式
功能:突出显示和操作不同行和列的文本
常用模式:字符模式 v :选中某个单词或部分文字进行复制或删除。
行模式 V:想快速复制或删除多行。
块模式 ctrl+v:选中表格的一列、、文字的一部分进行对齐或替换
(2)重排现有文本
y复制
p粘贴
(3)vim配置文件
<1>/etc/vimrc:这是系统级的配置文件,修改它会影响系统上所有用户的 vim行
<2>~/.vimrc:这是用户自己的配置文件,修改它只会改变你这个用户的 vim行为,其他不会受影响。
三,更改shell模式
1.shell变量用法:只在当前 shell 有效
(1)为变量分配值
(2)使用变量扩展检索值:要使用变量扩展的时候,要在变量名称上面加上美元符号$
2.使用环境变量配置环境:会传递到从当前 shell 启动的程序中
(1)使用 export
命令可以把普通变量变成环境变量。
(2)将HOME变量设置为用户主目录的文件名,使用这个变量帮助程序确定保存文件的位置
(3)LANG变量设定的是区域设置编码,此变量会调整输出的首选语言,字符集,日期,数字和货币的格式。
(4)PATH包含一组用冒号 : 分隔的目录路径列表。当在终端中运行一个命令(如 ls )时,系统会按照 PATH 变量中定义的目录顺序,去这些目录中 查找对应的可执行程序。
3.设置自动变量
如何在不同的情况下自动设置变量,让它们在 Bash shell 启动 时自动生效
(1)交互式shell直接在终端里输入命令,就是交互式shell
分为两类:
<1>登录shell:
* 通过登录(本地登录或远程 SSH 登录)进入系统的终端。
* 启动文件:
系统级别:/etc/profile
用户级别:~/.bash_profile
* 这些文件用来设置只在登录时生效的变量。
<2>非登录shell:
* 从当前系统里打开一个终端或者运行一个 Shell脚本。
* 启动文件:
系统级别:/etc/bashrc
用户级别:~/.bashrc
* 用来设置每次打开终端时生效的变量
(2)非交互式shell:运行在后台的 Shell,比如用 Bash 执行脚本,用户不需要直接操作。
(3)需要修改的文件:
<1>设置变量适用于所有终端(每次打开都生效)
* 编辑 ~/.bashrc 文件。
* 这是最常用的设置方法,适合定义经常需要的变量,比如 PATH。
<2> 设置变量只在用户登录时生效
* 编辑 ~/.bash_profile 文件
* 适合定义登录后只需要执行一次的变量
<3>对整个系统生效的设置
* 修改 /etc/profile 或 /etc/bashrc 文件
* 需要管理员权限,用于系统所有用户的全局配置。
总结表格
4.取消设置和取消导出变量与别名
(1)unset:取消设置和取消导出变量
(2)export -n :取消导出变量但不取消设置它
(3)unalias:取消设置别名