Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法

声明:本文参考C语言中文网和Linux命令大全

一、source
source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限。该命令主要用于让重新配置的环境变量配置文件强制生效。

语法
source 配置文件或者.配置文件

"."就是 source 命令,使用哪种方法都是可以的。原来修改了环境变量配置文件,如果要想让其生效,则必须注销或重启系统。现在只要使用 source 命令就可以省略注销或重启的过程,更加方便。

二、grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

语法
grep 【选项】 “搜索内容” 文件名

选项

-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。

例1:grep "eod"文件名 查找eod
Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法_第1张图片
例2:grep "eod"文件名 查找eod,并且继续输出eod的后三行
在这里插入图片描述
例3:grep -F "eod"文件名 ,将范本样式视为固定字符串的列表
在这里插入图片描述
例4:grep -w "is"文件名,只显示全字符合的列
Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法_第2张图片
例5:grep -x "is"文件名,只显示全列符合的列
在这里插入图片描述
可见没有返回结果,这是怎么回事呐?其实是这样的
首先通过vim对vim_character.txt做出一下编写
Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法_第3张图片
在最后一行加上is,然后保存退出,再进行grep
在这里插入图片描述
会出现is。可想而知只显示全列符合的列就是一个列符合要搜索的这个字符时才返回结果。
例6:grep -v "is"文件名,反转查找
Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法_第4张图片
可见,这是查找文件中不包含is的行并输出

三、环境变量配置文件
在环境变量配置文件中主要定义了对系统的操作环境生效的系统默认环境变量,比如 PATH、HISTSIZE、PS1、HOSTNAME 等。如果我们修改了这些环境变量,而没有保存到环境变量配置文件中,那么一旦注销或重启系统,这些修改就会丟失。

还是那句话,"在 Linux 中,修改要想永久生效,必须写入相应的配置文件。"当然,我们自己定义的别名虽然不是系统的默认环境变量,但也是修改操作环境的,如果要想永久生效,则也要放入相应的环境变量配置文件中。

登录时生效的环境变量配置文件
(1)/etc/profile
这个是系统整体的配置。用户最好不要修改这个文件。它初始化了PATH、USER、HOSTNAME与HISTSIZE等变量
(2)/etc/profile.d/*.sh
这个目录下的所有以.sh结尾的文件会被/etc/profile调用,这些文件主要设置了bash操作接口的颜色、语系、ll与ls命令的命令别名,rm的命令别名、which的命令别名等。如果需要为所有用户设置一些共享的指令别名,可以在这个目录下创建.sh文件。
(3)~/.bash_profile
~/.bash_profile文件首先判断 ~/.bashrc文件是否存在,如果存在就调用它 ,之后为PATH变量追加了$HOME/bin这个路径,使用export命令把PATH转变为环境变量。
(4)~/.bashrc
这个文件首先定义用户专属的指令别名,之后判断/etc/bashrc文件是否存在。如果存在就调用它。
(5)/etc/bashrc
/etc/bashrc为用户的bash定义一下的数据:依据不同的UID确定umask的值;依据不同UID确定命令行提示符;调用/etc/profile.d/ *sh

这 5 个环境变量配置文件(/etc/profile.d/*.sh 是一系列的配置文件)在用户登录过程中会依次生效。不过需要注意,/etc/profile、/etc/profile_d/*.sh 和 /etc/bashrc 这三个环境变量配置文件会对所有的登录用户生效;而 ~/.bash_profile 和 ~/.bashrc 这两个环境变量配置文件只会对当前用户生效(因为每个用户的家目录中都有这两个文件)。

它们的启动流程可以用下图来说明Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法_第5张图片
四、Shell登陆信息及修改方法

我们在登录 tty1~tty6 这 6 个本地终端时,会有几行的欢迎界面。这些欢迎信息是保存在哪里的?可以修改吗?当然可以修改,这些欢迎信息保存在 /etc/issue 文件中,我们查看一下这个文件:
在这里插入图片描述
系统在每次登录时,会依赖这个文件的配置显示欢迎界面。在 /etc/issue 文件中允许使用转义符调用相应信息,其支持的转义符可以通过 man agetty 命令查询,如表 1 所示。

表 1 /etc/issue支持的转义符

转义符 作 用
\d 显示当前系统日期
\s 显示操作系统名称
\l 显示登录的终端号,这个转义符比较常用
\m 显示硬件体系结构,如i386、i686等
\n 显示主机名
\o 显示域名
\r 显示内核版本
\t 显示当前系统时间
\u 显示当前登录用户的序列号

/etc/motd
/etc/motd 文件中也是有欢迎信息的,这个文件和 /etc/issue 及 /etc/issue.net 文件的区别是:/etc/issue 及 /etc/issue.net 文件是在用户登录之前显示欢迎信息的;而 /etc/motd 文件是在用户输入用户名和密码,正确登录之后显示欢迎信息的。/etc/motd 文件中的欢迎信息,不论是本地登录,还是远程登录,都可以显示。

你可能感兴趣的:(Linux学习笔记——source、grep、环境变量配置文件和Shell登陆信息及修改方法)