echo

不加引号和使用单引号都是原样输出,不加引号时分号被认为是命令结束,
单引号中无法输出单引号

echo -n                   #不换行输出
echo -e   "1\t2"     #使用转义字符时-e参数
echo -e  "\e[31m  hello"    #使用红色文字显示hello,\e[0m重置回默认颜色,30开始文字颜色,40开始背景颜色
stty -echo    #输入不显示在终端
stty  echo     #输入显示在终端

变量

    $(  )                    #命令,或者反引号(ESC下)
    $[  ]                    #算术运算,或let
    ${  }                    #变量
    ${#  }       #获得变量长度
    $?           #命令执行状态,0成功,其他错误
    $0                      #返回当前shell
    $1 $2...             #第一个参数,第二个参数...

重定向

>      #覆盖
>>    #追加
1>    #标准输出重定向,1可省略
2>    #错误重定向
2>&1   #标准输出与错误输出均重定向到同一文件
>/dev/null   #不显示输出信息
date | tee a.txt | grep ..    #执行date命令的输出保存在a.txt并作为grep的输入,tee只保存标准输出1,并且以覆盖的方式,追加用-a参数

数组

a=(1  2  3  4  5)           #定义整型数组,每个元素空格隔开
b[0]="hi"  
b[1]="ha ha ha"           #定义字符串数组
 echo  ${a[0]}                #输出第0个元素
 echo  ${a[*]}                 #显示数组中的所有值,*也可以用@代替
 echo ${#a[*]}               #显示数组长度`

时间

date +%a        #星期
date +%y        #年
date +%b       #月
date +%d       #日
date +%H      #时
date +%M      #分
date +%S       #秒
date +%s        #距标准时间的秒数 

判断

if   [  a  -lt  b]                      #lt小于,eq等于,gt大于,le小于等于,ge大于等于
     then
             echo ab
fi

从网页获取壁纸

#!/bin/bash
###输入起始页和末页,空格隔开
read start end
for((i=$start;i<=$end;i++))
do
curl http://wallpaperswide.com/page/${i} |grep prevframe_show | cut -d"/" -f5 |cut -d. -f1 |while read wall_url
do
sudo axel -c -a -o /usr/share/backgrounds http://wallpaperswide.com/download/$wall_url-wallpaper-1366x768.jpg
done
done

###获取bing当天壁纸
url=$(curl -s "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=1&n=1&nc=1498657985239&pid=hp&video=1" |cut -d'"' -f18)
sudo axel -a -c -o /usr/share/backgrounds https://cn.bing.com$url