每一个当我使用grep
并且find
我正在绊倒时,我应该输入命令的顺序:何时应该编写路径,何时应该编写标志,是否需要双引号,等等。
我在谷歌上搜索过它的次数比我引以为傲的次数还要多。
为了grep
# Searching all files in the directory (recursively)
grep -rni "string" *
# Disecting it
command flags parameter path
-------------------------------
grep -rni "string" *
为了find
# Searching for a file by name
find . -type f -name "file-name*"
# Disecting it
command path flag parameter flag parameter
-------------------------------------------
find . -type f -name "file-name*"
有没有一种好的方法可以记住路径何时出现以及标志何时出现等(而不是每次都简单地谷歌搜索)?
解决方案尝试 1:手册页
我喜欢这些手册页,但也许我使用它们的方式不正确。它们很详细(这很好),但如果我想获得一个快速示例,了解如何使用给定的命令,那么我会在手册页上遇到困难。
如果我写man find
,我可以在顶部附近看到这一点:
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
解决方案尝试 2:保存我经常使用的片段示例
我还可以简单地保存我经常使用的片段,这样我就可以快速加载一个工作示例。
但其他人在这里做什么呢?这对其他人来说直观吗?
答案1
grep 并发现我正在绊倒,我应该按哪个顺序输入命令:何时应该编写路径,何时应该编写标志,是否需要双引号,等等。
命令的一般规则是:首先是选项,然后是仅出现一次的“固定”参数,然后是可以出现多次的“可变”参数,例如文件名。
grep
有一模式并可以搜索许多文件。所以它是“选项、模式、文件”。这里没有什么惊喜。
find
有点奇怪。唯一的“真实”参数是描述从哪里开始递归搜索的路径。接下来是一种迷你语言,描述通过不同选项要匹配的内容,这些选项可以通过并置(或更多选项)进行组合,然后是其他选项描述的操作。所以它是“目录、匹配选项、操作选项”。
记住这一点,您不需要查找它。至少我就是这样记住它们的(而且我仍然偶尔会man find
阅读一些我忘记的匹配选项)。