#
# ${var#pattern} 删除开头最短匹配 开头 最短匹配(非贪婪)
# ${var%pattern} 删除结尾最短匹配 结尾 最短匹配(非贪婪)
str="///data///"
echo "${str#/}"
echo "${str%/}"
# 行数统计
cat list.txt | tr '/' '\t' | awk '{count[$1"/"$2]++} END {for (line in count) print count[line], line}'
awk -v c="$(pwd)" '{print c "/" $1}'
awk '{sum += $2} END {print sum / 1024 / 1024 / 1024 / 1024}' data.txt
sort file | uniq -c | awk '$1 > 1'
# 生成批量执行命令
cat index.txt | awk '{print "{}"$1 " {}"$2 }'
# 查找指定深度的目录
find {} -mindepth 2 -maxdepth 2 -type d | wc -l
# 合并文件(按行合并)
paste 1.txt 2.txt > merge.txt
# 分割文件
split -l 1000 -d source-cp-conmand {}_
# 并发执行命令文件
xargs -P 8 -I {} bash -c '{}' < commands.txt
# Network Cat
nc -zv ip port
# NFS挂载
mount -t nfs {} {}
mount -t nfs4 -o proto=tcp,timeo=600,minorversion=1,nconnect=10 {} {}
# c 创建归档文件 z 使用 gzip v 显示过程 f 指定压缩文件名 C 指定目录
tar -czvf Downloads.tar.gz Downloads
tar -xzvf Downloads1.tar.gz -C /path/to
# 后台运行程序
nohup your_command > output.log 2>&1 &
# 查看系统负载
mpstat -P ALL
# 删除匹配项 -i --in-place
sed '/pattern/d' filename.txt
# 替换匹配项 不加g为替换每行第一个匹配项
sed 's/old/new/g' filename.txt
# 只打印匹配项
sed -n '/pattern/p' filename.txt
# 功能 命令示例
# 字符替换 tr 'a-z' 'A-Z'
# 删除字符 tr -d '0-9'
# 压缩重复字符 tr -s ' '
# 取反操作 tr -c '[:digit:]' '\n'
# 分隔符转换 tr ',' '\t'
cat /proc/6/environ | tr '\0' '\n'
# 换行符转换为unix标准换行符 Linux 换行符:\n(LF) Windows 换行符:\r\n(CRLF)
dos2unix {}.txt
# ansible 批量执行命令
ansible all -i nb-cx.ini -m shell -a 'top -b -n 1 | head -n 2'
# rclone
rclone copy {} {} --transfers=50 --checkers=100 -P
# 目录完全同步
rsync -a --delete empty/ source/
# 修改系统时区
dpkg-reconfigure tzdata
# tmux 命令
# 组合快捷键
# 退出 ctrl+b d
# 左右拆分窗格 ctrl+b %
# 水平拆分窗格 ctrl+b "
# 删除窗格 ctrl+d
# 调整窗格大小 ctrl+b 方向键
tmux new -s session_name # -d 创建但不进入
tmux a -t session_name
tmux kill-session -t session_name
tmux kill-server
tmux ls