Linux系统下按指定格式为所有用户创建可执行文件求助
为每个Linux用户创建序号命名的可执行文件
没问题,我来帮你搞定这个需求!要给每个已存在的Linux用户创建按序号递增命名的可执行文件(格式如file_1_stud01、file_2_stud02),我们可以用一个bash脚本高效实现,下面是具体方案:
核心思路
- 先筛选出系统中所有需要处理的用户(默认排除系统用户,只处理普通用户)
- 用计数器维护序号,遍历每个用户并创建对应命名的可执行文件
完整脚本实现
#!/bin/bash # 初始化序号计数器,从1开始 user_count=1 # 遍历系统中的普通用户(UID >= 1000,适配大多数Linux发行版) for username in $(getent passwd | awk -F: '$3 >= 1000 {print $1}'); do # 按照规则拼接文件名 exec_file="file_${user_count}_${username}" # 创建空文件并赋予可执行权限 touch "$exec_file" chmod +x "$exec_file" # 可选:给可执行文件添加基础内容(让它真正能运行) cat > "$exec_file" << EOF #!/bin/bash echo "This is executable file for user: ${username}" echo "File name: \$0" EOF # 序号自增 ((user_count++)) done
关键部分解释
getent passwd:比直接读取/etc/passwd更可靠,能兼容LDAP等远程用户体系,获取系统所有用户信息awk -F: '$3 >= 1000 {print $1}':以冒号为分隔符,筛选出UID≥1000的普通用户(系统用户UID通常小于1000),并提取用户名touch "$exec_file":创建空文件;chmod +x "$exec_file":赋予文件可执行权限- 脚本里的
cat > ... << EOF部分是给可执行文件添加默认的bash脚本内容,你可以根据需求修改这部分
自定义调整建议
- 如果需要包含系统用户,去掉
awk里的$3 >= 1000条件,改为awk -F: '{print $1}' - 若要让文件归对应用户所有,在
chmod后添加chown ${username}:${username} "$exec_file" - 如果你的文件名前缀是
fis而不是file,把脚本里的file_${user_count}_${username}改成fis_${user_count}_${username}即可
内容的提问来源于stack exchange,提问作者Stroescu Marius Petrisor
相关产品推荐
相关产品推荐

