vim编辑器及bash基础学习的知识点总结

来源:互联网 发布:手机cad软件下载 编辑:程序博客网 时间:2024/06/08 15:33
vim编辑器总结
直接vi 文件名,无此文件则创建,有此文件则直接打开       (在后面学习中才发现用的都是vim,因为系统自动将vi设定为vim的别名,分辨方法就是vim有颜色且右下角有光标的标示而vi没有。)
总共三个模式:一般模式,编辑模式,命令行模式
      输入i进入编辑模式,其实还有其他的按键可以实现在此行上插入一行并进入编辑模式等功能,但是我还是习惯按i后在用编辑模式进行调整。            
      输入:进入命令行模式,此模式中基本都是对所编辑的文件的保存或退出等操作。     
一般模式常用操作:
1.移动光标:上、下、左、右与K、J、H、L都可
                      n[空格]   移到此行的第n个字符
                      0   移到此行第一个字符          $     移到此行最后一个字符
                      G  移到最后一行                     nG  移到第n行
                      gg    移到第一行
2.查找、替换:    /word    向下查找word字符串          输入n移动光标到下一个,输入N移动到上一个
                            ?word    向上查找word字符串         
                          此处发现在查找后被查找的字符串一直都是高亮的(后面知道高亮是系统默认设置的,而且有另一个文件对所进行过的操作进行记录),即使查找完成后也一直是高亮的,对于我这个有轻微强迫症的人很不舒服,于是查了下怎么样删除高亮,输入:nohl就可以了。
                         :n1,n2s/word1/word2/g
                          此命令实现替换,n1、n2为开始与结束的行数,n2后面的s要注意不能丢,word1与word2分别是要替换的旧字符串与替换后新字符串,最后的g是不可省略的,表示不询问,如果要对每个词替换前进行询问则用gc。
3.删除、复制、粘贴、选择:     删除:x、X      同[退格]     
                                                   nX         连删n个  
                                                   dd          删一行                    
                                                   ndd        删n行
                                        复制:yy          复制一行
                                                   nyy        复制n行
                                        粘贴:p            下一行粘贴
                                                   P           上一行粘贴
                                        选择:v            字符选择,光标经过的字符反白选择
                                                   V           行选择,光标经过的行反白选择
                                                  [Ctrl]+v   块选择,对于整齐的格式可以选择多行同样的一部分,对一块进行反白选择
                                                  y             对选择的地方进行复制
                                                  d             将反白的部分删除
编辑模式可以正常输入字符与退格等操作,就不说了,输入[Esc]进入一般模式
命令模式:  :q      退出文件,不保存
                    :q      强制退出
                    :w      将修改保存
                    :wq    保存并退出
                    :wq! 强制保存并退出,对于无权限时可以这么做
vim环境设置:任何用户家目录中的.viminfo会记录下所进行的操作进行记录,而如果想对个人的vim进行设置,则可以创建~/.vimrc文件将设置值写入,就可以完成对自己的vim的设置。
图中创建了.vimrc文件后输入的内容,其中第一行表示高亮度查找,第二行表示根据语法显示不同颜色,第三行表示设置行号,最后一行则是表示使用两行状态栏(一行状态,一行命令行)
修改后再次使用vim编辑器,可以看到高亮、颜色、行号以及双状态栏,都符合了设置的内容
bash基础知识点总结:
变量:用一组文字或符号等,来替代一些设置或者一串保留的数据
          有两种,环境变量与自定义变量,其中环境变量通常为大写,各bash均可调用。而自定义变量则自己定义,最好为小写,只在此bash中可调用。
          可以用env命令查看环境变量
变量的基本操作:    
1.echo    $变量名       可以读出变量的内容
2.unset   变量名         取消变量
3.变量名=修改的结果
4.export  变量名           用此命令可将自定义的命令在其他的bash中使用
5.read   [选项]   变量名                读取来自键盘输入的变量
             -p    后面接提示符
             -t     设置等待的秒数,即多少秒后功能结束
6.declare   [选项]   变量名            声明变量类型
                  -a     将变量定义为数组类型
                  -i      将变量定义为整数类型
                  -x     将此变量变为环境变量
                  -r     设置为readonly类型,不能修改不能重设
对于变量只是刚刚学习,还不怎么会用,在以后的学习中有别的常用命令再进行补充。
别名与快捷键:
      命令别名感觉就像人的小名,可以自己定义,设置后使用会很方便
1.查看系统中所有的命令别名:alias
                 在我的一般用户中使用此命令后,发现vi='vim',即之前所用vi语句都为vim编辑器
2.设置别名:alias  别名=‘原命令’
                
              设置了使用rm的别名即用删除命令时会自动询问,以免手快。。但是这个别名在退出重登陆后会消失
 
3.删除别名:unalias
对于之前的添加或修改别名后每次注销登陆后都会消失,需要写入环境变量配置文件里,文件名为.bashrc
    这是对root的vi环境配置文件进行添加,不仅是root,在对一般用户的vi环境配置文件进行编辑时同样需要root的权限,保存后,每次登陆都会有需要添加的别名。
    命令的执行顺序:用绝对或相对路径执行的命令是第一生效顺序,若不采用此种方法,则先执行别名,若没有再执行Bash的内部命令,都没有则最后按照PATH变量的定义的目录查找顺序执行找到的第一个命令。
    一些快捷键的总结:Ctrl+c      强制终止当前命令
                          Ctrl+l              清屏
                         Ctrl+a              光标移到命令行首
                         Ctrl+e              光标移到命令行尾
                         Ctrl+u              从光标位置删到行首
                         Ctrl+z              将命令放入后台执行
                         Ctrl+r               在历史命令中搜索
历史命令
history   [选项]  [历史命令保存文件]
               -c  清空历史命令,感觉不怎么用得到,历史命令的保存文件所占空间很有限,所以觉得没必要
               -w  把缓存中的历史命令写入历史命令保存文件~/.bash_history
                         这里的文件保存的并不是所有的历史命令,而是上次登陆注销后的命令,而本次登陆中所用的历史命令并没有
                     保存在其中。
       对于历史命令的保存数量是设置好的,设置的地方是/etc/profile中的HISTSIZE=1000语句,表示默认设置的是保存100条历史
  命
历史命令的基本调用:上、下箭头调用以前的历史命令
                                    !n         重复执行第n条历史命令
                                    !!          重复执行上一条命令
                                   !字串     重复执行最后一条以此字串开头的命令
数据流重定向:分为输出与输入的重定向,以输出为例,标准的输出为显示器,而输出重定向就是将命令的结果输出到指定的文件或设备中,而输入的重定向呢,标准的输入为键盘,故名思议,即在linux中将文件作为命令的输入。
          输出重定向:  标准输出重定向:命令 > 文件       以覆盖方式,将命令的正确输出输出到指定的文件中
                                                              命令 >>  文件    以追加的方式,将命令的正确输出输出到指定的文件中                              
                              (覆盖方式即指空文件直接输出,若原文件有内容则整个覆盖,而追加则是不删除原内容,直接添加的文件尾部。这里若命令的执行报错,则不会输出)
                                 标准错误输出重定向: 错误命令  2>  文件   以覆盖方式,把命令的错误输出输出到指定的文件中
                                                                      错误命令  2>> 文件  以追加方式,把命令的错误输出输出到指定的文件中
                                正确的和错误的输出同时保存:  命令  &>  文件   以覆盖方式存入一个文件
                                                                                    命令  &>>  文件    以追加的方式存入一个文件
                                                                                    命令 >> 文件1  2>> 文件2   正确的追加到文件1,错误的追加到文件2
              
           其实对于有些目录下的文件比较多的情况,用ls命令后根本无法看到全部,所以一直有些疑惑这该怎么办,用此命令可以解决这个问题,比如创建了testls文件后,使用ls -al  要查询的目录名 > testls   就可以将显示的内容放入文件中,再使用more命令就可以看到所有的内容。
      输入重定向:命令 < 文件         把文件作为命令的输入
                            命令 < 标识符     把标识符之间的内容作为命令的输入
                     感觉输入重定向不像输出重定向用的那么多,所以对输入重定向没有进行太多实验,还需一些练习
管道符:
        管道符感觉和多命令的执行顺序差不多,所以两者列在一起总结。
        多命令顺序执行:1.       命令1命令2        多个命令顺序执行,命令间无逻辑关系
                                     2. &&    命令1&&命令2        逻辑与。命令1正确执行,命令2执行;命令1执行不正确,命令2也不执行
                                     3. ||      命令1||命令2           逻辑或。当命令1执行不正确,命令2执行;当命令1执行正确,命令2不执行
                  这三个逻辑和C语言中的逻辑表达式基本相同,所以不难理解。
   上图中对多个逻辑进行实验,当正常显示目录内容则输出yes,而错误则输出no,后面两条是换了个顺序试试,果然此逻辑不能调换顺序;第三条的命令中可以理解为:当ls正常执行,echo no不执行,但是前一个逻辑是正确的于是后面的echo yes也执行;而第四条命令中,当ls不正确执行,则执行echo no,而此时前一个逻辑依旧正确,所以echo yes同样执行。因此一个逻辑符号的执行不是根据前一个命令的正确执行与否,而是根据前一个逻辑符号的正确与否判断,这点要注意。
 
 
0 0