学无止境--Linux开发实用命令(不定时更新)

备注:学习记录所用,若有高手不吝赐教,万分感谢!


1、将文件夹p1、p2、p3压缩到pkg.tar.gz

  tar -czf pkg.tar.gz p1 p2 p3

2、解压缩:

  tar -zxvf pkg.tar.gz


3、查找

  find . -name *.c | xargs grep -n "字符串"

查找并删除xx:
    find . -name *xx -type d -print -exec rm -f {} \;
          -exec                         在查找到的每个文件上执行指定命令
          \;                           (分号) - 每个文件执行一次命令 (+(加号) - 一次传递所有文件)
          -type [ f 为文件, d 为目录 ]
查找并复制:
    find ./ -type f -exec cp --parents {} $(ROOTFS) \;
          -exec                         在查找到的每个文件上执行指定命令
          cp --parents {} $(ROOTFS)     复制每个文件并保持目录结构
          \;                           (分号) - 每个文件执行一次命令

     


 4、查看gpio占用情况

  4.1、menuconfig中使能CONFIG_DEBUG_FS

  4.2、命令:

    mount -t debugfs debugfs /sys/kernel/debug 
    cat /sys/kernel/debug/gpio


5、直接替换文件中的内容
sed -i 's/old_str/old_str/g' testfile

6、awk匹配输出
基本语法:
awk 'pattern {action}' file
  • pattern:匹配模式(可选)

  • action:执行的动作(可选)

  • 两者都省略时,默认打印所有行

内置变量

变量 含义 示例
NR 当前记录号(行号) awk 'NR==1' 第一行
FNR 当前文件中的记录号 多文件时每个文件单独计数
NF 当前行的字段数 awk '{print NF}' 打印每行列数
$0 整行内容 awk '{print $0}'
$1, $2... 第1,2...列 awk '{print $1}'
FS 输入字段分隔符 BEGIN{FS=":"}
OFS 输出字段分隔符 BEGIN{OFS="-"}
RS 输入记录分隔符 BEGIN{RS="\n\n"}
ORS 输出记录分隔符 BEGIN{ORS="\n\n"}
例子:(shell脚本截取)
disk=/dev/mmcblk0
diskSize=$(fdisk -l $disk |awk 'NR==1' | grep Disk | awk '{print $3}')
  •   fdisk -l $disk   : 列出磁盘/dev/mmcblk0,输出到awk
  •   awk 'NR==1'  :提取fdisk -l /dev/mmcblk0 输入的第一行,输出到grep 
  •   grep Disk        : 过滤出包含 "Disk" 的行
  •   awk '{print $3}' :提取每行的第3个字段
diskSize=$(fdisk -l | grep $disk'p'$i | awk '{print $7+0}')
  •   fdisk -l $disk   : 列出磁盘/dev/mmcblk0,输出到grep 
  •   grep $disk'p'$i  :假如$i=1, 过滤出包含 "/dev/mmcblk0p1" 的行
  •   awk '{print $7+0}' :提取每行的第7个字段,并转换为数字
echo "part"$i":" $diskSize   打印diskSize

7、归档
(Makefile脚本截取)
sudo find . | sudo cpio -o -H newc | gzip -9 > ../initramfs_data.cpio.gz && cp -f ../initramfs_data.cpio.gz $(IMAGE_PATH)/
      sudo find . - 递归查找当前目录所有文件
      sudo cpio -o -H newc - 打包为 cpio 归档(newc 格式)
      gzip -9 - 最大压缩
      > ../initramfs_data.cpio.gz - 输出到上级目录
      && cp -f ... - 成功后复制到目标路径

8、文件传输

scp [-r] file[dir] user_name@ip:/路径

例子:要将172.19.0.1虚拟机下/root/mylib目录复制到172.19.0.2虚拟机下的/root/env/oddr下(两个的用户都是root):

    登陆172.19.0.1并进入/root/目录下:scp -r mylib root@172.19.0.2:/root/env/oddr

 

posted @ 2023-11-14 13:26  xMofang  阅读(74)  评论(0)    收藏  举报