linux下的一些操作

准确来说,是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下,主要用到的文件查找有findwhereislocate

通常find不是很常用的。因为速度慢之外, 也很操硬盘!通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。 为什么呢?因为whereislocate是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘, 比较省时间!

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个字符,而这正好是进程号PIDgrep -v grep除去grepxargs 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依次类推

Sin prisas ¡pero sin pausas!