如何为多个用户的主目录批量创建new_dir目录?
批量为多个用户主目录创建新目录的方法
完全不用逐个登录用户这么麻烦!用简单的Shell循环或者批量命令就能搞定,前提是你当前登录的用户拥有sudo权限(毕竟要操作其他用户的主目录嘛)。下面给你两种实用方法:
方法1:精准循环(推荐,适配所有主目录路径)
这个方法会先自动获取每个用户的实际主目录路径,避免硬编码路径出错(比如有些用户主目录可能不在/home下),还会检查主目录是否存在,非常稳妥:
for user in user{1..20}; do # 获取用户的主目录路径 homedir=$(getent passwd "$user" | cut -d: -f6) # 检查主目录是否存在 if [ -d "$homedir" ]; then # 创建new_dir,-p参数确保目录已存在时不报错 sudo mkdir -p "$homedir/new_dir" # 把目录权限改成对应用户所有,不然默认是root权限,用户没法正常使用 sudo chown "$user:$user" "$homedir/new_dir" echo "已为用户 $user 创建目录 $homedir/new_dir" else echo "⚠️ 警告:用户 $user 的主目录 $homedir 不存在,跳过该用户" fi done
为什么推荐这个?
getent passwd是查询系统用户信息的标准方式,比直接写/home/$user更可靠,能适配各种系统配置- 加了主目录存在检查,避免无效操作和报错
- 自动修正权限,确保用户能正常读写新目录
方法2:简化版循环(适用于主目录都在/home的场景)
如果你确定所有20个用户的主目录都在/home下,可以用更简洁的命令一次性完成:
# 批量创建目录 sudo mkdir -p /home/user{1..20}/new_dir # 批量修改权限 sudo chown -R user{1..20}:user{1..20} /home/user{1..20}/new_dir
注意点
这个方法虽然快,但如果某个用户的主目录不在/home,就会创建一个错误的空目录,所以只适合你明确知道所有用户主目录路径的情况。
关键前提
不管用哪种方法,你当前登录的用户必须有sudo权限——毕竟要操作其他用户的私有目录,没有管理员权限的话这些命令都会执行失败,这时候就得联系系统管理员帮忙啦。
内容的提问来源于stack exchange,提问作者Deeraj Theepshi
相关产品推荐
相关产品推荐

