命令行效率提升技巧:如何在终端中获取帮助
对于初学者来说,命令行往往令人望而生畏。面对闪烁的光标和冷冰冰的黑屏,绝望感油然而生。
如果你遇到困难,可以尝试以下几种方法:
1. 如何找到特定任务的程序
很多时候,你想执行某个特定任务,却记不起执行该任务的程序名称。许多 shell 工具的名称都是晦涩难懂的双字母,一开始很难记住。
别担心,有一个命令apropos可以帮助你!
例如,你想显示一个带有行号的文件。你知道其中有一个程序,但忘记了它的名字。你可以直接输入命令apropos -a line number来获取程序列表。我们使用-a一个标志,这样就只会返回描述中包含“ AND”apropos这个词的程序。linenumber
在我的电脑上,它输出如下内容:
apropos -a line number
# Output:
addr2line (1) - convert addresses into file names and line numbers.
nl (1) - number lines of files
x86_64-linux-gnu-addr2line (1) - convert addresses into file names and line numbers.
有三个程序与编号线有关。让我们来看看这三个程序各自的功能。
2. 了解程序的功能
我们来看第一个候选程序addr2line。在命令后输入 `--help`--help是了解程序功能的一种方法。命令行程序通常会在调用时打印简短的帮助信息--help。有些程序也允许在调用时执行相同的操作-h。
addr2line --help
# Output:
Usage: addr2line [option(s)] [addr(s)]
Convert addresses into line number/file name pairs.
If no addresses are specified on the command line, they will be read from stdin
....
好的。这个程序确实做了一些事情addresses,但这不是我们想要的。接下来我们看看列表中的下一个:nl
nl --help
# Output:
Usage: nl [OPTION]... [FILE]...
Write each FILE to standard output, with line numbers added.
...
看来我们找到了程序。我们来试一试。这是我们的文件foo.txt
cat foo.txt
# Output:
one
two
three
four
five
nl foo.txt
# Output:
1 one
2 two
3 three
4 four
5 five
它运行正常,但为什么空行没有编号?
3. 获取有关项目的详细信息
这些--help信息非常简洁。如果我们想详细了解程序的功能,需要查阅手册或man相关页面。这些页面详细记录了程序的功能、所有选项和参数。输入man nl并查看相关信息……
哇!终端屏幕上显示了很多信息!您可以使用方向键上下导航,按回车键q退出。
我们可以在输出结果中看到以下内容:
.
.
-b, --body-numbering=STYLE
use STYLE for numbering body lines
.
.
STYLE is one of:
a number all lines
t number only nonempty lines
n number no lines
这样nl -b a foo.txt就能给foo.txt中的所有行编号,这正是我们想要的。
nl -b a foo.txt
# Output:
1 one
2 two
3 three
4
5 four
6 five
这样似乎解决了我们的问题。
还有一个info命令可以提供更详细的使用信息。你可以使用以下命令进行尝试info nl。
4. 获取程序使用示例
但如果我们只想快速运行命令,而不想阅读一大段文字呢?
原来,你可以安装一个名为 的实用工具tldr。如果你使用node或 ,python可以分别使用npm install -g tldr或进行安装pip install tldr。tldr页面列出了其他安装选项。安装完成后,只需tldr nl在终端中尝试运行即可。
tldr nl
# Output:
nl
A utility for numbering lines, either from a file, or from standard input.
- Number non-blank lines in a file:
nl file
....
- Number all lines including blank lines:
nl -b a file
瞧!我们可以看到一个简单易懂的例子。
tldr这是一个社区驱动的项目!大家可以为各种命令贡献示例。如果您喜欢的命令还没有对应的示例,您可以提交一个pull request。
概要
总而言之,我们可以:
- 找出能够执行特定任务的可能程序
apropos - 获取有关
$program使用$program --help或man $program - 获取示例
tldr $program
PS:如果我们找不到完成任务所需的程序怎么办?
在第一部分中,我们假设能够找到完成任务所需的程序。但很多时候,我们可能并没有安装这些程序。在这种情况下,我们可以搜索发行版的软件包管理器,例如apt-getUbuntu 或yumCentOS dnf/Fedora。
在 Ubuntu 中,我们可以使用以下命令搜索存储库中所有可用的软件包apt-cache search $KEYWORD。