vim编程与调试

一:熟悉vim编程环境:
  (1):vim环境中的常用变量:<:w> //保存 <:w filename> //另存为文件名为filename的文件.<:wq!> //保存并退出. <:wq! filename> . <:q!> //不保存退出. <:x>  //保存退出.

  (2):vim工作模式:存在三种工作模式:编辑模式,插入模式,命令模式。
   1:编辑模式:
 
当进行查找和替换时,要按“Esc”键,进入命令模式;输入/或?就可以进行查找了。例如,在一个文件中查找swap单词,首先按“Esc”键,进入命令模式,然后输入:


    
二:shell环境变量:
  (1):shell语言的概述:
    1:一种脚本,能够用跟简洁,更高效的语句完成相对复杂的功能;
  (2):shell变量的定义.
    1:shell支持具有字符串值的变量。shell变量不需要专门的说明语句,通过赋值语句完成变量说明并予以赋值。
      在命令行或shell脚本文件中使用$name的形式引用变量name的值.
    例子:
[dengzhaoxu@server1 ~]$ name=string
[dengzhaoxu@server1 ~]$ echo $name //变量前添加$表示引用变量的值。
string
[dengzhaoxu@server1 ~]$ name = string //注意不能使用空格.
bash: name: 未找到命令...
[dengzhaoxu@server1 ~]$ name = 'string'
bash: name: 未找到命令...
    2:在定义变量时,若string中包含空格、制表符和换行符,则string必须用 'string' 或者 "string"的形式,
      即用单(双)引号将其括起来。双引号内允许变量替换,而单引号内则不可以。
[dengzhaoxu@server1 ~]$ name='i am a boy'
[dengzhaoxu@server1 ~]$ echo name
name
[dengzhaoxu@server1 ~]$ echo $name
i am a boy
[dengzhaoxu@server1 ~]$ name="i am a boy"
[dengzhaoxu@server1 ~]$ echo $name
i am a boy
[dengzhaoxu@server1 ~]$ name=it's book
> ^C //由于's book 存在特殊符号'导致程序没有结束,也就是程序找不到字符串的结束边界。<一己之见>
[dengzhaoxu@server1 ~]$ echo $name
i am a boy
[dengzhaoxu@server1 ~]$ name="it's a book"
[dengzhaoxu@server1 ~]$ echo $name
it's a book
  
   3:shell变量的作用域:也存在局部变量和全局变量.
例子:
[dengzhaoxu@server1 ~]$ name=Linux
[dengzhaoxu@server1 ~]$ name1=Windows
[dengzhaoxu@server1 ~]$ export name1 //export将局部变量提升为全局变量.
[dengzhaoxu@server1 ~]$ echo $name
Linux
[dengzhaoxu@server1 ~]$ echo $name1
Windows
[dengzhaoxu@server1 ~]$ echo $$ //输出当前shell的PID
10904
[dengzhaoxu@server1 ~]$ bash //切换到子shell
[dengzhaoxu@server1 ~]$ echo $$ //输出子shell的PID
12087
[dengzhaoxu@server1 ~]$ echo $name //局部变量在子shell中不能显示,

[dengzhaoxu@server1 ~]$ echo $name1 //全局变量.
Windows
[dengzhaoxu@server1 ~]$ exit //退回父shell
exit
[dengzhaoxu@server1 ~]$ echo $name
Linux
[dengzhaoxu@server1 ~]$ echo $name1
Windows
[dengzhaoxu@server1 ~]$

(3):常用环境变量的使用:环境变量有许多.可以查阅资料.
  1:概述:环境变量是指由shell定义和赋初值的shell变量。shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、
      用户名等。所有环境变量都是全局变量,并可以由用户重新设置。
  2:【不同类型的shell的环境变量有不同的设置方法。在bash中,设置环境变量用set命令,命令的格式是:】
    格式:set环境变量=环境变量的值。
例子:将HOME环境变量该为/home/deng.然后在将环境变量设置为系统默认值,使用unset命令.
  



(4)命令运行的判断依据:;、&&、||
1: ‘;’的使用:
  [dengzhaoxu@server1 ~]$ name=string
  [dengzhaoxu@server1 ~]$ name1=string1
  [dengzhaoxu@server1 ~]$ echo $name;echo name1
  string
  name1
2:&& 和 ||的概述:
  
&&和||命令的执行情况
命令执行情况 说明
cmd1 && cmd2 若cmd1运行正确,则cmd2运行,否则cmd1错误,则cmd2不运行.
cmd1||cmd2 若cmd1运行,则cmd2不运行,否则cmd1运行错误,cmd2运行.


  





三:了解正则的使用:
(1):了解正则表示法:

(2):理解语系对正则表达式的影响:

(3):掌握grep的应用:格式:grep [-A] [-B] [--color=auto] '查找字符串' filename.

[root@server1 dir]# dmesg | grep 'BIOS'  //查找字符串BIOS.    |:表示以左边执行后输出的信息作为右边的输入信息.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009e7ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007cedffff] usable
[    0.000000] BIOS-e820: [mem 0x000000007cee0000-0x000000007cefefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007ceff000-0x000000007cefffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007cf00000-0x000000007cffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018
[    0.724534] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored

(4):基础正则表达式:
[root@server1 dir]# pwd
/root/dir
[root@server1 dir]# cat /root/dir/test
i am a boy;
#this is a good day,But,I don't with sb to play game. //观察n和vn的不同.
this is why?

[root@server1 dir]# grep -n 'boy' /root/dir/test
1:i am a boy;
[root@server1 dir]# grep -vn 'boy' /root/dir/test
2:#this is a good day,But,I don't with sb to play game.
3:this is why?

[root@server1 dir]# touch test1;touch test2
[root@server1 dir]# cd ~
[root@server1 ~]# ls -dir
69 .
[root@server1 ~]# ls dir
test test1 test2
[root@server1 ~]# find dir
dir
dir/test
dir/test1
dir/test2
[root@server1 ~]# find dir | grep 'test'    //用来查找文件
dir/test  【注意只要存在test就被显示出来。
dir/test1
dir/test2

3:使用中括号来收集字符:
[root@server1 ~]# cat /root/dir/test
i am a boy;
#this is a good day,But,I don't with sb to play game.
this is why?


4:特殊正则表达式:
‘^#’  //查找行首是#的行
'e$' //列出行尾为e的行
'e.e' //即e与e之间一定要有一个字符。
\://表示转义字符。如:\'  :表示查找以单引号引起的字符。

  
  
  

 

[root@server1 dir]# dmesg | grep 'BIOS'
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009e7ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007cedffff] usable
[    0.000000] BIOS-e820: [mem 0x000000007cee0000-0x000000007cefefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007ceff000-0x000000007cefffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007cf00000-0x000000007cffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018
[    0.724534] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored

posted @ 2020-03-01 23:53  calm寻路人  阅读(469)  评论(0编辑  收藏  举报