zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    webpack进阶(二)
    webpack的loader和plugin的区别
    接口和面向接口编程
    设计原则与编程技巧汇总
    W3C的盒子模型和IE的盒子模型
    React的组件
    React的路由react-router
    三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法
    gulp 构建 demo
    antd 表单的两种校验方式
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4966565.html
Copyright © 2011-2022 走看看