第6天【egrep、bash环境配置及脚本、vim编辑器】

时间:2023-01-09 17:20:32

bash环境配置及脚本(02)_recv

bash环境配置及脚本(02)_recv

         bash环境配置文件: 

              按生效范围划分,存在两类:

                     全局配置:   

                            /etc/profile

                            /etc/bashrc 

                     个人配置:   

                            ~/.bash_profile

                            ~/.bashrc

 

       按照功能划分:存在两类

              Profile类:为交互式登陆的shell提供配置

                     全局:/etc/profile或/etc/profile.d/*.sh

                            案列:vim /ect/profile

                                   Echo “Welcome , your home is $HOME, note:..”

                            个人:~/.bash_profile

                     功用:

                     1:定义环境变量

                     2:运行命令或脚本

 

              Bashrc类:为非交互式登陆的shell提供配置

                     全局:/etc/bashrc

                     个人:~/.bashrc

      

                     功用:

                            1:定义别名;

                            2:定义本地变量;

                    

       Shell登录的类别:

              交互式登录:

                     直接通过终端输入账号密码登录称为交互式登录

                     使用su – Username 切换的也称为交互式登录    

       /etc/profile–>/etc/profile.d/*.sh-->~/.bash_profile à~/.bashrc --> /etc/bashrc

              非交互式登录:

                     Su Username

                     图形界面下打开的终端,

                     执行脚本也称为非交互式登录;

~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh

问题:

1:定义对所有用户都生效的别名?

              Vim /etc/bashrc

2:让用户的PATH环境变量的值多出一个路径,例如/usr/local/apache2/bin

Export PATH=/usr/local/apache2/bin

vim编辑器(03)_recv

         vim:模式化的编辑

                   基本模式:

                            编辑模式,命令模式

                            输入模式

                            末行模式

打开文件:

         Vim [OPTION]…FILE…

                   +#:打开文件后,直接让光标处于跳转最后一行的行首

                            Vim + /etc/passwd

                   +/pattern:打开文件后,直接让光标处于第一个被pattern匹配到的行首;

                  

                   模式转换:

                            编辑模式-->输入模式

                            i:insert,光标所在处输入;

                            a:append,在光标处的后边输入;

                            o:在当前光标所在行的下方打开一个新行;

                            I:在当前光标所在行的行首

                            A: 在当前光标所在行的行尾

                            O:在当前光标所在行的上方打开一个新行;

                            c:

                            C:

         关闭文件:

                   :q 退出

:q! 强制退出,丢弃做出的修改

:wq 保存退出

:x      保存退出

:w /path/to/somewhere

ZZ:在命令模式下保存退出

光标跳转:

                   字符间跳转:

                            h,j,k,l

                                     h:左

                                     l:右

                                     k:上

                                     j:下

                   #COMMAND:10l 跳转由#指定个数的字符;

                   单词之间跳转:

                            w:下一个单词的词首

                            e:跳转至下一个单词的词尾

                            b:当前或前一个单词的词首

                   行首行尾跳转:

                            ^:跳转至行首的第一个非空白字符

                            0:跳转至行首

                            $:跳转至行尾

                   行间移动:

                            #G:跳转至有#指定行;#代表数字

                            G:最后一行

                            gg或者1g:跳转行首

                   句间移动;

                            )

                      (

                   段落间移动:

                            }

                            {

         Vim的编辑命令:

                   字符编辑:

                            x:删除光标处的字符

                            #x:删除光标处起始的#个字符;

                            xp:交换光标所在处的字符及其后面字符的位置

                   删除命令:

                            d:删除命令,可结合光标跳转字符,实现范围删除;

                                     d$:删除光标当后的所有字符;        

                                     d^:删除光标当前的所有字符;

                                     dd:删除所在行的整行;

                   粘贴命令:(p)

                            P:大写P:缓冲区存在的如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至当前光标所在处的前面;

 

                            p:小写p:缓冲区存在的如果为整行,则粘贴当前光标所在行的下方,否则,则粘贴至当前光标所在处的后面;

                   DD删除之后p;相当于粘贴

        

                   复制命令(y)

                            y:复制

其他编辑操作:

可视化模式:

         V:按行选定;选择整行复制或者删除

         v:按字符选定;自定义复制或者删除行

撤销此前的编辑:默认50次

         u:撤销此前的操作:

         #u:撤销指定次数的操作;

撤销此前的撤销:

         Ctrl+r

翻屏操作:

         Ctrl+f:向文件尾部翻一屏;

         Ctrl+b:向文件首部翻一屏;

         Ctrl+d:向文件尾部翻半屏;

         Ctrl+u:向文件首部翻半屏;

 

Vim中的末行模式:

         内建的命令行接口:

                   1:地址定界

                                     :start_pos,end_pos

                                     #:具体第#行,例如2表示第二行

                                     #,#:从左侧#表示起始,到右侧#表示行结尾;

                                      #,+#:从左侧#表示行的起始,加上右侧#表示的行;

                                     .:当前行

                                     $:最后一行

                                               .,$-1

                                     %:表示全文,相当于1,$;

                            :1,20w /tmp/vim.txt        将范围内的行另存至指定文件中;

                            :r /etc/fstab                        在指定位置插入指定文件中的所有内容

                  2:查找

                            /PATTERN :从当前光标所在处向文件尾部查找。

                            ?PATTERN :从当前光标所在处向文件首部查找;

                                     N:与命令反方向

                                     n:与命令同方向

                   3:查找并替换

                            s:在末行模式下完成查找替换操作

                                     s#要查找的内容/替换为的内容/修饰符

                            %s/UUID/uuid

                                               要查找的内容:可以使用模式

                                               替换为的内容:不能使用模式

练习:

1:复制/etc/grub2.cfg至/tmp/目录,用查找替换命令删除/tmp/grub2.cfg文件中的空白字符;

         :%s/^[[:space:]]\+//

2:复制/etc/rc.d/init.d/functions文件至目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行首添加一个#号

         :%s/^[[:space:]]/#&/

 

 

 

多文件模式:  

         Vim file1 file2 file3 …

         Vim /mnt/{ file1 file2 file3}

                   :next 下一个 

                   :Prev 前一个

                   :first 第一个

                   :last 最后一个

                   :wall 保存所有      

                   :qall 退出所有

                   :wqall

窗口分割模式:                

         Vim –o file1 file2 ….

                   -o:水平分割

                   -O:垂直分割

                   在窗口间切换:crtl+w,

单文件窗口分割:

                   Vim /mnt/fstab

                            Ctri+w,s:split,水平分割

                            Ctrl+w,v:vertical,垂直分割

定制vim的工作特性;

                   配置文件:永久有效

                            全局:/etc/vimrc

                            个人:~/.vimrc        /不存在的需要自己创建

                                     如:显示行号 set number

         末行:当前vim进程有效

                   1:行号

                            显示:set number ,简写set nu

                            取消显示:set nonumber,简写:set nonu

                   2:括号匹配

                            匹配:set showmatch,简写:set set sm

                            取消:set nosm

                   3:自动缩进

                            开启:Set ai

                            禁用:set noai

                   4:高亮搜索

                            启用:set hisearch

                            禁用:set nohisearch

                   5:忽略字符大小写

                            启动:set ic

                            禁用:set noic

 

 

 

vim编辑器和bash条件测试(04)_recv

使用centos 7测试;

bash条件测试:

         文件测试:

                   存在性测试:

                            -e FILE :文件存在性测试,存在为真,否则为假

                                     测试:[ -e /etc/grub.conf ]

                   存在性及类别测试:

                            -b FILE:是否存在且为快设备文件     

                                     测试:[-b /etc/grun2.cfg]       echo $?

                                     测试:[ -b  /dec/sda ] echo $?

                            -c FILE:是否存在且为字符设备文件

                            -d FILE:是否存在且为目录文件;

                            -f FILE:是否存在且为普通文件;

                            -h FILE:存在且为符号链接文件;

                            -p FILE:是否存在且为命名管道文件;

                            -S FILE:是否存在且为套接字文件;

                   文件权限测试:

                            -r FILE:是否存在且可读;

                            -w FILE:是否存在且可写;

                            -x FILE:是否存在且可执行;

                   文件特殊权限测试:

                            -g FILE:是否存在且为拥有SGID权限;

                            -u FILE:是否存在且为拥有SUID权限

                            -k FILE:是否存在且拥有sticky权限;

                   文件大小测试:

                            -s FILE:是否存且非空;

         组合测试条件:

                   逻辑运算:

                            两种方式:

           第一种方式:

COMMAND1 && COMMAND2 并且

COMMAND1 || COMMAND2 或者

 ! COMMAND 非