在之前的博客《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的,这时我们就需要对文件内容进行转码,这个可以通过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命令将地址反编译成出错的函数和行数。

Linux下的有用命令的更多相关文章

  1. Linux下的find命令2

    :续linux下的find命令 Linux/Unix下非常有用的find命令的用法 功能简述:find(查找)主要沿着文件层次(目录)结构依次向下遍历,匹配符合条件的文件,可以附带执行相应的操作选项, ...

  2. linux下显示dd命令的进度:

    linux下显示dd命令的进度: dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000 想要查看上面的dd命令的执行进度,可以使用下面几种方法: 比 ...

  3. [转] 关于linux下通过shell命令(自动)修改用户密码

    关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...

  4. linux下安装7z命令及7z命令的使用

    本文主要介绍了在linux下安装7z命令的方法,同时介绍了7z命令的使用.7z压缩格式拥有众多优点,具有极高的压缩比率,如果你还不了解,请看文章:7z格式.LZMA压缩算法和7-Zip详细介绍. re ...

  5. 将linux下的rm命令改造成移动文件至回收站【转】

    转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...

  6. Linux下使用mail命令发送邮件

    因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...

  7. linux下常用FTP命令

    linux下常用FTP命令 1. 连接ftp服务器 1. 连接ftp服务器格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1b)服 ...

  8. Linux下的管道命令有这些:

    Linux下的管道命令有这些: 选取命令:cat grep 排序命令:sort wc uniq 双向重定向:tee 字符转换命令: tr, col, join, paste, expand 切割命令: ...

  9. Linux下使用ps命令来查看Oracle相关的进程

    Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [oracle@ www.linuxidc.com ...

随机推荐

  1. spark分区数,task数目,core数,worker节点个数,excutor数量梳理

    作者:王燚光链接:https://www.zhihu.com/question/33270495/answer/93424104来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  2. linux查看日志文件内容命令tail、cat、tac、head、echo

    linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...

  3. Ubuntu 18.04 LTS修改 国内源(以中科大源为例)

    国内有很多Ubuntu的镜像源,包括阿里的.网易的,还有很多教育网的源,比如:清华源.中科大源. 我们这里以中科大的源为例讲解如何修改Ubuntu 18.04里面默认的源. 可以进入这个链接进行下载: ...

  4. ubuntu 添加右键打开方式,无法添加程序打开方式

    最近把工作环境迁移到ubuntu,装了WPS for Linux ,说实话确实是十分良心啊!运行效率奇高,绿色无广告,并且和windows版本无异,感觉就可以抛弃自带的libreoffice了. 但是 ...

  5. 【SQL.基础构建-第一节(1/4)】

    --        Tips:数据库与sql--    一.What's 数据库-- 1.数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.--   ...

  6. MSSQL 复制数据 并随机打乱写入

    select * into temp from XX order by newid() -- 复制表结构 truncate table XX -- 清空表 SET IDENTITY_INSERT XX ...

  7. Python3 hasattr()、getattr()、setattr()、delattr()函数

    hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(object,name) 参数: object--对象 name--字符串,属性名 返回值: 如果对象 ...

  8. Angular CLI 安装

    安装Angular 官网的教程,因为国内网络环境原因,访问不了服务器,导致安装失败. 1.先安装NodeJs 安装教程:http://blog.csdn.net/zengmingen/article/ ...

  9. [LeetCode] Next Closest Time 下一个最近时间点

    Given a time represented in the format "HH:MM", form the next closest time by reusing the ...

  10. [JLOI 2012]树

    Description 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度是0,它的儿子节点的深 ...