cat显示文件内容

例子:

ty@ty-virtual:/mnt/hgfs/02_linux//code$ cat my.txt 
bin
boot
cdrom
dev
etc
home
initrd.img

ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ cat -n my.txt 
1 bin
2 boot
3 cdrom
4 dev
5 etc

od--可以指定格式查看文件内容

格式:

od   [选项]  文件

选项: -A 指定输出地址格式
-An 不显示地址
-Ax 地址以十六进制输出
-Ao 地址以八进制输出(默认也是八进制)
-t 指定输出数据格式 (数据格式有x,o, d, f, c)
-tx 以十六进制输出,默认是4字节
-tx1 以十六进制输出,一次1字节
-t格式[SIZE], 一对应的格式输出,并且一次输出SIZE字节
比如: -tx2 ,以十六进制输出,一次2字节

-wN 指定一行输出N字节
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ od -Ax -tc -w8 file
000000 a b c d e f g h
000008 j k l m \n
00000d

-Nn 只取文件中的前n个字节
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ od -Ax -tc -N2 file
000000 a b
000002

-j start -N size 从start位置开始取, 总共取size字节
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ od -Ax -tc -j2 -N2 file
000002 c d
000004

find查找文件

按照文件名称查询

grepty@ty-virtual:/mnt/hgfs/02_linux/test/code$ find /usr/bin/  -name "ctags"
/usr/bin/ctags
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ find /usr/bin/ -name "stdio.h"
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ find /usr/include -name "stdio.h"
/usr/include/c++/5/tr1/stdio.h
/usr/include/stdio.h
/usr/include/x86_64-linux-gnu/bits/stdio.h

按照文件类型查找

ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ find  /dev/ -type b  查找/dev目录下的块设备文件
/dev/sr0
/dev/sda6
/dev/sda5
/dev/sda2
/dev/sda1
/dev/sda
/dev/loop7
/dev/loop6
/dev/loop5
/dev/loop4
/dev/loop3
/dev/loop2
/dev/loop1
/dev/loop0

grep在指定文件或目录中,按指定条件寻找字符串

ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ find /usr/  -name "stdio.h" | grep "c++"
/usr/include/c++/5/tr1/stdio.h
/usr/local/arm/5.4.0/usr/arm-none-linux-gnueabi/include/c++/5.4.0/tr1/stdio.h

先用find查找/usr目录下所有的stdio.h文件,把过滤出路径中包含c++的路径
grep 'time_t' /usr/ -rn  #在/usr目录下所有的文件中查找包含time_t文件

diff--比较两个文件或目录的差异(生成补丁文件)

输出两个的差异

ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ ls
first.c second.c
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ diff first.c second.c
1a2,5
> int add(int a, int b)
> {
> return a+b;
> }
6c10
< int c=a+b;
---
> int c=add(a,b);

用diff生成first.c second.c的补丁文件

ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ diff first.c second.c -uN
--- first.c 2022-07-30 11:26:57.000000000 +0800
+++ second.c 2022-07-30 11:28:03.000000000 +0800
@@ -1,9 +1,13 @@
#include <stdio.h>
+int add(int a, int b)
+{
+ return a+b;
+}
int main(void)
{
int a=1;
int b=2;
- int c=a+b;
+ int c=add(a,b);
printf("%d\n", c);
return 0;
}

diff first.c second.c -uN > second.patch (second.patch就是补丁文件)

patch打补丁

ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ ls
first.c second.c second.patch
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ patch -p0 < second.patch #打补丁
patching file first.c
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ vim first.c
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ patch -R -p0 <second.patch #去掉补丁
patching file first.c
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$ vim first.c
ty@ty-virtual:/mnt/hgfs/02_linux/test/code$