Skip to content

BASH

在bash脚本中使用alias

@TAG alias

加上这么一句:

shopt -s expand_aliases

判断命令行参数是否为空

在python里可以用len(sys.argv)判断参数个数,bash里用中括号里的-z

if [ -z "$1" ] && [ -z "$2" ]; then
    echo "Usage: $0 <parameter1> <parameter2>"
fi

for循环用seq生成数字列表

@TAG seq

注意终点是包含在内的,不同于Python的range

  • seq 3: 1 2 3
  • seq 2 3: 2 3
  • seq 1 2 5: 1 3 5
for i in $(seq 1 $END); do echo $i; done

BASH做不同进制间数学计算

不需要bc也可以直接做计算,例如计算5+0xa+0b1010

echo $((5+16#a+2#1010))

判断命令不存在再apt安装

command -v aria2c >/dev/null 2>&1 || { apt update && apt install -y aria2; }

如果有多个软件可能要安装,没必要每次都apt update,可以先装了再说 失败就apt update

command -v 7z >/dev/null 2>&1 || { apt-get install -y p7zip; }
command -v 7z >/dev/null 2>&1 || { apt update;  apt-get install -y p7zip; }

判断文件不存在

注意]前面要有空格

if [ ! -f "somefile" ]; then
    curl ...
fi

sort排序

逆序 -r 按版本排序 排序IP地址 -V 按数字排序 -n 按人类理解的文件大小排序 -h 指定某些列来排序 -k 3,3 -k 4,4 指定分隔符用-t ‘.’

参考: https://www.madboa.com/geek/sort-addr/


rsync移动远程目录特定文件至本机后循环操作

rsync有--dry-run参数确认没出错后再操作

rsync -P --remove-source-files -avz '1.2.3.4:/root/dockerimages/*.tar.7z' ./

for filename in *.tar.7z; do 
    7z x -so $filename | docker load; 
    mv $filename ./done/; 
done