跳至内容
Wiki@桩白墨
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
bash
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== bash 常用命令 ====== ===== 外部文档 ===== [[http://c.biancheng.net/cpp/view/2739.html|Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数]] ======bash 使用心得====== =====复制文件夹中前N个文件===== 先 cd 进入该文件夹。 如果N=1000,命令如下: <code> ls |head -n 1000 |xargs -i cp -r {} /home/xuqiong/data/testimg/nosee/test </code> =====批量修改Java文件的包名===== 原来的包名是 com.xxx.utils,现在要改为 test。有 100 个这样的文件。 使用 sed 命令: <code> sed -i 's|com.xxx.utils|test|' *.java </code> ===== 查看磁盘信息 ===== <code>df -h</code> ===== 当前日期格式化 ===== <code>date +%Y-%m-%dT%H:%M:%S</code> ===== 相对路径转化为绝对路径 ===== <code> path=$(cd ../abc; pwd) echo $path </code> ===== 判断目录是否存在 ===== <code> path=~/codes echo $path # 输出绝对路径 if [ -d "$path" ]; then echo 'exist codes' fi if [ -d "/Users/plough/codes" ]; then echo 'exist codes' fi # 相对路径是没用的 if [ ! -d "~/codes" ]; then echo 'no exist codes' fi </code> ==== 判断文件是否存在 ==== <code> path=~/codes/test.py if [ -f "$path" ]; then echo 'exist' fi </code> ===== 获取当前脚本所在目录 ===== <code> dir=`dirname $0` script_dir=`readlink -f $dir/` </code> 或者 <code> script_dir=$(cd `dirname $0`; pwd) </code> ===== 替换文本文件中的内容 ===== <code>sed -i "s#%name#Tom#g" hello.yml</code> ===== 文件夹中保留指定数量的文件 ===== <code> reserve_num=10; ((delete_num=$(ls /var/lib/logs|wc -l) - reserve_num)); if ((delete_num > 0)); then rm -rf $(ls /var/lib/logs|sed \"s:^:/var/lib/logs/:\"|sort|head -n $delete_num); fi; </code> ===== 查看一个目录中的文件大小 ===== <code> du -d 1 -h </code> ===== 获取本机 ip 地址 ===== <code> ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' </code> 根据实际情况,可能存在多个 ip,还要再用 grep 过滤一下。 ===== try/catch 异常处理 ===== <code> { # try command1 && #save your output } || { # catch # save log for exception } </code> ===== 操作 bash 数组、字典 ===== <code> # Array pretending to be a Pythonic dictionary ARRAY=( "cow:moo" "dinosaur:roar" "bird:chirp" "bash:rock" ) for animal in "${ARRAY[@]}" ; do KEY="${animal%%:*}" VALUE="${animal##*:}" printf "%s likes to %s.\n" "$KEY" "$VALUE" done printf "%s is an extinct animal which likes to %s\n" "${ARRAY[1]%%:*}" "${ARRAY[1]##*:} </code> ===== 字符串大小写转换 ===== <code> var="Hello,Word" # 把变量中的第一个字符换成大写 echo ${var^} # 把变量中的所有小写字母,全部替换为大写 echo ${var^^} # 把变量中的第一个字符换成小写 echo ${var,} # 把变量中的所有大写字母,全部替换为小写 echo ${var,,} </code> ===== 判断变量是否为空 ===== <code> #!/bin/bash function is_empty() { if [ -z "$1" ]; then return 1 fi return 0 } function is_empty_ignore_space() { if [ -z "${1// }" ]; then return 1 fi return 0 } is_empty '' echo $? # 1 is_empty_ignore_space '' echo $? # 1 is_empty ' ' echo $? # 0 is_empty_ignore_space ' ' echo $? # 1 </code> ===== 获取正在运行的 pod ===== <code> kubectl get pods|tail -n +2|awk '{print $1}' </code> ===== 关闭正在运行的 k8s 服务 ===== <code> kubectl delete sts `kubectl get sts|tail -n +2|awk '{print $1}'` kubectl delete deployment `kubectl get deployments|tail -n +2|awk '{print $1}'` kubectl delete service `kubectl get services|tail -n +2|awk '{print $1}'` </code> ===== 判断指定 git 分支是否存在 ===== <code> </code> ===== 目录下搜索文件内容 ===== 类似于 ack 的效果。 <code> find . -type f|xargs grep "10.10.25.107" </code> ===== 判断端口是否打开 ===== nc -z <host> <port>,然后检查 $? 的值,为 1 是打开的,为 0 则是关闭的。例如: <code> if [ !$(nc -z 0.0.0.0 27018) ]; then kubectl port-forward service/mongo --address 0.0.0.0 27018:27018 & fi </code> ===== 查找文件并执行命令 ===== <code> find . -name '*.config.js' -exec echo 123{} \; # 查找并删除 find . -name '*Pulished*' -exec rm {} \; </code>
bash.txt
· 最后更改: 2022/02/18 11:29 由
plough
页面工具
显示页面
修订记录
反向链接
回到顶部