原标题:Linux命令行之冷知识

关键字:linux 命令行 冷知识 文件内容

Linux系统随着其优异的设计及开源、免费的特性,受到越来越多人的青睐。目前,从服务器、PC机、手机终端到各种机顶盒及嵌入式设备都有大量Linux的身影。Linux一大特性就是其丰富的终端命令,而从Windows迁移到Linux的过程中,很多人都面临命令行不熟悉的问题。为减少大家的学习成本,本文梳理了Linux中可能被遗漏,但是非常提高工作效率的命令。

帮助文档

man命令用来查看各命令的帮助文档如:查看man自身的文档

linux根据命令的用途,将文档分为9种section,有些时候多个section中都含有某个命令,如printf就同时存在于1(可执行命令)和3(函数库API)中,此时想查看3中printf的帮助文档,可以直接将section号加入到命令中,如:

如果不知道确认的命令名称,man也支持关键字查看,如:

将在多有文档中查看有printf关键字的命令,当然也可以限定在某个section中查找,如:

Shell中的here document

在shell命令中,如果一条命令参数中存在回车/换行,后续参数会被拆分为新的命令执行。而here document可以被当作同`>`或`>>`类似的重定向符,格式如下:

command << limit_string here-documentlimit_string

其中,limit_string中的所有输入都被当作参数传递给了command,详细请`mam bash`查看。如果大家同时使用多个系统互相copy,或者别的工具已经生成了部分结果,需要将这些内容作为参数执行,那here document将是非常好的选择,避免大家手动将换行符逐一去掉。

下面举个简单的例子:

403a1d6e27f739692bdf6670077a8a16.png

当最后EOF出现的时候, git命令才真正结束。其等价的git命令如下:

xargs命令

管道是linux命令的灵魂之一,而xargs可以说是给管道插上了翅膀,让linux的命令组合变得异常灵活。Xargs通过表述输入用来执行其它命令,linux有两个类似的命令,

对于一个简单形式的xargs命令可以用`(反引号)来代替,如 `other command`

如使用vi逐个打开当前目录下的文本文件:

其等价形式如:

对于某些命令,可以使用其内部的-exec参数,例如find

sed与’s’查找命令

sed作为linux中的文本流编辑命令,有很多使用方法和参数。

其中在sed、vi等多个命令中,都会使用到’s’查找命令,就是其中之一,

格式如下:s/REGEXP/REPLACEMENT/FLAGS,/’可以被其它任何字符代替,只要不予‘s’中的参数重复就可以了

0016a45be0244f307a00979c40164234.png

如下用sed命定去除特定文件中的某些字符:

8947b485ecffa6dbbf7e62e42098ee2e.png

sed还有一个特性, 就是对当前的操作的内容,有两个缓冲区,一个叫pattern space,一个叫hold space,而且这两个缓冲区sed都提供了丰富的参数以进行控制,

例如,xxx.config的配置文件:

4afdbc08dd8c7ff86b8e9a02eeb0d1a6.png

输出所有’category:bule’的name值,可以使用如下命令:

94f7bc0cdf6361ffce33e7d724d71030.png

其中sed的命令参数如下:

223f75ba60ed4a67b46b9cba5cd21f3b.png

最终,终端回显信息如下:

本文列举的例子到这里就先告以段落了,比较简单,只希望起到抛砖引玉的目的,有兴趣的同学可以再查看相关的帮助文档。

最后向大家推荐一个比较好的命令使用网站,大家可以互相学习借鉴下:

http://www.commandlinefu.com/commands/browse

责任编辑:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐