基础篇
echo 打印输出
echo 'helloworld'
read 获取用户输入
echo '请输入:'
read name
echo '你输入的是:' $name
ls 列出目录
ls
cat 查看文件内容
cat package.json
touch 创建文件
touch test.sh
echo 写入文件
echo test > test.sh
rm 删除文件
rm test.sh
cd 进入目录
cd src
返回上一层
cd ..
重命名文件
mv name1 name2
取得文件夹所有权
sudo chmod -R 777 .
应用篇
一键清理镜像
docker rmi $(docker images | grep "<none>" | grep -oE "[0-9a-z]{12}" | tr '\n' ' ')
说明:docker images列出镜像,grep none过滤出none镜像的行,然后正则提取镜像id,用tr命令将每一行组合到一行上空格分隔,最后使用rmi命令删除过滤好的none镜像id
实时查看文件日志
tail -f -n 10 logs/nest:09-16.log
查看yarn.lock中某个库的版本
cat yarn.lock | grep -oE -A1 "^react@\S+"
说明:cat
校验参数
function verify_arg {
if [ "$2" = "" ]; then
echo "$1 is required: $2"
exit
else
echo $2
fi
}
verify_arg "entry" $entry
条件语句
多行:
if [[ "$entry" = "123" ]]; then
echo $entry
else
echo "test"
exit
fi
单行:
# exit 0 正常退出,exit 1 异常退出
[[ {{ .beta }} == true ]] && echo "skip register entry in beta." && exit 0
列出文件夹
ls -d */
grep过滤行
-v 反选
ls -d */ | grep -v "blog" # 排除含有blog的
管道cp
ls -d */ | grep -v "blog" | xargs -I {} cp -r ./{} ./blog/{}
xargs -I {}
声明一个占位符号{}接收前面的值,后面的命令替换符号
删除非某个类型的文件
find ./blog -type f -not -name "*.md" | xargs -I {} rm -rf {}
删除空目录
find ./blog -type d -empty | xargs -n 1 rm -rf
取每行的几个字符
find . | awk '{print substr($0, 3)}' # 取每行第3个字符后的
判断文件内是否有指定内容
[[ $(grep -c build ./package.json) != 0 ]] && yarn run build
删除目录下所有文件(包括隐藏文件)
ls -A1 | xargs rm -rf