学无止境--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

浙公网安备 33010602011771号