linux shell脚本攻略总结(一)

来源:互联网 发布:linux system 函数 编辑:程序博客网 时间:2024/06/05 17:55

1 终端彩色输出

$ echo -e "\e[1;31m This is red text \e[0m"

这段脚本输出红色的字符串“This is red text”;
-e表示转换双引号中的转义字符;
\e[1;31m表示将文本颜色设置为红色,其中1指的是字体,31指的是红色;
表示文本的还有以下颜色:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37。
\e[0m表示还原颜色。

$ echo -e "\e[1;42m Green Background \e[0m"

这段代码输出绿色背景的字符串“Green Background”;
表示背景的还有以下颜色:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47。

2 数学运算高级工具bc

可以借助bc执行浮点数运算,并应用一些高级函数。

$echo "4 * 0.56" | bc2.24$ no=54;$result=`echo "$no * 1.5" | bc`$ echo $result81.0

设定小数精度

$ echo "scale=2;3/8" | bc0.37

进制转换

$ no=100$ echo "obase=2;$no" | bc #obase表示输出进制1100100$ no=1100100$ echo "obase=10;ibase=2;$no" | bc #ibase表示输入进制100

计算平方&平方根

$ echo "sqrt(100)" | bc$ echo "10^10" | bc

3 检查一段代所码花费时间

#!/bin/bash#文件名:time_taken.shstart=$(date +%s)#command;#statements;end=$(date +%s)difference=$(( end - start ))echo Time taken to execute commands is $difference seconds.

4 输出计数

#!/bin/bash#文件名:sleep.shechi=o -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;    fidone

5 用read读取输入

$ read -n 2 var #读取2个字符存入var中$ read -s var #无回显方式输入$ read -p "Please enter input:" var #提示信息$ read -t 2 var #在2秒内将键入的字符读入变量var$ read -d ":" var #以冒号“:”作为结束

6 运行命令直至执行成功

repeat() { while :; do $@ && return; sleep 30; done }

用冒号“:”而不用true是因为true一般作为二进制文件来实现,每次执行都会生成一个进程。增加延时sleep 30防止发送数据过于频繁。

7 内部字段分隔符IFS

内部字段分隔符(Internal Field Separator,IFS)是用于特定用途的定界符。IFS变量是存储定界符的环境变量。

#!/bin/bashdata="1,2,3,4"oldIFS=$IFSIFS=,for item in $data;do    echo Item: $itemdoneIFS=$oldIFS

8 比较与测试

算数比较

-eq     相等-ne     不相等-gt     大于-lt     小于-ge     大于或等于-le     小于或等于

文件系统相关测试

-f      正常文件路径或文件名,则返回真-d      目录,则返回真-e      文件存在,则返回真-c      字符设备文件,则返回真-b      块设备文件,则返回真-x      文件可执行,则返回真-w      文件可写,则返回真-r      文件可读,则返回真-L      符号链接,则返回真
0 0