【问题标题】:What are the options with - (dash) on Linux terminal command mean?Linux终端命令上带有-(破折号)的选项是什么意思?
【发布时间】:2015-04-02 07:46:49
【问题描述】:

我知道存在很多选项,但在 Linux 命令中

chmod -R 777 user

-R 是什么意思,我知道如何使用其中的几个,但所有这些都是我从教程中学到的,因此如果我想学习这部分终端命令,我真的不知道要搜索什么。如果有人在他们还没有掌握终端命令时有任何资源可以帮助他们,我将不胜感激。

【问题讨论】:

  • 我投票结束这个问题,因为它应该被迁移到unix.stackexchange.com
  • 不管你的问题是什么,chmod 777 是错误且不安全的
  • 我正在使用 PHP 框架,其中日志和缓存需要完全访问权限
  • chmod 777 绝对不是这种情况。

标签: linux terminal command


【解决方案1】:

每个命令都有自己的一组参数、自己的一组选项(只是特殊的参数)和自己的概要。因此,诸如手册页(@michael-coleman 和 @tripleee 在各自的答案中已经提到)和 info pages 等内置*资源的重要性。

但是,有一些约定,很多(但不是全部!)命令共享。 (有些只是部分。):

  • 案例通常很重要。
  • 正确的参数(不被解释为选项)不以破折号 (-) 开头。它们通常用于告诉程序要操作哪些文件,许多交互式 shell 默认为此提供制表符补全。
    • 值得注意的例外:许多程序使用独立的单破折号 (-) 代替输入或输出文件来表示标准输入(将某些内容输入程序或以交互方式输入)或标准输出(在终端上打印输出或在某处管道输出)应改为使用。
  • 选项(用作标志(开/关)或键值对键的参数)有两种形式:
    • 短选项以单个破折号开头,然后仅以单个字母继续(例如您的示例中的-R)。不允许选项值的短选项(见下文)通常可以链接起来:-a -R -c 可以写成更短的 -aRc
    • 长选项以两个破折号开头,然后是一个或多个单词,由单个破折号连接(如chmod--recursivegit diff--color-words)。
  • 选项值表示键是选项的键值对的值。
    • 允许一个值的短选项通常必须跟在同一个参数中的那个值之后,即它们之间没有任何空格,例如ld -lc 其中-l 是键,c 是值。
    • 允许值的长选项通常必须紧跟该值作为下一个参数,即它们之间只有空格。许多命令使用的另一个约定是在选项和值 (ld --library=c) 之间使用等号 (=)。对于某些命令,两者都可以。
  • 子命令 指定命令具有多种功能时要执行的操作。对于某些命令,它们看起来像选项,对于其他命令(例如 git),它们看起来像正确的参数(git diffdiff 部分)。

其中一些约定甚至已被编纂,但有许多(而且相当重要的)命令don't follow它们。

虽然一般来说,不仅可用选项,而且“相同”选项的语义取决于特定命令,但少数选项具有一致同意的语义:-R 几乎总是表示--recursive,表示要处理的文件是一个目录,所有直接和间接(在子目录中)包含的文件和目录也应该被处理。当然,这并不会阻止某些命令使用 -r 来表示该含义并且不知道 -R,或者(可能更罕见或更晦涩)使用 -R 来表示完全不同的语义。

*在网络上互连的计算机普及之前称为“在线”。我猜这指的是终端(屏幕键盘组合)和实际计算机之间的“线路”(电缆),用于对比电子文档和“离线”(硬拷贝纸)文档。

【讨论】:

    【解决方案2】:

    每个 U*x 系统都带有手册页,而且它们也很容易在网络上找到。

    man chmod 记录了chmod 命令,包括它的选项; man man 记录 man 命令本身等。

    GNU 在一个名为 Info 的系统中发布文档,该系统不那么普遍,但功能更多(可点击的交叉引用链接、脚注等)。通常,您会找到一个简短的手册页,它会将您定向到 Info 以获取完整文档。

    在 Linux 系统上,man intro 是一个更温和的介绍,可帮助您开始使用该系统。 (没有intro 命令;手册页只是对 Linux 中的 Life 的介绍。)

    如果您所查阅的教程没有提到系统本身存在标准、高质量的在线文档,那么它们似乎不太令人信服。

    【讨论】:

      【解决方案3】:

      -R 标志与 chmod 一起使用时意味着:递归应用。 这是一个非常有用的命令。

      如果您想了解更多关于chmod 命令的信息,您可以通过键入man chmod 来访问手册页,例如:

      来自 chmod 手册页:

      -R, --recursive
      递归更改文件和目录

      例如,假设您有一个目录 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 标志仅有助于向您显示发生了哪些变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 1970-01-01
        • 1970-01-01
        • 2015-05-20
        • 1970-01-01
        • 2020-03-31
        • 2019-02-14
        相关资源
        最近更新 更多