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

标签 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 )

最佳答案

首先,结构<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 手册页中查找命令在命令行上。这些手册页会告诉您命令的作用,并解释其所有选项。

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

关于linux - "read -p"在 linux shell 脚本中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041363/

相关文章:

linux - Expect 命令在 Linux 中再次要求输入密码

java - 从java程序运行时mysql命令打印出帮助菜单

linux - "source in"如何使用shell脚本设置环境变量

c - 读取 proc 文件时权限被拒绝错误

linux - 如何将 Sublime Text 3 正确配置为 git 提交消息的默认文本编辑器?

c - windows linux bash 上的 GCC

linux - 更改Linux中的符号链接(symbolic link)

shell - sed中p和P有什么区别?

linux - 如何让 2 个变量具有 2 个不同的序列 - Bash Linux

linux - perl - 用另一个字符替换每第 n 次(和多次)出现的字符