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
原文地址:https://www.cnblogs.com/jinkspeng/p/4966565.html