-1

需要对每个用户我想要的任何文件进行循环符号链接..!

我可以使用这个命令

awk -F: ' { p="/home/"$1; printf "%s\n%s\n%s\n",p"/public_html/example.php",p"/www/example.html",p"/tmp/example.txt" }' /etc/passwd | sort

但是如何对所有用户进行循环并输出循环,例如?????????:

example.php > /home/user1/public_html/example.php
example.html > /home/user2/www/example.php
example.php > /home/user2/tmp/example.txt
example.php > /home/user3/public_html/example.php
example.php > /home/user3/www/example.html
example.php > /home/user3/tmp/example.txt
[...snip...]

我的意思是方式..重复工作或测试上面所选文件的路径并使用命令为每个路径中的所有权限文件创建符号链接

ln -s

我尝试执行命令

#/bin/bash
mkdir folder
a=awk -F: ' { p="/home/"$1; printf "%s\n%s\n%s\n",p"/public_html/example.php",p"/www/example.html",p"/tmp/example.txt" }' /etc/passwd | sort
ln -s "$a" > folder
done

但它失败了

我等你的回答,,,谢谢stackoverflow.com

4

1 回答 1

0

尝试这样的事情:

IFS=:
while read user rest; do
    for file in public_html/example.php www/example.php; do
        if [ -e "/home/$user/$file" ]; then
             mkdir -p "/home/$user/folder"
             ln -s "/home/$user/$file" "/home/$user/folder/example.php"
             break
        fi
    done
done </etc/passwd

/etc/passwd这在 shell 中 解析。IFS=:设置内部字段分隔符,用于read将读取的行拆分为字段。第一个字段分配给 shell 变量user,所有剩余的字段都分配给rest(并被忽略)。

注意:这对于只使用一次的脚本来说可能没问题,但是您应该注意几个问题。

  1. 您可能不想为所有用户进行符号链接,而只是为普通用户。这个脚本通过假设用户的主目录是 /home/$user 来确保这一点,这通常不包括 root 和其他特殊用途的用户。然而,这是脆弱的,例如,在某些系统上主目录的名称可能不同。

  2. 如果在用户的主目录中找不到任何文件,则不会创建符号链接。

  3. 符号链接的权限未调整。生成的符号链接具有运行脚本的权限。

于 2015-08-21T15:08:45.413 回答