zoukankan      html  css  js  c++  java
  • Linux Vim 编辑器编写 Shell 脚本

    Vim 编译器

    Vim 文件编译器是编写文件的好工具,它包括以下 3 种模式:

    • 命令模式:移动光标,对文本进行增删查改等操作;
    • 输入模式:向文件中输入文本;
    • 末行模式:保存或退出文档,设置编辑环境。

    使用 Vim 编译器时进入的是命令模式,通过 “a、i、o” 三个键可以切换为输入模式。“a” 键在光标的后一位进入输入模式,“i” 键在光标的当前位置进入,“o” 键则是在光标下面创建一个空行。

    Vim 编辑器的常用命令如下:

    命令 作用
    dd 删除光标所在整行
    (数字)dd 删除光标处开始的 n 行
    yy 复制光标处所在整行
    (数字)yy 复制删除光标处开始的 n 行
    n 显示搜索命令定位到的下一个字符串
    N 显示搜索命令定位到的上一个字符串
    u 撤销上一步操作
    p 将之前复制或删除的数据粘贴到光标后面

    进入输入模式编辑好文本后,按 ESC 键回到命令模式,然后按 “:” 进入末行模式进行文本的保存和退出。

    命令 作用
    :w 保存
    :q 退出
    :q! 强制退出
    :wq! 保存强制退出
    :set nu 显示行号
    :set nonu 不显示行号
    :命令 执行命令
    :整数 跳转到该行
    : s/字符串a/字符串b 将当前光标所在行的第一个字符串 a 替换为字符串 b
    : s/字符串a/字符串b/g 将当前光标所在行的所有字符串 a 替换为字符串 b
    :%s/字符串a/字符串b/g 将全文的字符串 a 替换为字符串 b
    ?字符串 在文本中从下到上搜索字符串
    /字符串 在文本中从上到下搜索字符串

    Shell 脚本

    将一系列 Linux 命令用 Vim 编辑器写到一个文件中,将这个文件的后缀名改为 .sh 就可以建立一个 Shell 脚本了。

    vim example.sh
    

    脚本中第一行需要用 “#!” 声明要使用哪种 Shell 解释器来执行脚本,而单一的 “#” 则是注释,一个简单的 Shell 脚本如下:

    #!bash example.sh
    #Hello,world!
    echo Hello,world!
    

    运行 Shell 脚本可以直接用 bash 解释器运行,也可以用脚本的路径来运行。

    bash example.sh
    ./example.sh
    

    参数

    运行 Shell 脚本时可以向脚本传参,写法是在调用 Shell 脚本文件后面用空格间隔写上多个参数。一些用于接收参数的变量为:

    变量 存储内容
    $0 Shell 脚本程序的名称
    $# 参数的总数
    $* 所有位置的参数值
    $? 显示上一次命令的返回值
    $数字 第 n 个传入的参数值

    条件表达式

    测试语句

    Shell 的测试语句用于判断表达式是否成立,条件成立返回数字 0,否则返回其他数据。测试语句的格式如下所示,注意中括号和表达式之间都有一个空格。

    [ 条件表达式 ]
    

    条件表达式自然支持逻辑运算符了,Shell 表达式支持 3 种逻辑运算符。“&&” 表示逻辑与,只有前面的语句执行成功后才会执行后面的语句。“||” 表示逻辑或,前面的语句执行失败后才会执行后面的语句。“!” 表示逻辑非,逻辑非会把条件测试中的结果取相反的值。例如:

    [ -e /dev/cdrom ] && echo "Exist"
    [ $USER = root ] || echo "user" 
    [ ! $USER = root ] || echo "administrator"
    

    在用其他编程语言时,我们可能不是很关心语句是否执行,只关心表达式的运算结果。但是在 Shell 脚本来说要很注意语句的执行顺序,某个语句是否执行将产生很大的不同。

    文件测试运算符

    Shell 脚本对于不同的数据,使用的是不同的运算符进行比较。文件测试运算符有:

    运算符 作用
    -d 测试文件是否为目录类型
    -e 测试文件是否存在
    -f 判断是否为一般文件
    -r 测试当前用户是否有读权限
    -w 测试当前用户是否有写权限
    -x 测试当前用户是否有执行权限

    例如:

    [ -d /etc/fstab ]
    [ -f /etc/fstab ]
    

    数字比较运算符

    运算符 作用
    -eq =
    -ne !=
    -gt >
    -lt <
    -le
    -ge

    例如:

    [ 10 -gt 10 ]
    [ 10 -ep 10 ]
    

    字符串比较运算符

    运算符 作用
    = 比较字符串是否相同
    != 比较字符串是否不同
    -z 比较字符串是否为 null

    例如:

    [ -z $String ]
    [ $LANG != “en.US” ] && echo "Not en.US"
    

    流程测试语句

    条件语句

    if 条件语句

    if 条件测试操作 1
          then 命令序列 1
    elif 条件测试操作 2
          then 命令序列 2
    else
          命令序列 3
    fi
    

    case 条件语句

    case 变量值 in
    模式 1)
          命令序列 1
          ;;      
    模式 2)
          命令序列 2
          ;; 
    *)
          默认命令序列
    esac
    

    循环语句

    for 循环

    for 变量名 in 取值列表
    do
          命令序列
    dono
    

    while 循环

    while 条件测试操作
    do 
          命令序列
    done
    

    计划服务

    Linux 可以在指定的时间段启用或停止某些服务或命令,实现服务器自动化运行。

    一次性计划任务

    一次性计划任务指的是设置之后只在指定时间执行一次,一般用于临时工作需求。

    命令 功能
    at 时间 设置在指定时间运行的指令
    at -l 查看已设置但是未执行的一次性任务
    atrm 任务序号 删除序号对应的任务

    长期性计划任务

    长期性计划任务可以实现按照某个时间周期完成任务,使用 Linux 的 crond 服务可以实现。

    命令 功能
    crontab -e 创建、编辑任务
    crontab -l 查看当前任务
    crontab -r 删除某个任务

    参考资料

    Linux就该这么学

  • 相关阅读:
    JVM内存模型
    生产者与消费者的Java实现
    kafka常用命令
    java中join用法
    elasticsearch关于索引切分的实现
    三十六进制加法
    leetCode之Median of Two Sorted Arrays
    腾讯云“动态加速”与“CDN”的区别——浅谈对“动态加速”的理解(可能有误)
    洗澡或游泳等导致的耳朵进水的解决方案
    windows服务器间文件同步搭建步骤搜集
  • 原文地址:https://www.cnblogs.com/linfangnan/p/13423616.html
Copyright © 2011-2022 走看看