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

本文介绍如何在Bash中使用alias创建命令别名、转义别名、获取终端信息及日期处理的方法。此外,还详细讲解了脚本调试技巧,包括参数调试、脚本运行调试以及环境变量调试等,帮助读者掌握Bash脚本的高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

别名

使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值