常用shell命令

  • 拷贝
cp dir1 dir2 -LR // 拷贝实际文件
cp dir1 dir2 -r // 保留连接文件
  • 文档处理
// 单词全匹配替换
export FROM=CMD TO=UCMD && grep -w ${FROM} * -nr  | awk -F ":" '{print $1}'  | uniq  | xargs  sed -i "s/\<${FROM}\>/${TO}/g"
// 删掉空行
sed '/^\s*$/d' file -i
// 行  1 2 3 4 换为 2 1 4 3
sed -n 'h;$!{n;G};p' file
find . -type f -exec sed -i 's/AA/BB/g' {} +
find  . -name "build" -exec rm {} -rf \;
find / -type f -name "example.txt" -exec cp {} /path/to/destination \;
  • 计算
echo "obase=16;ibase=16;C0000000-80200000"|bc
  • 重定向
https://blog.csdn.net/weixin_42031299/article/details/120101772
ls	>/dev/null 2>&1 // command >& /dev/null
	标准输出和错误输出都舍弃掉;
ls 2>&1 >/dev/null
	标准输出被舍弃掉,错误输出被重定位到屏幕;

标准输出和错误输出都输出到文件,先清空文件,再输出到文件
ls > log.txt 2>&1
ls &> log.txt

标准输出和错误输出都输出到文件,不清空文件,追加到文件
ls >> log.txt 2>&1
ls &>> log.txt

  • 查找新生成物
$ export OLDDATE=`date '+%Y-%m-%d %H:%M:%S'`
$ do something
$ echo find  . -type f -newermt \"$OLDDATE\" -print | bash

正则表达式

// 匹配 () 以及括号中的所有字符
\((.*?)\)
  • 字符串相等问题
在 Shell 脚本中比较字符串时,如果你发现一个变量的值与预期不相等,可能的原因包括:

空格问题:变量的值可能有前导或尾随空格,这会导致比较不等。
字符编码问题:如果字符串包含不可见的字符或使用了不同的编码,比较可能会失败。
变量引用:确保正确引用变量。

hexdump -C <(echo "$format")


  • 找到所有版本的文件并打印 每版本对应的一种路径
#!/bin/bash

TARGET_DIR="."

# 查找所有 start.SS 文件,计算哈希并输出路径
find "$TARGET_DIR" -type f -name "start.SS" -print0 | \
while IFS= read -r -d '' file; do
    hash=$(sha256sum "$file" | awk '{print $1}')
    echo "$hash $file"
done | sort -u -k1,1 | awk '
{
    hash = $1
    $1 = ""
    sub(/^ /, "", $0)
    if (!seen[hash]++) {
        #print "类别哈希: " hash
        #print "路径: " $0 #"\n"
        print $0
    }
}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值