加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Linux下的有用命令

发布时间:2022-10-12 11:15:10 所属栏目:Unix 来源:
导读:  在之前的博客《Linux下常用命令与使用技巧》中,介绍了Linux的常用命令,在今天的博客中,给大家介绍其他的有用命令。

  1.文本转换命令

  在Linux下工作,我们不可避免地要和文件格式做斗争,相信大
  在之前的博客《Linux下常用命令与使用技巧》中,介绍了Linux的常用命令,在今天的博客中,给大家介绍其他的有用命令。
 
  1.文本转换命令
 
  在Linux下工作,我们不可避免地要和文件格式做斗争,相信大家也深刻地体会过格式的复杂性。今天给大家介绍几个在实际中经常用到的和格式相关的命令。
 
  1.1 export命令
 
  在linux命令行中输入汉字的时候有时候会显示乱码,这时我们就需要设置一下系统的编码方式。可以先用locale命令查看当前的编码方式,如果不是zh_CN.utf8,我们就可以通过export命令进行设置,设置命令如下:
 
  export LC_ALL=zh_CN.utf-8
 
  通过上面的命令就可以将系统格式设置成utf8,当然也可以设置成其他格式。但是utf8是Linux下默认的编码方式,建议设置成utf8。
 
  1.2 convmv命令
 
  有时候,我们在将windows下的文件拷贝到linux下的时候,会出现文件名乱码。这是因为windows下默认的编码方式是gbk,而linux下是utf8,编码方式不一致导致gbk的文件名无法正常显示。这时可以通过convmv命令进行文件名的转码,常用选项如下:
 
  选项说明
 
  -f enc
 
  原文件名的编码方式
 
  -t enc
 
  新的编码方式
 
  -r
 
  递归处理整个目录下的所有文件
 
  -notest
 
  实际做转码,否则只是列出哪些文件需要转码
 
  例如我们将windows某个目录下的所有文件拷贝到linux下,然后对其进行转码:
 
  convmv –f gbk –t utf8 –notest –r dir/*
 
  1.3 iconv命令
 
  很多情况下,我们并不只有文件名是gbk编码,文件内容也是gbk的unix命令框,这时我们就需要对文件内容进行转码,这个可以通过iconv命令实现,常用选项如下:
 
  选项说明
 
  -f,–from-code=名称
 
  原始文本编码
 
  -t,–to-code=名称
 
  输出编码
 
  -o,–output=FILE
 
  输出文件
 
  注意一点,这个命令不会直接修改文件,如果没有指定输出文件会输出到命令行中,一般会重定向到新文件中:
 
  iconv –f gbk –t utf8 input_file > output_file
 
  1.4 dos2unix/unix2dos命令
 
  有时候,虽然windows下的文件是utf8编码,但是放到linux下还是有点问题。DOS下的文本文件是以\r\n作为断行标志的,而linux下的文本文件是以\n作为断行标志的,用vim打开时有时会在行尾显示^M符号。为了去除这个符号,我们可以利用dos2unix命令。在使用的过程中,在该命令后面直接添加要转换的一个或多个文件即可,该命令就会直接在源文件里进行转换。如果不想覆盖源文件,可以利用-n选项。unix2dos命令的使用方式与dos2unix命令的类似。
 
  2. 进程相关
 
  在Linux下,有时我们想知道某个进程的id,我们可以通过pidof获得。如果一次启动了多个相同的进程,我们可以通过killall一次性杀掉所有相同的进程。这两个命令的参数都是进程的名字。
 
  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命令将地址反编译成出错的函数和行数。
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章