《Linux命令行大全——第二部分:配置环境》读书笔记

这部分没有思维导图,一来是一开始读的时候就顺手写成了印象的markdown笔记,二是这部分书条理性比第一部分更清晰点(?)而且我是字太多更喜欢看图的人,这部分字比较少也是我不画图的一个原因,看字就行了【。】
以下是没什么用的阅读推荐BGM
【纯音乐】魔琴傀儡——薛振华

第二部分 配置与环境

第11章 环境

在shell会话调用环境期间,shell会存储大量信息。程序使用存储在环境中的数据来确定配置。大多数系统程序使用配置文件来存储程序设置,但也有一些会查找环境中存储的变量来调整自己的行为。

shell在环境中有两种基本类型的数据,分别是环境变量shell变量,但在bash中,这两种类型基本上没有区别。shell变量是由bash存放的少量数据,环境变量就是除此之外的其他变量。

检查环境

了解环境中存储的内容,可以使用set命令printenv命令。两者不同之处在于,set命令会同时显示shell变量和环境变量并以字母顺序排列,而printenv只会显示后者环境变量。

查询其中某一变量时,可以使用printenv 变量名的方式。

环境是如何建立的

用户登录后,bash程序就会启动并读取一系列称为启动文件的配置脚本,这些脚本定义了所有用户共享的默认环境。接下来,bash会读取更多存储在主目录下的用于顶一个人环境的启动文件。这些步骤执行的确切顺序是由启动的shell会话类型决定的,即login和non-login shell

non-login shell会话会提示用户输入用户名和密码,如虚拟控制台会话。他会读取一个或多个启动文件,并且继承父类进程的环境,父类进程通常是一个login shell

【一个启动文件里会有的东西】
以 .bash_profile 文件为例,其中代码如下:

#.bash_profile
#Get the aliases and functions
if[-f~/.bashrc];then
        .~/.bashrc
fi
# User sprcfic environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

这段代码中,#号开头的是注释,第一段逻辑是if复合命令,在第四部分详解,代码内容可以理解为

If the file "~/.bashrc" exists,then
                 read the "~/.bashrc" file.

第二段代码的重点是PATH变量,这一句的意思是在原先HOME变量的基础上扩展到bin文件夹。最后一段代码使告诉shell,将shell的子进程使用PATH变量的内容

PATH=$PATH:$HOME/bin
export PATH

修改环境

一般来说,在PATH中添加目录,或者定义额外的环境变量,需要讲这些更改放入到 .bash_profile文件中(或是其他的等效文件,取决于系统的发行版本)其他的改变则应该录入到 .bashrc 文件中。除非是系统管理员需要修改用户公用的默认设置。用户也可以修改其他目录下的文件。

一般为了修改这些文件,需要用到文本编辑器,本章中附带介绍的是nano编辑器,步骤如下:

  1. 使用cp命令备份需要修改的文件。如:cp .bashrc .bashrc.bak
  2. 启动nano文本编辑器。如:nano .bashrc
  3. nano退出使用ctrl x保存是ctrl o,修改后保存就再退出就完成对文件的修改了。
  4. 对 .bashrc 文件的读取只有在启动shell时才会做,所以修改也只有重启时才会生效,也可以使用source命令强制bash重新读取文件。如:source .bashrc
  5. 记住修改时要加上注释

第12章 VI简介

上一章修改文件时,由于我的服务器没有安装nano,所以实际上也用VI进行的修改。
VI是Unix的传统核心软件之一,它也是一个文本编辑器,总是可用,是个轻量级的软件,运行速度快。大多数Linux发行版配备的是加强版的vi——vim。
vi的使用步骤如下:

  1. vi命令打开编辑器,如果后面加上已存在的文件名,则会直接打开该文件,如果文件不存在,则会创建。如:vi foo.txt
  2. :q命令退出,注意不要少了冒号,vi的命令大多有冒号。如果有时候退出不了,可以多加一个感叹号来强制退出,即::q!
  3. :w命令保存
  4. i 进入插入编辑文本模式,编辑模式下最下方会有一句INSERT提示,如果没有该提示,说明处在命令行操作模式而不是文本编辑模式
  5. esc键退出文本编辑模式
  6. 命令行模式下 0 命令回到所在行开头

删除

关于删除d的命令列表如下

命令删除内容
x当前字符
3x当前字符和之后2个字符
dd当前行
5dd当前行和之后四行
dW当前字符到下一字符的起始
d$当前字符到当前行末
d0当前字符到当前行的起始
d^当前字符到当前行下一个非空字符
dG当前行到文件末尾
d20G当前行到文件第20行

撤销和粘贴

u :取消操作
p :把d命令剪切删除掉的文本粘贴出来

复制

关于复制y的命令列表如下

命令复制内容
yy当前行
5yy当前行和之后四行
yW当前字符到下一单词的起始
y$当前字符到当前行末
y0当前字符到当前行的起始
y^当前字符到当前行下一个非空字符
yG当前行到文件末尾
y20G当前行到文件第20行末尾

合并

J:合并行,注意是大写的

查找和替换

/word:查找斜杠后的字符,按enter开始查找,按n重复查找下一个

全局搜索和替换

以下面这个命令为例,将文件中的Line替换成line
:%s/Line/line/g[c]
命令功能解析

组成含义
:分号用于启动一条ex命令
%确定了操作作用的范围。%代表了从文件第1行到最后1行
s制定了具体的操作,本次是替换操作(搜索和替换)
/Line/line搜索和替换的文本
g代指global(全局),也就是说对搜索到的每一行的每一个实例进行替换。如果g缺失,那么只替换每一行第一个符合条件的实例
c命令在每次替换前请求用户确认

询问时的句子如下:
replace with Line(y/n/a/q/l/E/Y)?

功能键释义如下

功能键行为
y执行替换
n跳过此次替换
a执行此次替换和之后的所有替换
q或ESC停止替换
l执行此次替换并退出替换,是last的缩写
Ctrl E,Ctrl Y分别是向下滚动和向上滚动,能用于查看替换出的上下文

编辑多个文件

vi file1 file2:编辑多个文件
:n:切换到下一个文件
:N:切回上一个文件
! :补充在切换命令后,则对文件的修改不会保存及切换
:r file2 :在打开了文件1后插入文件2的内容
:wq:保存并退出
:w newFile1:另存为新文件1
上述复制和剪切的命令仍然适用于多文件编辑
【书中的:buffer命令在阿里云Linux服务器上好像不起作用】

第13章 定制提示符

提示符的组成

提示符是由PS1变量定义的,echo命令可以帮助用户看到PS1的值,如:echo $PS1
显示如下:
[\u@\h \W]$
变量名可以自行修改,按照下表的转义字符列表可以自行尝试,相关的shell提示符中的转义字符列表如下:

转义字符含义
\aASCII铃声。在遇到该转移字符时,计算机发出哔哔声
\d当前日期,以星期、月、日的形式鸟事,如“Mon May 26”
\h本地机器的主机名
\H完整的主机名
\j当前shell会话中进行的任务个数
\l当前终端设备的名称
\n换行符
\r回车符
\sshell程序的名称
\t当前时间(24小时制),格式为小时:分钟:秒
\T当前时间(12小时制)
@当前(12小时制),格式为AM/PM
\A当前(24小时制),格式为小时:分钟
\u当前用户的用户名
\vshell的版本号
\Vshell的版本号和发行号
\w当前工作目录名
\W当前工作目录名承德最后一部分
!当前命令的历史编号
#当前shell会话中输入的命令数
$在非管理员权限下输出“$”。管理员权限下输出“#”
[标志一个或多个非打印字符序列的开始。用于嵌入非打印的控制字符,使其以一定方式操纵终端仿真器,比如移动光标或更改文本颜色
]标志着非显示字符序列的结束

添加颜色

分为文本颜色、背景颜色、光标移动的颜色

字符序列文本颜色
\033[0;30m黑色
\033[0;31m红色
\033[0;32m绿色
\033[0;33m棕色
\033[0;34m蓝色
\033[0;35m紫色
\033[0;36m青色
\033[0;37m淡灰色
\033[1;30m深灰色
\033[1;31m淡红色
\033[1;32m淡绿色
\033[1;33m黄色
\033[1;34m淡蓝色
\033[1;35m淡紫色
\033[1;36m淡青色
\033[1;37m白色
字符序列背景颜色
\033[0;40m黑色
\033[0;41m红色
\033[0;42m绿色
\033[0;43m棕色
\033[0;44m蓝色
\033[0;45m紫色
\033[0;46m青色
\033[0;47m淡灰色
字符序列光标移动动作
\033[1;cH将光标移动至1行c列
\033[nA将光标向上移动n行
\033[nB将光标向下移动n行
\033[nC将光标向前移动n个字符
\033[nD将光标向后移动n个字符
\033[2J清空屏幕并将光标移动至左上角(第0行0列)
\033[K清空当前光标位置到行末的内容
\033[s存储当前光标位置
\033[u恢复之前存储的光标位置

一个组合示例字符如下:
PS1="[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u]<\u@\h \W>$"
如果想要保存这个提示符,则只需保存到 .bashrc 文件中即可,代码如下:

PS1="\[\033[s\033[0;OH\033[0;41m\033[K\033[1;33m\t\033[Om\033[u\]<\u@\h \W>\$"
export PS1

具体动作解析如下表:

字符序列动作
[开始一个非打印字符序列。其真正的目的是为了让bash正确计算可建提示符的长度。如果没有该字符,命令行编辑功能无法正确定位光标
\033[s存储光标位置。在屏幕的顶部横条绘制完成并显示时间后,读取并使光标返回此位置。需要注意的是,一些终端仿真器不支持该代码
\033[0;0H将光标移动至左上角,即第0行第0列
\033[0;41m将背景颜色设置为红色
\033[K将光标当前位置(左上角)到行末的内容清空。因为现在背景颜色已经是红色的了,所以清空后的行就是红色,也就绘制出了红色的横条。需要注意的是青空行的内容弄并不会改变光标的位置,光标仍处于左上角
\033[1;33m将文本颜色设置为黄色
\t显示当前时间。尽管这是一个可打印的原始,但还是将其包含在提示符非打印部分中,这是因为bash在计算可见提示符的长度时,不应当将其计算在内
\033[0m关闭颜色。对文本和背景有效
\033[u恢复之前存储的光标位置
]结束非打印的字符序列
<\u@\h \W>$提示符字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值