什么"读-p"在linux shell脚本中做什么?

时间:2015-10-09 14:54:32

标签: linux shell

我有一个我复制和编辑过的脚本。如果可能的话,我需要解释几行。

这些是:

     read -p "please enter the username you wish to create: " username
     if id -u $username >/dev/null 2>&1; then

read -p做什么? id -u做了什么? >/dev/null 2&1;做了什么? 然后在脚本中进一步说明了这一行:

     sudo useradd -g $group -s $bash -d $homedir -m $username -p $password

再次请有人解释这一行中的所有减号吗? (-g-s-d-m-p

1 个答案:

答案 0 :(得分:8)

首先,结构<command> -<option>表示您希望使用与<command>对应的选项执行<option>。命令后-表示以下字母是一个选项。大多数命令都有几个可以使用的选项。选项通常使用单个字母或由-分隔的单个词来定义。

旁注:对于多个单词而非单个字母的选项,通常会使用两个减号--而不是一个,表示它是“长”命名为“选项。

因此,使用read -p示例,这意味着您希望使用read选项执行p,该选项代表提示

现在,有时一个选项需要一个参数。在您的示例中,useradd的选项包含参数。参数通常定义为<command> -<option> [argument]。因此,在useradd示例中,$group是选项g的参数。

现在命令本身:

read是一个内置的bash(不是POSIX shell命令),它从标准输入读取。

  • -p选项将其作为提示读取,这意味着它在尝试读取输入之前不会添加尾随换行符。

if检查测试命令的返回状态(在本例中为id -u $username >/dev/null 2>&1

  • 如果返回状态为0,则执行then部分

id打印用户组和ID

  • -u选项“仅打印有效用户ID”。
  • >/dev/null 2>&1将标准输入和标准错误重定向到/dev/null,这意味着它们不会打印到终端。

useradd创建新用户

  • -g设置用户的初始组
  • -s设置用户登录shell的名称
  • -d设置用户登录目录的名称
  • -m表示创建用户的主目录(如果它不存在)。
  • -p定义用户的加密密码。

为了将来参考,您可以通过在命令行上执行man <command>来查找linux手册页中的命令。这些手册页告诉您命令的作用,并解释其所有选项。

read这样的Bash内置函数都在单个手册页上,这不是最容易使用的。对于那些我发现谷歌搜索他们更容易。通常http://ss64.com/将出现在结果中,其中包含来自bash内置手册页面的信息,但是按命令分隔成不同的页面。我发现这更容易使用。