You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

符号链接无法关联隐藏文件:如何将文件夹内容链接至public_html?

如何将/site/web/的所有文件(含隐藏文件)链接到/public_html/

我来帮你搞定这个符号链接的问题!你遇到的情况其实是shell通配符的默认行为导致的,这里有两个靠谱的解决方案:

方案一:分两次链接(显式处理隐藏文件)

先链接普通文件,再专门匹配并链接隐藏文件(同时避开...这两个特殊目录):

# 链接所有普通文件
ln -s ~/site/web/* ~/public_html/
# 链接所有隐藏文件(排除.和..)
ln -s ~/site/web/.[!.]* ~/public_html/

这里的.[!.]*是关键:它会匹配所有以.开头、且第二个字符不是.的文件/目录,完美避开了当前目录(.)和父目录(..),不会创建多余的无效链接。

方案二:开启dotglob匹配隐藏文件(一次完成)

bash有个dotglob选项,开启后通配符*会包含所有以.开头的文件(同样自动排除...),这样你只需要一条命令就能搞定:

# 开启dotglob选项
shopt -s dotglob
# 一次性链接所有文件(含隐藏文件)
ln -s ~/site/web/* ~/public_html/
# 可选:关闭dotglob恢复默认行为(避免影响后续命令)
shopt -u dotglob

这个方法更简洁,适合不想敲两条命令的场景。

为什么你之前的命令不行?

  • ln -s ~/site/web/* ~/public_html/时,默认情况下bash的*通配符不会匹配以.开头的文件,所以隐藏文件(比如.htaccess)被漏掉了。
  • ln -s ~/site/web/ ~/public_html/时,你是把整个web目录链接到了public_html里,相当于在public_html下创建了一个指向web的符号链接,所以文件路径会变成public_html/web/xxx,不符合你要把文件直接放在public_html根目录的需求。

内容的提问来源于stack exchange,提问作者Dan

火山引擎 最新活动