了解一些 Ubuntu shell 命令

了解一些 Ubuntu shell 命令

我需要了解提供给我的脚本是如何工作的。有一些 if 条件、命令和语法我不知道它们的作用,我尝试用 Google 搜索它们,但没有成功。

  1. 那么做什么呢[ -z String ]

    例如脚本中出现的这[ -z "$(which ssh)" ]
    也是$(which ssh)一个字符串还是一个变量?

  2. 是什么~/.filename意思?我知道它./filename有时用于执行文件,并且是./指向目录本身的指针,但是它是什么~/.

  3. 做什么[ -e filename ]

  4. 做什么[ ! -d ~/.ssh ]

答案1

您可以通过在终端中[输入来了解更多信息。这是一个在之后使用的测试构造。因此,man [if

   -z STRING
          the length of STRING is zero
   -e FILE
          FILE exists
   ! EXPRESSION
          EXPRESSION is false
   -d FILE
          FILE exists and is a directory

1)[ -z "$(which ssh)" ]表示测试是否"$(which ssh)"为零长度字符串。$(...)表示...首先执行该部分。如果您which ssh在终端中运行,您将看到它将生成shh可执行文件的路径(如果存在)。因此,如果存在,则字符串将不为零长度,并且测试将失败。

2)~是你的主目录的快捷方式,通常位于/home/your_user_name[ -e filename ]表示测试此文件是否存在,如果存在则返回 true。

3)[ ! -d ~/.ssh ]表示测试是否~/.ssh(可能/home/your_user_name/.ssh)存在并且是一个目录,如果它是不是,则返回 true。


==编辑==

您应该尝试解决 man 问题,因为这将真正提高您的 bash 知识。如果man [不行,请尝试man test。(test是 的同义词[...])如果不行,这里有一个在线版本

   -w FILE
          FILE exists and write permission is granted

我觉得你可能搞错了。应该是

[ -w "$1" ]

不是

[ "$1" -w ]

相关内容