《LinuxShell脚本攻略》学习(二)
上节学习到了文件描述符的相关内容。这节我们会以alias命令作为开头,继续我们的学习故事。
创建别名的命令行是:
$aliasnew_command=’commandsequence’
我们可以为安装命令创建一个别名:
$aliasinstall=’sudoapt-get install’
值得注意的是,alias命令只是暂时的,一旦终端关闭了,所有设置的别名就失效了,所以我们想要别名永久有用,就得把命令行写到~/.bashrc中,因为每当一个shell进程生成的时候,都会执行~/.bashrc中的命令。
我们还可以创建别名,来执行多条命令,如果别名的名字与系统原有别名相同,则原有别名将会被新的取代。
$aliasrm=’cp$@ ~/backup;rm$@’
这条指令的意思是将原始文件备份都backup文件夹,然后移除该文件。
字符\对命令实施转义,使我们可以执行原本的命令,而不是这些命令的别名替身。在不信任的环境下执行特权命令的时候,通过在命令前加上\符号,可以有效提高安全性。因为攻击者可能已经利用别名将某些特权命令替换成了一些别有用心的指令。
tput和stty是终端处理工具。
$tputcols #获取终端列数
$tputlines #获取终端行数
$tputlongname #打印出当前终端名
$tputcup 100 100 #将光标移到方位(100,100)处
$tputsetb number #number取0~7,代表各种颜色,设置背景色
(Ps:我们可以来回顾一下之前设置背景还有另一种方法,命令行如下
$echo-e“\e[1;42mthisisbluebackground\e[0m”)
$tputsetf number #设置前景色,也就是字体的颜色
(ps:之前另外一种设置字体颜色的方法,命令行如下
$echo-e“\e[1;34mthisisbluetext\e[0m”)
两种方法都不能在关闭终端之后,仍然保持该设置。
$tputbold #加粗字体
Stty的使用:在输入密码的时候,不将输入的内容显示出来,脚本文件如下,大家可以动手尝试一下:
#!/bin/bash
echo-e“Enterthepassword:”
stty-echo #禁止将输出发送到终端
readpassword
sttyecho #允许将输出发送到终端
echo$password #打印密码
echoPassword read
$date#这是一条获取时间的基本指令,简单掌握就好。书中还有一些打印纪元时之类的指令,以及日期格式字符串列表就不一一赘述,下面将重点阐述我觉得很重要的延时产生命令。
编写以循环方式运行的脚本,设置时间间隔是必不可少的,所以在脚本中生成延时是必要技能。
在脚本中推迟一段时间,可以用:
$sleepno_of_seconds
下面脚本使用tput和sleep从0开始计数到40:
#!/bin/bash
echo-n count: #echo -n 表示打印完不换行
tputsc
count=0;
whileture;
do
If[ $count -lt 40 ] ;
thenlet count++;
sleep1;
tputrc
tputed
echo-n $count
elseexit 0;
fi
done
重点注意是,If[ $count -lt 40 ] ;这条语句,if和[之间要有空格,不然程序会报错。