shell知识大杂烩
- 1. 获取执行文件的绝对路径
- 2. set -e -o pipefail errexit(同-e) 脚本出错即停
- 3. 特殊变量
$$(shell本身pid)
$?(获取前一个命令执行状态)
$*(获取参数列表,返回("$1 $2 $3"))
$@(获取参数列表,返回("$1" "$2" "$3"))
$#(获取传参的个数)
- 4. 换着花样玩儿变量
(1) echo ${path#/*c} 匹配$path 以第一个c为分割符的右边 >>/d/a/c/b
(2) echo ${path##*c} 匹配$path 以最后一个c为分割符的右边 >>/b
(3) echo ${path%c*} 匹配$path 以最后一个c为分隔符的左边部分 >>/a/b/c/d/a/
(4) echo ${path%%c*} 匹配$path 以第一个c为分隔符的左边部分 >>/a/b/
(5) echo ${path/c/w} 将匹配到的第一个字符'c'替换成'w'
(6) echo ${path//c/w} 将匹配到的所有字符'c'替换成'w'
(1) ${value:-word} 若变量value未定义或为空,则用word替换; world一般为常用、默认参数 常用判断传入参数是否为空、rm -rf /${path}等时候
(2) ${value:=word} 若变量value未定义或为空,则返回word 且将word赋值给value word一般为常用值
(3) ${value:?word} 例echo ${c:?变量未定义或者未赋值} c为空或未赋值,输出提示语,并终止程序 常用
(4) ${value:+word} 若value已赋值,则value=word
(5) ${#value} 统计value中字符的个数 常用
- 6. 插入多行到文本末尾,若是替换则将cat>>test.sh改为cat>test.sh
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF
- 7. 多姿多彩的文字
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[34m 黄色字 \033[0m"
echo -e "\033[41;33m 红底黄字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
字颜色:30—–37
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
字背景颜色范围:40—–47
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
- 8. 文件判断
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
- 9. 连接数据库
mysql -h${host_name} -P${port} -u${user_name} -p${paaswd} -e "${sql_commands}"
- 10. 循环获取连续数字
(2) for i in `seq 1 10`
- 11. 多线程,parallel命令
&:后台运行
wait:等子线程结束之后进行下面的命令
for num in `seq 1 ${all_num}`
do
{
sleep 1
echo ${num}
} &
done
wait
GNU parallel命令是非常强大的并行计算命令,使用-j参数控制其并发数量,推荐
parallel -j 5 "sleep 1;echo {}" ::: `seq 1 10`
cat bigfile.txt | parallel --pipe grep 'pattern' 当需要操作一个特别大的文档时
cat bigfile.txt | parallel --pipe sed s/old/new/g
cat bigfile.txt | parallel --pipe sed s/old/new/g
- 12. 定时任务
方法二:1. 创建xx.crontab文件;2.进入xx文件编辑定时任务(有多个定时任务时);3.crontab xx.crontab。4. 删除crontab -r xx.crontab
crontab -l > conf && echo "crontab_command" >> conf && crontab conf
方法三:死循环加sleep;for ((;;)) ,while: or while true: 等
*/2 * 1-15 1,5,9 0 /bin/sh /home/admin/jiaoben/buy/deleteFile.sh
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
crontab命令
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
*/2 * 1-15 1,5,9 0 /bin/sh /home/admin/jiaoben/buy/deleteFile.sh
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
crontab命令
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
- 13.bash中多用[[ ]]代替[],test等,更加通用
字符表达式的比较使用 [[ ]] ,其运算符 =、!=、-n、-z
文件表达式的测试使用 [[ ]] ,其运算符 -r、-l、-w、-x、-f、-d、-s、-nt、-ot
逻辑表达式的测试使用 [[ ]] ,其运算符 !、&&、||
数字比较、字符比较、逻辑测试可以组合,如$ [[ "a" != "b" && 4 -gt 3 ]]
支持bash中的通配符扩展,如:[[ hest = h??t ]] 、[ hest = h*t ]]
文件表达式的测试使用 [[ ]] ,其运算符 -r、-l、-w、-x、-f、-d、-s、-nt、-ot
逻辑表达式的测试使用 [[ ]] ,其运算符 !、&&、||
数字比较、字符比较、逻辑测试可以组合,如$ [[ "a" != "b" && 4 -gt 3 ]]
支持bash中的通配符扩展,如:[[ hest = h??t ]] 、[ hest = h*t ]]
- 14. echo命令
echo -n "hello world" 输出不换行
echo -e "\033[30m 黑色字 \033[0m" 输出转义字符
- 15. 文件压缩、解压命令
.tar 解压 tar xzvf filename.tar -C dirname
压缩 tar czvf filename.tar dirname
.zip 解压 unzip filename.zip -d dirname
压缩 zip filename.zip dirname
.gz 解压1 gunzip filename.gz
解压2 gzip -d filename.gz
压缩 gzip filename
.tar.gz 和 .tgz 解压 tar zxvf filename.tar.gz
压缩 tar zcvf filename.tar.gz dirname
.bz2 解压1 bzip2 -d filename.bz2
解压2 bunzip2 filename.bz2
.bz2 压缩 bzip2 -z filename
.tar.bz2 解压 tar jxvf filename.tar.bz2
压缩 tar jcvf filename.tar.bz2 dirname
.bz 解压1 bzip2 -d filename.bz
解压2 bunzip2 filename.bz
.tar.bz 解压 tar jxvf filename.tar.bz
.z 解压 uncompress filename.z
压缩 compress filename
.tar.z 解压 tar zxvf filename.tar.z
压缩 tar zcvf filename.tar.z dirname
.rar 解压 unrar e filename.rar
压缩 rar a filename.rar dirname
压缩 zip filename.zip dirname
.gz 解压1 gunzip filename.gz
解压2 gzip -d filename.gz
压缩 gzip filename
.tar.gz 和 .tgz 解压 tar zxvf filename.tar.gz
压缩 tar zcvf filename.tar.gz dirname
.bz2 解压1 bzip2 -d filename.bz2
解压2 bunzip2 filename.bz2
.bz2 压缩 bzip2 -z filename
.tar.bz2 解压 tar jxvf filename.tar.bz2
压缩 tar jcvf filename.tar.bz2 dirname
.bz 解压1 bzip2 -d filename.bz
解压2 bunzip2 filename.bz
.tar.bz 解压 tar jxvf filename.tar.bz
.z 解压 uncompress filename.z
压缩 compress filename
.tar.z 解压 tar zxvf filename.tar.z
压缩 tar zcvf filename.tar.z dirname
.rar 解压 unrar e filename.rar
压缩 rar a filename.rar dirname
####################
##生命不息,未完待续##
####################

浙公网安备 33010602011771号