别名
使用alias
alias new_command='command sequence'
echo 'alias cmd="command seq"' >> ~/.bashrc
//~/.bashrc中删除
//使用 unalias cmd
//设置为空 alias cmd=
对别名进行转义
\command
- 字符
\
对命令实施转义,使可以执行原本的命令,而不是这些命令的别名替身;
- 在不可信环境下执行特权命令,通过在命令前加上\来忽略可能存在的别名设置;
获取信息
获取终端信息
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