需要为我想要的任何用户创建一个循环符号链接。!
我可以使用此命令
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
答案 0 :(得分: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
解析shell中的/etc/passwd
。 IFS=:
设置内部字段分隔符,read
用于将读取的行拆分为字段。第一个字段分配给shell变量user
,所有剩余字段都分配给rest
(并忽略)。
注意:对于使用过一次的脚本,这可能没问题,但您应该注意几个问题。
您可能不希望为所有用户进行符号链接,仅适用于常规用户。这个脚本通过假设用户的主目录是/ home / $ user来确保这一点,这通常会排除root和其他特殊目的用户。但是,这很脆弱,例如在某些系统上,主目录的名称可以不同。
如果在用户的主目录中找不到任何文件,则不会创建符号链接。
不调整符号链接的权限。生成的符号链接具有脚本运行的权限。