Linux 终端命令中带有 -(破折号)的选项是什么意思?
What are the options with - (dash) on Linux terminal command mean?
我知道存在很多选项,但在 Linux 命令中,例如
chmod -R 777 user
-R
是什么意思,我知道如何使用它们中的几个,但所有这些都是我从教程中学到的,因此如果我想学习这一部分,我真的不知道要搜索什么终端命令。如果有人在他们对终端命令还很陌生的时候有任何帮助他们的资源,我将不胜感激。
与 chmod 一起使用时的 -R
标志意味着:递归应用。
这是一个非常有用的命令。
如果您想了解有关 chmod
命令的更多信息,您可以通过键入 man chmod
访问手册页,例如:
来自 chmod 手册页:
-R, --recursive
change files and directories recursively
例如,假设您有一个目录 mozilla
- 其中包含子目录和文件:
/home/user/mozilla/
├── extensions
│ └── profiles.ini
└── firefox
└── Crash Reports
├── events
├── InstallTime20140410211200
├── InstallTime20150112203352
└── InstallTime20150125222008
你运行命令
chmod -R -v 777 /home/user/mozilla/
-R
标志会将 所有 文件和 mozilla
文件夹中包含的子文件夹的权限更改为 777
文件权限。
- 添加
-v
标志只是为了向您显示发生了什么变化。
每个 U*x 系统都带有 手册页,,它们也很容易在网上找到。
man chmod
documents the chmod
command, including its options; man man
记录 man
命令本身等
GNU 在称为 Info 的系统中提供文档,该系统不太普遍但功能更强大(交叉引用、脚注等的可点击链接)。通常,您会找到一个简短的手册页,它将您引导至 Info 以获得完整的文档。
在 Linux 系统上,man intro
是一个更温和的介绍,可以帮助您开始使用该系统。 (没有 intro
命令;手册页只是对 Linux 中 Life 的介绍。)
如果您查阅的教程没有提到系统本身存在标准的、高质量的在线文档,那么它们似乎不太令人信服。
每个命令都有自己的参数集、选项集(只是特殊参数)和概要。因此内置*资源的重要性,如联机帮助页(@michael-coleman 和@tripleee 在他们各自的答案中已经提到)和 info pages.
但是,有一些约定,很多(但不是全部!)命令共享。 (有些只是部分。):
- 大小写 通常很重要。
- 正确的参数(那些不被解释为选项的)不以破折号开头(
-
)。它们通常用于告诉程序要操作哪些文件,为此许多交互式 shell 默认提供制表符补全。
- 值得注意的例外:许多程序使用独立的单破折号 (
-
) 而不是输入或输出文件来表示标准输入(将某些内容通过管道输入程序或以交互方式输入)或标准输出(在终端上打印输出或通过管道将其输出到某处)应该改用。
- Options(用作标志(on/off)或用作键值对的键的参数)有两种形式:
- 短选项 以单个破折号开头,然后仅以单个字母继续(如示例中的
-R
)。不允许选项值的短选项(见下文)通常可以链接:-a -R -c
可以写得更短,如 -aRc
.
- 长选项 以两个破折号开头,然后是一个或几个单词,由单个破折号连接,(如
chmod
的 --recursive
或 git diff
的 --color-words
).
- 选项值表示键为选项的键值对的值。
- 允许一个值的短选项通常必须在同一参数中后跟该值,即它们之间没有任何 space,例如
ld -lc
其中 -l
是键,c
是值。
- 允许一个值的长选项通常必须紧跟该值作为紧接的下一个参数,即它们之间只有白色space。许多命令使用的另一个约定是在选项和值 (
ld --library=c
) 之间使用等号 (=
)。对于某些命令,两者都可以。
- 子命令 指定当命令具有多种功能时要执行的操作。对于某些命令,它们看起来像选项,对于其他命令(例如
git
),它们看起来像适当的参数(git diff
的 diff
部分)。
其中一些约定甚至已经编纂成文,但有许多(而且相当重要的)命令 don't follow 它们。
虽然一般来说,不仅可用选项,而且 'same' 选项的语义都取决于特定的命令,一些选项具有商定的语义:-R
almost always表示--recursive
,表示要处理的文件是一个目录,所有直接和间接(在子目录中)包含的文件和目录也应该被处理。当然,这不会阻止某些命令使用 -r
表示该含义而不知道 -R
,或者(可能更罕见或更晦涩)使用 -R
表示完全不同的语义。
*在网络上相互连接的计算机普及之前称为 'on-line'。我想这指的是终端(屏幕键盘组合)和实际计算机之间的 'lines'(电缆),并用于与 'off-line'(纸质)文档中的电子对比。
我知道存在很多选项,但在 Linux 命令中,例如
chmod -R 777 user
-R
是什么意思,我知道如何使用它们中的几个,但所有这些都是我从教程中学到的,因此如果我想学习这一部分,我真的不知道要搜索什么终端命令。如果有人在他们对终端命令还很陌生的时候有任何帮助他们的资源,我将不胜感激。
与 chmod 一起使用时的 -R
标志意味着:递归应用。
这是一个非常有用的命令。
如果您想了解有关 chmod
命令的更多信息,您可以通过键入 man chmod
访问手册页,例如:
来自 chmod 手册页:
-R, --recursive
change files and directories recursively
例如,假设您有一个目录 mozilla
- 其中包含子目录和文件:
/home/user/mozilla/
├── extensions
│ └── profiles.ini
└── firefox
└── Crash Reports
├── events
├── InstallTime20140410211200
├── InstallTime20150112203352
└── InstallTime20150125222008
你运行命令
chmod -R -v 777 /home/user/mozilla/
-R
标志会将 所有 文件和 mozilla
文件夹中包含的子文件夹的权限更改为 777
文件权限。
- 添加
-v
标志只是为了向您显示发生了什么变化。
每个 U*x 系统都带有 手册页,,它们也很容易在网上找到。
man chmod
documents the chmod
command, including its options; man man
记录 man
命令本身等
GNU 在称为 Info 的系统中提供文档,该系统不太普遍但功能更强大(交叉引用、脚注等的可点击链接)。通常,您会找到一个简短的手册页,它将您引导至 Info 以获得完整的文档。
在 Linux 系统上,man intro
是一个更温和的介绍,可以帮助您开始使用该系统。 (没有 intro
命令;手册页只是对 Linux 中 Life 的介绍。)
如果您查阅的教程没有提到系统本身存在标准的、高质量的在线文档,那么它们似乎不太令人信服。
每个命令都有自己的参数集、选项集(只是特殊参数)和概要。因此内置*资源的重要性,如联机帮助页(@michael-coleman 和@tripleee 在他们各自的答案中已经提到)和 info pages.
但是,有一些约定,很多(但不是全部!)命令共享。 (有些只是部分。):
- 大小写 通常很重要。
- 正确的参数(那些不被解释为选项的)不以破折号开头(
-
)。它们通常用于告诉程序要操作哪些文件,为此许多交互式 shell 默认提供制表符补全。- 值得注意的例外:许多程序使用独立的单破折号 (
-
) 而不是输入或输出文件来表示标准输入(将某些内容通过管道输入程序或以交互方式输入)或标准输出(在终端上打印输出或通过管道将其输出到某处)应该改用。
- 值得注意的例外:许多程序使用独立的单破折号 (
- Options(用作标志(on/off)或用作键值对的键的参数)有两种形式:
- 短选项 以单个破折号开头,然后仅以单个字母继续(如示例中的
-R
)。不允许选项值的短选项(见下文)通常可以链接:-a -R -c
可以写得更短,如-aRc
. - 长选项 以两个破折号开头,然后是一个或几个单词,由单个破折号连接,(如
chmod
的--recursive
或git diff
的--color-words
).
- 短选项 以单个破折号开头,然后仅以单个字母继续(如示例中的
- 选项值表示键为选项的键值对的值。
- 允许一个值的短选项通常必须在同一参数中后跟该值,即它们之间没有任何 space,例如
ld -lc
其中-l
是键,c
是值。 - 允许一个值的长选项通常必须紧跟该值作为紧接的下一个参数,即它们之间只有白色space。许多命令使用的另一个约定是在选项和值 (
ld --library=c
) 之间使用等号 (=
)。对于某些命令,两者都可以。
- 允许一个值的短选项通常必须在同一参数中后跟该值,即它们之间没有任何 space,例如
- 子命令 指定当命令具有多种功能时要执行的操作。对于某些命令,它们看起来像选项,对于其他命令(例如
git
),它们看起来像适当的参数(git diff
的diff
部分)。
其中一些约定甚至已经编纂成文,但有许多(而且相当重要的)命令 don't follow 它们。
虽然一般来说,不仅可用选项,而且 'same' 选项的语义都取决于特定的命令,一些选项具有商定的语义:-R
almost always表示--recursive
,表示要处理的文件是一个目录,所有直接和间接(在子目录中)包含的文件和目录也应该被处理。当然,这不会阻止某些命令使用 -r
表示该含义而不知道 -R
,或者(可能更罕见或更晦涩)使用 -R
表示完全不同的语义。
*在网络上相互连接的计算机普及之前称为 'on-line'。我想这指的是终端(屏幕键盘组合)和实际计算机之间的 'lines'(电缆),并用于与 'off-line'(纸质)文档中的电子对比。