162,729
stars
+17
14,937
forks
2,765
watchers
611
prs
264
issues
0
releases
0
discussions
README
🌍 Čeština ∙ Deutsch ∙ Ελληνικά ∙ English ∙ Español ∙ Français ∙ Indonesia ∙ Italiano ∙ 日本語 ∙ 한국어 ∙ polski ∙ Português ∙ Română ∙ Русский ∙ Slovenščina ∙ Українська ∙ 简体中文 ∙ 繁體中文 命令行的艺术 - 前言 - 基础 - 日常使用 - 文件及数据处理 - 系统调试 - 单行脚本 - 冷门但有用 - 仅限 OS X 系统 - 仅限 Windows 系统 - 更多资源 - 免责声明 !curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '\w+' | tr -d '' | cowsay -W50 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 这篇文章是许多作者和译者共同的成果。 这里的部分内容 首次 出现 于 Quora, 但已经迁移到了 GitHub,并由众多高手做出了许多改进。 如果你在本文中发现了错误或者存在可以改善的地方,请贡献你的一份力量。 前言 涵盖范围: - 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到覆盖面广(涉及所有重要的内容),具体(给出具体的最常用的例子),以及简洁(避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。 - 本文主要为 Linux 所写,但在仅限 OS X 系统章节和仅限 Windows 系统章节中也包含有对应操作系统的内容。除去这两个章节外,其它的内容大部分均可在其他类 Unix 系统或 OS X,甚至 Cygwin 中得到应用。 - 本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 - 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。 注意事项: - 为了能在一页内展示尽量多的东西,一些具体的信息可以在引用的页面中找到。我们相信机智的你知道如何使用 Google 或者其他搜索引擎来查阅到更多的详细信息。文中部分命令需要您使用 apt-get,yum,dnf,pacman, pip 或 brew(以及其它合适的包管理器)来安装依赖的程序。 - 遇到问题的话,请尝试使用 Explainshell 去获取相关命令、参数、管道等内容的解释。 基础 - 学习 Bash 的基础知识。具体地,在命令行中输入 man bash 并至少全文浏览一遍; 它理解起来很简单并且不冗长。其他的 shell 可能很好用,但 Bash 的功能已经足够强大并且到几乎总是可用的( 如果你只学习 zsh,fish 或其他的 shell 的话,在你自己的设备上会显得很方便,但过度依赖这些功能会给您带来不便,例如当你需要在服务器上工作时)。 - 熟悉至少一个基于文本的编辑器。通常而言 Vim (vi) 会是你最好的选择,毕竟在终端中编辑文本时 Vim 是最好用的工具(甚至大部分情况下 Vim 要比 Emacs、大型 IDE 或是炫酷的编辑器更好用)。 - 学会如何使用 man 命令去阅读文档。学会使用 apropos 去查找文档。知道有些命令并不对应可执行文件,而是在 Bash 内置好的,此时可以使用 help 和 help -d 命令获取帮助信息。你可以用 type 命令 来判断这个命令到底是可执行文件、shell 内置命令还是别名。 - 学会使用 和 会覆盖了输出文件而 是在文件末添加。了解标准输出 stdout 和标准错误 stderr。 - 学会使用通配符 (或许再算上 ? 和 [...]) 和引用以及引用中 ' 和 " 的区别(后文中有一些具体的例子)。 - 熟悉 Bash 中的任务管理工具:&,ctrl-z,ctrl-c,jobs,fg,bg,kill 等。 - 学会使用 ssh 进行远程命令行登录,最好知道如何使用 ssh-agent,ssh-add 等命令来实现基础的无密码认证登录。 - 学会基本的文件管理工具:ls 和 ls -l (了解 ls -l 中每一列代表的意义),less,head,tail 和 tail -f (甚至 less +F),ln 和 ln -s (了解硬链接与软链接的区别),chown,chmod,du (硬盘使用情况概述:du -hs )。 关于文件系统的管理,学习 df,mount,fdisk,mkfs,lsblk。知道 inode 是什么(与 ls -i 和 df -i 等命令相关)。 - 学习基本的网络管理工具:ip 或 ifconfig,dig。 - 学习并使用一种版本控制管理系统,例如 git。 - 熟悉正则表达式,学会使用 grep/egrep,它们的参数中 -i,-o,-v,-A,-B 和 -C 这些是很常用并值得认真学习的。 - 学会使用 apt-get,yum,dnf 或 pacman (具体使用哪个取决于你使用的 Linux 发行版)来查找和安装软件包。并确保你的环境中有 pip 来安装基于 Python 的命令行工具 (接下来提到的部分程序使用 pip 来安装会很方便)。 日常使用 - 在 Bash 中,可以通过按 Tab 键实现自动补全参数,使用 ctrl-r 搜索命令行历史记录(按下按键之后,输入关键字便可以搜索,重复按下 ctrl-r 会向后查找匹配项,按下 Enter 键会执行当前匹配的命令,而按下右方向键会将匹配项放入当前行中,不会直接执行,以便做出修改)。 - 在 Bash 中,可以按下 ctrl-w 删除你键入的最后一个单词,ctrl-u 可以删除行内光标所在位置之前的内容,alt-b 和 alt-f 可以以单词为单位移动光标,ctrl-a 可以将光标移至行首,ctrl-e 可以将光标移至行尾,ctrl-k 可以删除光标至行尾的所有内容,ctrl-l 可以清屏。键入 man readline 可以查看 Bash 中的默认快捷键。内容有很多,例如 alt-. 循环地移向前一个参数,而 alt- 可以展开通配符。 - 你喜欢的话,可以执行 set -o vi 来使用 vi 风格的快捷键,而执行 set -o emacs 可以把它改回来。 - 为了便于编辑长命令,在设置你的默认编辑器后(例如 export EDITOR=vim),ctrl-x ctrl-e 会打开一个编辑器来编辑当前输入的命令。在 vi 风格下快捷键则是 escape-v。
Top issues
#167Lines are too freaking long!13 comments · 2015-07-09#165What about windows users?7 comments · 2015-07-08#124Remove Vi/Vim bias.7 comments · 2015-06-25#509A few more one-liners6 comments · 2017-04-13#769POSIX is mentioned nowhere5 comments · 2022-04-25#147tail -f -F as a must.5 comments · 2015-06-30#922Filipino Translation4 comments · 2025-07-11#919Student4 comments · 2025-06-19
相关报道 (3)
News & coverage (9)
Hacker NewsThe Art of Command Line (2015)▲ 597 · 169 comments · 2019-05-23Hacker NewsThe Art of Command Line▲ 466 · 133 comments · 2015-06-15Hacker NewsAsk HN: Where would you find beautiful shell scripts?▲ 6 · 2 comments · 2018-05-07Hacker NewsThe Art of Command Line: Master the command line, in one page▲ 4 · 0 comments · 2016-09-29KDnuggetsData Cleaning at the Command Line for Beginner Data Scientists2025-11-20KDnuggetsMake Sense of a 10K+ Line GitHub Repos Without Reading the Code2025-06-24HackerNoonHow to Resolve Bitwarden's 'Some Logins Missing' Issue2024-03-14KDnuggetsMaster The Art Of Command Line With This GitHub Repository2024-02-16KDnuggets5 More Command Line Tools for Data Science2023-03-13