缘由

因为大概有 2 年没写 shell 了,连 for 循环都忘掉怎么写了,故稍微整理一下日常用的

alias

alias DATE="date +%Y-%m-%d' '%H:%M:%S"
alias busybox="/data/local/tmp/busybox"

算术运算

n=`expr $n + 1`
let n=n+1

比较运算

# < <= > >= Less than; less than or equal to; greater than; greater than or equal to.
# == != Equality; inequality (both evaluated left to right).
# 比較運算符:
# -eq equal
# -ge greater than or equal to
# -gt greater than
# -le less than or equal to
# -lt less than
# -ne not equal
# ex:
test 2 -le 3

if

if test 2 -le 3
then
   echo pass
else 
  echo fail
fi

for

for i in `seq 3`
do
echo $i
done

mkdir

# 创建多级目录
mkdir -p ~/test1/test2

字符串截取

# 從全路徑中得到文件名
file_path="a.txt"
# --非貪婪式
name=${file_path%.*} 
# --貪婪式
name=${file_path%%.*}  

# 從全路徑中得到后綴名
file_path="a.txt"
name=${file_path#*.}  --非貪婪式
name=${file_path##*.}  --貪婪式

#截取第0個字符后的一個字符
str=abcdefg
echo ${str:0:1} 

sh

# 將命令行執行過程存儲到log.txt中
sh -x debug.sh>log.txt 2>&1

# 0 --stdin 標準輸入
# 1 --stdout 標準輸出
# 2 --stderr 標準錯誤

# $0 --獲取shell在命令行啟動的程序的名字
# $# --返回參數的個數
# $$ --返回linux系統分配給該腳本的PID

grep

# 反向过滤
grep -v 
# 过滤包含t或f
grep [tf]

sort

# 按数字排序
sort -n 
# 反序
sort -r

管道

ls|grep temp

反引号

a=`ls`
echo $a

echo

# 输出换行符
echo -e a\\n2

awk

#以=號分隔,并篩選第二列
awk 'BEGIN {FS="="} {print $2}'

#筛选最后一列
awk '{print $NF}'`

#筛选倒数第二列
awk '{print $(NF-1)}'`

sed

# 篩選第二行到最后一行
sed -n '2,$'p

# 变量替换(使用双引号)
sed -e "s/$var1/$var2/g" filename

# 在sed中引用shell变量的四种方法
eval sed ’s/$a/$b/’ filename
sed "s/$a/$b/" filename
sed ’s/’$a’/’$b’/’ filename 
sed s/$a/$b/ filename

dos2unix

# 将windows上的脚本,转化成linux格式
yum install -y dos2unix

查看目录占用空间

du -h --max-depth=1


↙↙↙阅读原文可查看相关链接,并与作者交流