文件比较
cmp命令:两文件逐字节比较
cmp file1 file2
-
功能:逐字节比较两个文件是否相同
-
两个文件相同时,不给出任何提示
不同时,打印第一个不同之处
-
局限性:只能比较两个位于同一机器上的文件
md5sum:散列编码(不是比较)
md5sum src.tar proto.txt > myfile.log #将两个16进制长度的编码写入log中,如果有其他人需要比较自己是否下载了正确的程序,只需比较这两个文件的编码即可
- 常用于比较两个位于网络中不同机器上的两个文件是否相同
- 将文件转换为统一长度的16个字节长度的编码
diff:比较文件差别(历史修改)
diff file1 file2 # normal格式
diff -u file1 file2 #unified格式
-
功能:比较两个文件之间的差别。大于号> 表示要加入的内容,小于号<表示要删除的内容
-
normal格式:列出如何将file1转化为file2
file1行号 + 指令 + file2行号 含义 a(ADD) 增加 c(Change) 修改 d(Delete) 删除 举例:
diff test.c test1.c
//test.c 文件 1. #include<iostream> 2. #include<stdlib.h> 3. using namespace std; 4. 5. int main() 6. { 7. for(int i=0;i<5;i++) 8. { 9. cout<<"test"<<endl; 10. } 11. return 0; 12. } //test1.c文件 1. #include<iostream> 2. using namespace std; 3. 4. int main() 5. { 6. int test = 0; 7. for(int i=0;i<5;i++) 8. { 9. cout<<"123456"<<endl; 10. } 11. return 0; 12. }
指令 | 修改方式 | 含义 |
---|---|---|
2d1 | < #include<stdlib.h> | file1的第2行删除后,后面的内容与file2的第1行一致 |
6a6 | > int test = 0; | 在file1的第6行之后加入file2的第6行 |
9c9 | < cout<<"test"<<endl; | 在file1中删除这一行 |
--- | 表示分割线,分割线以上为file1的原有内容 | |
> cout<<"123456"<<endl; | 在file2中加入这一行 |
-
unified格式
~: test diff -u test.c test1.c --- test.c 2020-06-05 11:09:42.000000000 +0800 +++ test1.c 2020-06-05 11:02:17.000000000 +0800 @@ -1,12 +1,12 @@ #include<iostream> -#include<stdlib.h> # 删除test.c中的这一行 using namespace std; int main() { + int test = 0; # 在test.c中加入这一行 for(int i=0;i<5;i++) { - cout<<"test"<<endl; # 在test.c中删除这一行 + cout<<"123456"<<endl; # 在test.c中加入这一行 } return 0; }
Vi编辑
偏好设置
修改用户HOME目录下的.exrc文件
set number # 显示行号
set tabstop=4 # 制表符为4格
运行时检查偏好设置:
:set
操作键
-
移动到指定行
:465
-
移动到文件尾
:$
-
移动到行尾
$
,移动到行首^
-
光标移动到配对括号上:
%
-
撤回
u
, 重复上次的操作:.
-
保存退出:
zz
或者:wq
流量控制
终端输入Ctrl-C后断流,使用Ctrl-Q恢复