linux - Bash/xargs:如何批量分配用户权限?
问题描述
我创建了一个新用户。我当前的用户显然具有以下权利:
$ groups
max adm cdrom sudo dip plugdev lpadmin lxd sambashare
max
当前用户帐户的名称在哪里。
我尝试了参数扩展,但输出${groups}
为空,所以我只是通过管道将组传递给xargs
$ groups | xargs -I _ sudo usermod -aG _ new_user_name
我收到没有文件夹的错误消息,max adm cdrom sudo dip plugdev lpadmin lxd sambashare
因为显然输出groups
没有被空格分割。
但正如我所说${groups}
的是空的,所以我无法通过管道传输到 xargs。
第二次尝试:
my_arr=(adm cdrom sudo dip plugdev lpadmin lxd sambashare)
$ echo ${my_arr[@]} | xargs -I _ usermod -aG _ new_user_name
即使我没有将参数扩展放在双引号中,数组的参数也不会被拆分。
xargs 仍将管道参数视为一个大字符串adm cdrom sudo dip plugdev lpadmin lxd sambashare
什么是正确的解决方案?
解决方案
关键问题是您需要告诉xargs
一次阅读一个论点。
不太重要的是,您可能不想max
在输入中包含usermod
.
groups |
# Trim away first token (max)
sed 's/^[^ ]* //' |
# Pass to xargs with -n 1
xargs -n 1 -I _ sudo usermod -aG _ new_user_name
在 Linux 上,您可能需要添加--delimiter ' '
到xargs
命令行。
推荐阅读
- java - 在 Intellij 中删除和重新导入项目
- powershell - Mount-WindowsImage 问题
- python-2.7 - 在 JModelica 2.4 用户指南中运行 fmu 示例时出错:找不到文件
- python - PyQt5:属性值更改时通知
- jquery - 在 1 个 div 标签中加载 1 个随机图像(可能是 10 个图像)
- python - x tan(x) - b 的零点
- soundcloud - Soundcloud 触发器
- database - vb.net as I query Access database and display it in listview?
- python - What is the meaning of hash if we still need to check every item?
- python-3.x - Python 指数函数