我有一个我复制和编辑过的脚本。如果可能的话,我需要解释几行。
这些是:
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
)
答案 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
)
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内置手册页面的信息,但是按命令分隔成不同的页面。我发现这更容易使用。