• shell-bash学习03 别名、日期、函数


    别名

    使用alias

    • 创建
     alias new_command='command sequence'
    
    • 保存
    echo 'alias cmd="command seq"' >> ~/.bashrc
    
    • 删除
    //~/.bashrc中删除
    //使用 unalias cmd
    //设置为空 alias cmd=
    

    对别名进行转义

    • command
    • 字符对命令实施转义,使可以执行原本的命令,而不是这些命令的别名替身;
    • 在不可信环境下执行特权命令,通过在命令前加上来忽略可能存在的别名设置;

    获取信息

    获取终端信息

    • 使用tput
    tput cols      //行数
    tput lines     //列数
    tput longname  //打印出当前终端名
    tput cup x y   //将光标移动到坐标处
    tput bold      //设置文本样式为粗体
    tput ed        //删除从当前光标位置到行尾的所有内容
    

    打印日期

    • Unix时间大小为世界标准时间(UTC) 1970年1月1日0时0分0秒起所流逝的秒数;
    • 读取
    //日期格式
    date
    //秒数       
    date +%s 
    //转化
    date --date "Thu Nov 18 08:07:21 IST 2010" +%s
    
    日期内容 格式
    星期 %a(Sat)%A(Saturday)
    %b(Nov)%B(November)
    %d(31)
    固定格式日期(mm/dd/yy) %D(10/18/10)
    %y(10)%Y(2010)
    小时 %I或%H(08)
    分钟 %M(33)
    %S(10)
    Unix纪元时(以秒为单位) %s(1290049486)
    • 设置日期和时间
     date -s "21 June 2009 11:01:22"
    
    • 检测执行时间
    
    
    #!/bin/bash
    #文件名: time_take.sh
    start=$(date +%s)
    <commands>;
    
    end=$(date +%s)
    difference=$(( end - start))
    echo Time taken to execute commands is $difference seconds.
    
    //使用time
    time <scriptpath>
    
    • 计时器例子
    #!/bin/bash
    #文件名: sleep.sh
    echo -n Count:
    tput sc
    
    count=0;
    while true;
    
    do
        if [ $count -lt 40 ];
        then
            let count++;
            sleep 1;
            tput rc
            tput ed
            echo -n $count;
            else exit 0;
        fi
    done
    

    调试脚本

    参数运行调试

    • bash -x script.sh;启用shell脚本的跟踪调试功能;

    脚本运行调试

    • shebang改成#!/bin/bash -xv后运行;
    • 调试参数
    参数 说明
    set –x 在执行时显示参数和命令
    set +x 禁止调试
    set -v 当命令进行读取时显示输入
    set +v 禁止打印输入
    #!/bin/bash
    #文件名: debug.sh
    for i in {1..6};
    do
        set -x
        echo $i
        set +x
    done
    echo "Script executed"
    

    设置环境变量调试

    #!/bin/bash
    # script.sh
    function DEBUG()
    {
        [ "$_DEBUG" == "on" ] && $@ || :
    }
    for i in {1..10}
    do
        DEBUG echo $i
    done
    
    // _DEBUG=on ./script.sh
    

    函数

    定义

    function fname()
    {
        statements;
    }
    //
    fname()
    {
        statements;
    }
    

    执行

    fname ; #执行函数
    //
    fname arg1 arg2 ; #传递参数
    

    函数参数

    fname()
    {
      echo $1, $2; #访问参数1和参数2
      echo "$@";#以列表的方式一次性打印所有参数
      echo "$*"; #类似于$@,但是参数被作为单个实体
      return 0; #返回值
    }
    

    递归函数

    • 可以调用自身

    导出函数

    • 函数的作用域就可以扩展到子进程中: export -f fname
  • 相关阅读:
    2018-2019-1 20165202 20165210 20165214 实验一 开发环境的熟悉
    2018-2019-1 20165210 《信息安全系统设计基础》第3周学习总结
    2018-2019-1 20165210 《信息安全系统设计基础》第2周学习总结
    2018-2019-1 20165210 《信息安全系统设计基础》第1周学习总结
    2018-2019-1 20165201 实验五 通讯协议设计
    2018-2019-1 20165201 《信息安全系统设计基础》第9周学习总结
    2018-2019-1 20165201 实验四 外设驱动程序设计
    2018-2019-1 20165201 实现mypwd
    2018-2019-1 20165201 《信息安全系统设计基础》第8周学习总结
    2018-2019-1 20165201 实验三 实时系统
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4966565.html
Copyright © 2020-2023  润新知