Linux就该这么学丨Vim编辑器与Shell命令脚本(一)

一、Vim文本编辑器
1、命令模式:控制光标的移动,可对文本进行复制、粘贴、删除和查找等操作;
(1)dd:删除(剪切)光标所在行;
(2)5dd:删除(剪切)从光标处开始的5行;
(3)yy:复制光标所在整行;
(4)5yy:复制从光标处开始的5行;
(5)n:显示搜索命令定位的下一个字符串;
(5)N:显示搜索命令定位的上一个字符串;
(6)u:撤销上一步的操作;
(7)p:将之前删除(dd)或复制(yy)过的数据粘贴到光标后面;
2、输入模式/编辑模式/插入模式(按a、i、o等键进入):对文本进行编辑修改等操作;
3、末行模式/冒号模式(按:键进入):保存或退出文档,以及设置编辑环境;
(1):w:保存;
(2):q:退出;
(3):q!:强制退出(放弃修改的文档内容);
(4):wq!:强制保存退出;
(5):set nu:显示行号;
(6):set nonu:不显示行号;
(7):命令:执行该命令;
(8):整数:跳转到该行;
(9):s/one/two:将当前光标所在行的第一个one替换成two;
(10):s/one/two/g:将当前光标所在行的所有one替换成two;
(11):%s/one/two/g:将全文中的所有one替换成two;
(12)?字符串:在文本中从下至上搜索该字符;
(13)/字符串:在文本中从上至下搜索该字符;
注:1、三种模式转换:每次运行Vim默认进入命令模式,命令模式(按a、i、o等键)-->输入模式(按ESC)-->命令模式,命令模式(按:键)-->末行模式(按ESC)-->命令模式;
2、Vi和Vim的区别在于是否需要着色,着色时用Vim,不需要着色时用Vi;

二、编写Shell脚本

1、Shell脚本的工作方式:
(1)交互式(Interactive):用户每输入一条命令就立即执行;
(2)批处理(Batch):由用户实现编写好的一个完整的Shell脚本,Shell会一次性执行脚本中的诸多命令;
2、编写简单的脚本
#!/bin/bash
#这是个注释
pwd
ls -al
注:#!是Shell的脚本声明,#后是脚本的注释。
3、接收用户的参数
(1)$0:当前脚本的文件名称;
(2)$#:一共有几个参数;
(3)$*:所有位置的参数值;
(4)$1、$2、$3、$4:分别对应第N个位置的参数值;
4、判断用户的参数:
(1)如果返回的值为0为真,非0则为假;
(2)-d:测试文件是否为目录类型([ -d /etc/fstab ]:测试fstab文件的类型);
    -e:测试文件是否存在([ -e /dev/cdrom ] && “Exist”:测试cdrom 文件是否存在,存在输出Exist);
    -f:判断是否为一般文件;
    -r:测试当前用户是否有权限读取;
    -w:测试当前用户是否有权限写入;
    -x:测试当前用户是否有权限执行;
    &&:与,表示当前面的命令执行成功后才会执行后面的命令;
    ||:或,表示当前面的命令执行失败后才会执行后面的命令;
    !:非,表示把条件测试中的判断结果取反值;
    -eq:是否等于;
    -ne:是否不等于;
    -gt:是否大于;
    -lt:是否小于;
    -le:是否小于或等于;
    -ge:是否大于或等于;
    =:比较字符串内容是否相同;
    !=:比较字符串内容是否不同;
    -z:判断字符串内容是否为空;
5、流程控制语句
1、if条件语句
(1)if 条件测试操作
    then 命令序列
    fi
    如:#!/bin/bash
      DIR="/media/cdrom"
      if [ ! -e $DIR ]
      then
      mkdir -p $DIR
      fi
(2)if 条件测试操作
    then 命令序列1
    else 命令序列2
    fi
    如:#!/bin/bash
      ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
      if [ $? -eq 0 ]
      then
      echo "Host $1 is On-line."
      else
      echo "Host $1 is Off-line."
      fi
(3)if 条件测试操作1
    then 命令序列1
    elif 条件测试操作2
    then 命令序列2
    else 命令序列3
    fi
    如:#!/bin/bash
      read -p "Enter your score(0-100):" GRADE
      if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
      then
      echo "$GRADE is Excellent"
      elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
      then
      echo "$GRADE is Pass"
      else
      echo "$GRADE is Fail"
      fi

posted @ 2020-05-12 21:18  Gentry  阅读(206)  评论(0)    收藏  举报