我有一个已复制和编辑的脚本。如果可能的话,我需要解释其中的几行。
这些是行:
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
)
首先,结构<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
)
id
打印用户组和 ID
-u
选项“仅打印有效的用户 ID”。
-
>/dev/null 2>&1
将标准输入和标准错误重定向到 /dev/null
,这意味着它们不会打印到终端。
useradd
创建一个新用户
-
-g
为用户设置初始组
-
-s
设置用户登录 shell 的名称
-
-d
设置用户登录目录的名称
-
-m
表示如果不存在则创建用户的主目录。
-
-p
定义用户的加密密码。
为了将来引用,您可以通过执行 man <command>
在 linux 手册页中查找命令在命令行上。这些手册页会告诉您命令的作用,并解释其所有选项。
Bash 内置函数,如 read
都在一个手册页上,这不是最容易使用的东西。对于那些我发现用谷歌搜索更容易的人。通常http://ss64.com/将出现在结果中,其中包含来自 bash 内置手册页的信息,但通过命令分为不同的页面。我发现这更容易使用。