准确来说,是linux
下的一些shell
操作。写在这里也方便查找。
wc查看单个或多个文件的行数或总行数
wc
命令用来计算数字。利用wc
指令我们可以计算文件的Byte
数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc
指令会从标准输入设备读取数据。
查看cpp文件和h文件行数:
1 | find ./ -name "*.cpp" -o -name "*.h" |xargs cat|wc -l |
grep查找包含某个单词的所有文件
如果你想在当前目录下,查找某文件内是否有”hello,world!”字符串,可以像这样:
1 | grep -rn "hello,world!" * |
找文件
在linux
下,主要用到的文件查找有find
,whereis
,locate
。
通常find
不是很常用的。因为速度慢之外, 也很操硬盘!通常我们都是先使用whereis
或者是locate
来检查,如果真的找不到了,才以find
来搜寻。 为什么呢?因为whereis
和locate
是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘, 比较省时间!
whereis
whereis
命令会在指定的目录中查找符合条件的文件,文件应的属性应属于原始代码,二进制文件,或是帮助文件。
locate
locate
命令用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找符合条件的文件或目录。locate
的使用更简单,直接在后面输入文件名后,就能够得到结果。(locate
命令可以在搜寻数据库时快速找到文件,数据库由updatedb
程序来更新)。
find
find
是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。
查找文件名包含I的文件:
1 | find -name "I*.cpp" |
重定向
我用得最多的是make的重定向。
只需要把make
输出中的错误(及警告)信息输出到文件中,可以用:
1 | make xxx 2> build_output.txt |
只需要把make输出中的正常(非错误,非警告)的信息输出到文件中,可以用:
1 | make xxx 1> build_output.txt |
所有的信息都输出到同一个文件中:
1 | make xxx > build_output_all.txt 2>&1 |
其中的2>&1
表示错误信息输出到&1
中,而&1
,指的是前面的那个文件:build_output_all.txt
。
上面所有的`1,2`等数字,后面紧跟着大于号'>' ,中间不能有空格。
根据进程名称Kill多个进程
经常需要Kill
多个进程,这些进程包含共同的关键字,可以用一条命令Kill
掉它们。
1 | ps aux | grep "common" |grep -v grep| cut -c 9-15 | xargs kill -9 |
管道符|
用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令:ps aux
查看所有进程的命令。这时检索出的进程将作为下一条命令grep "common
的输入。grep "common
选出所有含有关键字common
的进程。cut -c 9-15
截取输入行的第9个字符到第15个字符,而这正好是进程号PID
。grep -v grep
除去grep
,xargs kill –9
中的xargs
命令是用来把前面命令的输出结果pid
作为kill –9
命令的参数,并执行该命令。kill –9
会强行杀掉指定进程。kill
完可以检查下:
1 | ps -ef | grep skynet |
在linux下对比文件
diff
是用来比较两个文本文件的差异的工具程序。是代码版本管理的基石之一。
1 | diff <变动前的文件> <变动后的文件> |
使用split来分割大文件
1 | split -b 20m gkdb.db gkdb_pack_ |
split
是命今-B 20M
是指将每个分卷文件最大20M
gkdb.db
需要分割的文件gkdb_pack_
是指分割后的文件开头, 分割后后的文件名一般为gkdb_pack_aa、gkdb_pack_ab、gkdb_pack_ac
依次类推