丰色 发自 凹非寺 量子位 | 公众号 QbitAI
作为程序员,都知道命令行的好处。
奈何实在学不会、记不住。
今天,恰好有一个专门总结了各种常用和冷门命令行技巧的项目,号称《命令行的艺术》,登上了GitHub热榜。
一看,确实还有点来头。
光看标星数,就有足足112k。
而它的作者,主要由19位程序员组成,除此之外,还有数十人作出了贡献。
其内容主要都与Linux命令行有关(另有两章专门讲macOS和Windows系统),覆盖了基础、日常使用、文件及数据处理、系统调试、单行命令、“冷门但有用”等多方面的知识和技巧,用很简洁的方式 示例予以了说明。
最开始,该项目只是在Quora上传播,后来挪到GitHub上后便火得一发不可收拾。
由于实在太干货,还被翻译成了17种语言,其中就包括中文。
那么,对于我们那不太熟的命令行技术,再挽救一下?
Ps. 熟的也可以看哦,毕竟还有一些“奇技淫巧”。
一文掌握所有命令行
文中所用命令主要基于交互式Bash,一共分为8篇。
基础篇
这篇主要需要你掌握命令行基础知识,一共12小项,包括:
- 会用man bash命令查阅手册,会用apropos查找文档,熟悉一个文本编辑器(推荐Vim);
- 懂得> 、 <、|、>>等符号的区别,会使用通配符,会使用ssh进行远程命令行登录;
- 熟悉Bash中的任务管理工具、基本的文件管理工具、基本的网络工具;
- 懂正则表达式,会git,懂得查找和安装软件包。
日常使用篇
基础知识完成后,这里要教的都是一些非常日常的技巧,一共43条,比如:
- ctrl-r可以搜索命令行历史记录,而按下右箭头键可以不立即执行,进行修改;
- ctrl-x ctrl-e可再打开一个编辑器来输入当前正编辑的命令,这对于编写长命令很方便;
- alias命令可以创建常用命令的快捷形式(eg. alias ll=’ls -latr’ ,就创建了一个别名 为ll新命令);
- 当使用通配符匹配大量文件名时,常会遇到“Argument list too long”的错误信息,这种情况下换用find或xargs通常可以解决。
文件及数据处理篇
这篇有35条,比如:
- 在当前目录下通过文件名查找一个文件,可以使用find . -iname ‘something‘命令;
- 想要转换Markdown、HTML等不同格式的文件时,使用pandoc;
- 处理棘手的XML时,用上古流传下来的神器xmlstarlet;
- 更改文件时除了cut和paste,别忘了join。
系统调试篇
本篇也不少,共20条,比如:
- 进行web调试时用curl和curl -I命令,或者它们的好兄弟wget,或者更潮的httpie;
- 查看磁盘使用情况时用ncdu,它比普通du -sh *更节省时间;
- 如果删除了一个文件,但通过du发现没有释放预期的磁盘空间,请用如下命令检查文件是否被进程占用:lsof | grep deleted | grep “filename-of-my-big-file”……
单行命令篇
这部分指的就是我们所说的one-liners命令,一共7条,比如:
想计算文本文件第三列中所有数的和时,下面的命令可能会比同等作用的Python代码速度快三倍、代码量少三倍:awk ‘{ x = $3 } END { print x }’ myfile。
冷门但有用篇
这部分是也算全文最长的一篇了,一共73条,各位可各取所需~
macOS篇和Windows篇
最后,对于使用macOS和Windows系统的程序员来说,也有一些小技巧不容错过。
比如在macOS中,如果你想在终端中将Option键当作alt键使用,那么只需打开“偏好设置 -> 描述文件 -> 键盘”,并勾选“使用Option键作为Meta键”;
由于macOS基于BSD UNIX,许多命令(例如ps,ls,tail,awk,sed)都和Linux中有微妙的不同,需要注意,具体区别可以通过标题为 “BSD General Commands Manual” 的man页面查看。
而在Windows中,只需安装一个Cygwin,你就可以直接感受Unix shell的威力了——前6篇介绍的东西复用就ok。
所以在这篇,作者也提供了一些Cygwin命令的使用技巧。
更多详细内容直接戳下面的地址~
项目主页: https://github.com/jlevy/the-art-of-command-line
中文版: https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
— 完 —