Linux下的有用命令

在以前的博客《Linux下经常使用命令与使用技巧》中,介绍了Linux的经常使用命令,在今天的博客中,给你们介绍其余的有用命令。linux

1.文本转换命令

在Linux下工做,咱们不可避免地要和文件格式作斗争,相信你们也深入地体会过格式的复杂性。今天给你们介绍几个在实际中常常用到的和格式相关的命令。android

1.1 export命令

在linux命令行中输入汉字的时候有时候会显示乱码,这时咱们就须要设置一下系统的编码方式。能够先用locale命令查看当前的编码方式,若是不是zh_CN.utf8,咱们就能够经过export命令进行设置,设置命令以下:
export LC_ALL=zh_CN.utf-8
经过上面的命令就能够将系统格式设置成utf8,固然也能够设置成其余格式。可是utf8是Linux下默认的编码方式,建议设置成utf8。vim

1.2 convmv命令

有时候,咱们在将windows下的文件拷贝到linux下的时候,会出现文件名乱码。这是由于windows下默认的编码方式是gbk,而linux下是utf8,编码方式不一致致使gbk的文件名没法正常显示。这时能够经过convmv命令进行文件名的转码,经常使用选项以下:windows

选项 说明
-f enc 原文件名的编码方式
-t enc 新的编码方式
-r 递归处理整个目录下的全部文件
-notest 实际作转码,不然只是列出哪些文件须要转码

例如咱们将windows某个目录下的全部文件拷贝到linux下,而后对其进行转码:
convmv –f gbk –t utf8 –notest –r dir/*markdown

1.3 iconv命令

不少状况下,咱们并不仅有文件名是gbk编码,文件内容也是gbk的,这时咱们就须要对文件内容进行转码,这个能够经过iconv命令实现,经常使用选项以下:编辑器

选项 说明
-f,–from-code=名称 原始文本编码
-t,–to-code=名称 输出编码
-o,–output=FILE 输出文件

注意一点,这个命令不会直接修改文件,若是没有指定输出文件会输出到命令行中,通常会重定向到新文件中:
iconv –f gbk –t utf8 input_file > output_fileide

1.4 dos2unix/unix2dos命令

有时候,虽然windows下的文件是utf8编码,可是放到linux下仍是有点问题。DOS下的文本文件是以\r\n做为断行标志的,而linux下的文本文件是以\n做为断行标志的,用vim打开时有时会在行尾显示^M符号。为了去除这个符号,咱们能够利用dos2unix命令。在使用的过程当中,在该命令后面直接添加要转换的一个或多个文件便可,该命令就会直接在源文件里进行转换。若是不想覆盖源文件,能够利用-n选项。unix2dos命令的使用方式与dos2unix命令的相似。函数

2. 进程相关

在Linux下,有时咱们想知道某个进程的id,咱们能够经过pidof得到。若是一次启动了多个相同的进程,咱们能够经过killall一次性杀掉全部相同的进程。这两个命令的参数都是进程的名字。ui

3. 磁盘相关

在linux下工做,咱们有时候会出现磁盘满的状况,能够经过df命令查看各个盘的剩余空间,-h可让显示更易懂。
这里写图片描述
除了df命令,还有一个du命令也很是有用。有时咱们想统计某个目录占用的空间大小,就能够用du命令。不加任何参数的du命令会递归打印目录下全部文件的大小,咱们能够经过参数—max-depth=1来设置只打印给定目录下可见文件和目录的大小,从而避免打印过多。-h也可让显示更易懂。编码

4. 文件传输

在linux下,咱们能够经过scp命令实现不一样机器之间的文件传输,既能够从本地传到远端,也能够从远端传到本地。向远端发送文件的命令格式以下:
scp send_file root@10.136.128.48:/root
可是有时要传递的文件很是大或者文件个数不少,当scp命令没执行完断掉以后下次再进行scp会从新执行所有的复制,这就会致使作了不少无用功。避免此种状况的方法是用rsync命令,rsync也能够实现文件传输,同时针对已经发送的文件再也不重复发送。

5. 文件操做

5.1 split命令

当一个文件很大时,可能须要将文件进行切分生成多个小文件,split命令能够实现这个功能。它既能够用来处理文本文件,也能够用来处理二进制文件。既能够按照行数切分,也能够按照字节数切分。
这个命令和shuf命令组合使用就能够达到随机打乱文本加切割的目的。

5.2 basename和dirname命令

这两个命令的做用是对一个包含完整路径的文件名进行切分,切分出该文件名的不包含路径的文件名和单纯的路径名。例如,basename /home/work/test.wav会返回test.wav,dirname /home/work/test.wav会返回/home/work。这个命令在脚本中用的比较多。

5.3 单纯文件名和包含路径文件名

用ls命令能够生成一个目录下全部文件的文件名,可是文件名不包含路径,若是想让文件名包含路径,则能够用find命令实现。例如想得到/home/work/下全部wav文件的文件名,则能够利用下面的命令:
find /home/work –name *.wav >list
生成的文件名列表能够用来遍历这些文件。

5.4 xxd命令

xxd命令为给定的标准输入或者文件作一次十六进制的输出,它也能够将十六进制输出转换为原来的二进制格式。这个命令有什么用呢?举个例子。utf8文件包含两种不一样的格式:无bom和有bom。用常规的编辑器打开可能没法区分,可是利用这个命令就能够。用xxd查看文件的开头是否包含EF BB BF这几个字节便可。

6. 代码调试

在调试安卓代码的时候,常常会遇到段错误,提示“Fatal signal 11 (SIGSEGV), code 2, fault addr 0x7faa993968 in tid 27841”,遇到这种错误会让人头大。有一种调试方法能够比较容易定位出错的位置。在上面提示中给出了一个地址,咱们能够用arm-linux-androideabi-addr2line命令将地址反编译成出错的函数和行数。

相关文章
相关标签/搜索