Linux嵌入式开发过程中经常使用的几个指令

在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习。我的使命就是过滤掉大量的垃圾信息,将知识体系化,以短平快的方式直达问题本质,把大家从大海捞针的痛苦中解脱出来。

文章目录

    • 1. find
    • 2. grep
    • 3. diff
    • 4. patch
    • 5. tar

1. find

功能:
查找包含指定字符匹配的文件或路径。

指令:

# find the files or directories
# which include "file" tag in filename
find ./ -name "*file*" #在当前目录查找文件名或子目录名中包含“file"字符串的的文件和子目录
find ./ -iname "*file*" #忽略大小写
find ./ -name "*file*" -type f #只查找文件
find ./ -iname "*file*" -type d #只查找目录

说明:
1)如果查找当前目录,./可以省略不写。
2)"file"中可以使用任何通配符;双引号还可以省略不写。
3)-type支持的参数如下(不过常用的还是f和d,其他的可以暂时忽略,用到的时候再看):

参数 含义
f 普通文件
d 目录
l 符号连接
c 字符设备
b 块设备

2. grep

功能:
查找包含指定内容匹配的文件。

Tips:全程是Global Regular Expression Print,所以熟悉正则表达式的小伙伴们可以肆意发挥grep的强大搜索功能了。

指令:

# find the files containing "interrupt" at head of a line
grep "^interrupt" ./ -r

说明:
1)如果查找当前目录,./可以省略不写。
2)双引号可以省略不写。
3)-r选项是支持递归查找的意思,r的全拼是recursively。

Tips:注意grep和find指令很像,所以比较容易混淆。这里有一个记忆技巧:grep重在文件内容过滤,所以指令后面先跟内容再跟路径;find重在找文件和路径(名),所以路径在前,名称在后。
其实在使用时一般都是在当前目录下,所以直接省掉目录即可,只要记得find后面需要加-name选项即可。

3. diff

功能:
比较文件或目录,也可生成补丁文件。

指令:

# compare two files
diff file_old file_new
# compare tow folders recursively
diff dir_old dir_new -r
# compare & creat a patch file
diff dir_old dir_new -urwNB > file_name.patch 

说明:

参数 含义
u 标准格式(含上下文)
r 递归比较
w 忽略空格
N 将不存在的文件视为空文件
B 忽略空行(换行符)

4. patch

功能:
打补丁。

指令:

# patch 
cd old_dir
patch -p1 < file_name.patch

说明:
该指令的关键是目录的正确性:p1中的数字1代表的是忽略补丁文件中的顶层目录(忽略old_dir);如果是2就是忽略补丁文件中的顶层和次顶层目录,以此类推。

p1是典型应用场景——比如小明基于小红的old_dir目录拷贝了一份副本,命名new_dir,然后将里面的文件做了修改,并用diff指令(参考diff指令)生成补丁文件file_name.patch。当小明给小红共享自己的修改时就可以只提供file_name.patch文件给小红,小红拿到这个补丁文件后,进入old_dir目录下,然后执行示例中的指令即可将小明的改动“补”到old_dir中。

5. tar

功能:
压缩解压缩gzip和bzip2格式的文件。

指令:

# creat gzip file
tar -czf file_name.tar.gz dir_name
# creat bzip2 file
tar -cjf file_name.tar.bz2 dir_name
# uzip gzip file
tar -xzf file_name.tar.gz
# uzip bzip2 file
tar -xjf file_name.tar.bz2

说明:

参数 含义
c 创建
x 解压
z gzip类型
j bzip2类型
f 文件(后接文件名)

未完待续。。。

你可能感兴趣的:(Linux,嵌入式)