zoukankan      html  css  js  c++  java
  • vim编辑器和bash算术运算入门

    (一)vim末行模式

    • vim末行模式:内建的命令行接口
      • 地址定界
        • start_pos[,end_pos]
        • #:特定的第#行,例如5即第5行
          • .:表示当前行
          • $:表示最后一行,例如.,$-1表示从当前行到倒数第2行
          • #,#:指定行范围,左侧为起始行,右侧为结束行,例如10,100表示从第10行到第100行共91行
          • #,+#:指定行范围,左侧为起始行,右侧为偏移量,例如3,+7表示从第3行开始加后面7行共8行
          • %:表示全文,等于1,$
          • /PATTERN/:从光标位置往下,第一个被PATTERN匹配到的行,例如/Pattern/,$表示从匹配行到最后一行
          • 可同编辑命令一同使用,实现编辑操作
            • d/删除,y/复制,c/修改
            • 中间没有空格,编辑命令直接跟在地址定界后面
            • w FileName/内容另存为
            • r FileName/将另外一个文件合并进来
      • 查找
        • /PATTERN:从光标所在处开始,往后查找所有被PATTERN匹配到的字符串,光标停在第一个匹配到的字符串
        • ?PATTERN:从光标所在处开始,往前查找所有被PATTERN匹配到的字符串,光标停在第一个匹配到的字符串
        • n:下一个查找结果,与命令方向相同
        • N:上一个查找结果,与命令方向相反
      • 查找并替换
        • s/用来查找的内容/用来替换的内容/修饰符
          • 用来查找的内容:正则表达式
          • 用来替换的内容:不能使用正则表达式,但是可以引用
            • 如果“用来查找的内容”在模式中使用了分组符号,在“用来替换的内容”中可以使用后项引用1,2...
            • 或者直接引用“用来查找的内容”匹配到的全部文本,要使用&符号
          • 如果内容本身就带有/符号,需要添加进行转义
          • 也可以将/变成其它不常用的字符,这样内容本身的/符号就不需要转义了,例如使用@符号,或者#符号等等
          • 修饰符
            • i:忽略大小写(忽略查找的PATTERN中的大小写)
            • g:全局替换,意味着一行中如果匹配到多次,则均替换;默认只替换每一行中的第一次出现
          • 例子
            • 1,20s/this/This/g
            • %s@<t([[:alpha:]]+)>@T1@g:在全文中将所有的小写t开头的单词转换为大写T开头的单词
            • %s@<t[[:alpha:]]+>@&er@g:在全文中将所有小写t开头的单词后面加er
            • %s@^#@@:删除每一行前面的#号

    练习:

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

    答案:

    cp /etc/grub2.cfg /tmp

    vim /tmp/grub2.cfg

    :

    %s@^[[:space:]]+@@

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

    答案:%s@^[[:space:]]+[^[:space:]]@#&@

    3,为/tmp/grub2.cfg文件的前三行的行首加上#号

    答案:1,3s/*/#&/

    4,将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有的gpgcheck=0替换为gpgcheck=1

    答案:%s@(enabled|gpgcheck)=0@1=1@g

    • vim的多文件模式
      • vim FILE1 FILE2 FILE3...
      • 在文件间切换:first/第一个文件,last/最后一个文件,next/下一个文件,previous/前一个文件
      • 保存并退出所有文件:wqall
      • 保存所以文件:wall
      • 退出所有文件:qall
      • 多窗口
        • 多文件
          • -o:水平分隔;ctrl+w,松开后按上下箭头,可以切换文件;vim -o FILE1 FILE2 FILE3
          • -O:垂直分隔;ctrl+w,松开后按左右箭头,可以切换文件
        • 单文件
          • ctrl+w,松开后按s,水平分隔单文件
          • ctrl+w,松开后按v,垂直分隔单文件
    • 定制vim的工作特性
      • 末行模式下的命令设定,仅对当前vim进程有效
      • 想永久有效,需要修改配置文件;直接把末行命令写在配置文件里就行
        • 全局:/etc/vimrc
        • 用户个人:~/.vimrc,如果文件不存在,需要自己创建
      • 行号
        • 显示:set number或者set nu
        • 取消:set nonumber或者set nonu
      • 括号匹配高亮(貌似现在vim一直高亮,命令无效了>_<)
        • 显示:set showmatch或者set sm
        • 取消:set noshowmatch或者set nosm
      • 自动缩进
        • 启用:set ai
        • 禁用:set noai
      • 高亮搜索结果
        • 启用:set hlsearch
        • 禁用:set nohlsearch
      • 语法高亮
        • 启用:syntax on
        • 禁用:syntax off
      • 忽略字符大小写
        • 启用:set ic
        • 禁用:set noic
      • 在末行模式下,可以用help命令获得帮助,也可以help subject获得某个主题的帮助,如help set

    作业:如果设置tab键缩进4个字符,而不是8个

    (二)bash脚本编程的算术运算

    • 算术运算符:+,-,*,/,**,%
    • 算术运算格式
      • let var=算术运算表达式
      • $[算术运算表达式]
      • $((算术运算表达式))
      • expr命令
        • 各个操作数和操作符之间都要有空格
        • 要想获得结果,需要使用命令引用
    • 注:乘法符号在某些场景中需要使用转义字符

    练习:写一个脚本,添加三个用户,求这三个用户的UID之和

  • 相关阅读:
    列表推导式,生成器表达式
    迭代器,生成器初始
    装饰器的进阶
    函数名用途,初始装饰器
    函数参数,和空间
    py文件的操作
    字符串相关操作
    python基础二
    Django简介
    Django初识
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7637723.html
Copyright © 2011-2022 走看看