问题标签 [symlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
19 回答
192410 浏览

bash - 如何解析 shell 脚本中的符号链接

给定一个绝对或相对路径(在类 Unix 系统中),我想在解析任何中间符号链接后确定目标的完整路径。同时解决 ~username 符号的奖励积分。

如果目标是一个目录,则可以将 chdir() 放入该目录,然后调用 getcwd(),但我真的想从 shell 脚本中执行此操作,而不是编写 C 帮助程序。不幸的是,shell 倾向于尝试对用户隐藏符号链接的存在(这是 OS X 上的 bash):

我想要的是一个函数 resolve(),这样当从上面示例中的 tmp 目录执行时,resolve("foo") == "/Users/greg/tmp/bar"。

0 投票
8 回答
25140 浏览

python - 使用 Python 查找损坏的符号链接

如果我调用os.stat()一个 broken symlink,python 会抛出一个OSError异常。这对于找到它们很有用。但是,还有一些其他原因os.stat()可能会引发类似的异常。有没有更精确的方法symlinks在 Linux 下用 Python 检测损坏?

0 投票
1 回答
599 浏览

file - 无法删除,同名文件可能已存在

这开始让我烦恼了。我最近决定清除我的 FTP,并偶然发现了一个我忘记的旧 Wordpress 安装(哦,是的,我非常注重安全)。无论如何,由于某种原因删除目录失败了,所以我调查了导致阻塞的原因,并将其缩小到 wp-content 中的一个文件。

现在,当我尝试删除此文件时,我会收到两个错误。我在 Windowx Explorer ( FTP ) 和 Web 控制面板的文件管理器中尝试过。以下是一些错误截图:

Windows FTP 文件管理器

如您所见,我的文件管理器认为该文件是Symbolic Link。虽然让我感到害怕的是,我的 Web 服务器托管着一个明显的宗教神器,但我也对这种情况感到非常困惑。

  • 我试过重命名文件。
  • 我刷新了 FTP 视图。
  • 我已经尝试将文件移动到另一个目录(虽然有效,但删除没有成功)。
  • 我试过编辑文件然后删除。

而我不知所措。有没有一种特殊的方法来删除符号链接?我从来没有听说过他们,直到现在。

编辑

Oho Windows 你真是个魔术师。我决定通过命令提示符查看我的 FTP 并猜猜是什么?该文件不存在。是否ftp忽略我不知道但我即将放弃的符号链接:P

命令提示符视图

0 投票
14 回答
109857 浏览

git - 如何让 Git 遵循符号链接?

我最好是一个用副本替换符号链接的 shell 脚本,还是有另一种方法告诉 Git 遵循符号链接?

PS:我知道这不是很安全,但我只想在少数特定情况下这样做。

0 投票
9 回答
70072 浏览

linux - 有没有办法检查是否有指向目录的符号链接?

我的服务器上有一个文件夹,有许多符号链接指向该文件夹。我已经创建了一个新文件夹,我想更改所有这些符号链接以指向新文件夹。我曾考虑用指向新文件夹的符号链接替换原始文件夹,但似乎如果我继续这种做法,它可能会很快变得非常混乱。

我一直在做的是手动更改符号链接以指向新文件夹,但我可能错过了几个。

有没有办法检查是否有任何符号链接指向特定文件夹?

0 投票
2 回答
10357 浏览

python - 如何在python中获取/设置逻辑目录路径

在 python 中是否可以获取或设置一个逻辑目录(而不是一个绝对目录)。

例如,如果我有:

我有

链接到同一个目录。

使用 os.getcwd 和 os.chdir 将始终使用绝对路径

我发现解决这个问题的唯一方法是在另一个进程中启动“pwd”并读取输出。但是,这仅在您第一次调用 os.chdir 之前有效。

0 投票
24 回答
406859 浏览

unix - 符号链接和硬链接有什么区别?

最近我在一次工作面试中被问到这个问题。老实说,我知道符号链接的行为方式以及如何创建符号链接,但不了解硬链接的使用以及它与符号链接的区别。

0 投票
3 回答
3178 浏览

c++ - 如何在 Windows Vista 中创建符号链接?

我希望在 Windows Vista/2008 机器上从 Java 创建符号链接(软链接)。我很高兴我需要调用 JNI 来执行此操作。不过,我正在寻求实际 C 代码的帮助。创建链接的适当系统调用是什么?非常感谢有关此主题的一些好的文档的指针。

0 投票
11 回答
981439 浏览

linux - 删除目录的符号链接

我有一个指向重要目录的符号链接。我想摆脱那个符号链接,同时将目录保留在它后面。

我试着rm回来了rm: cannot remove 'foo'
我尝试rmdir并回来了rmdir: failed to remove 'foo': Directory not empty
,然后我进步了rm -frm -rf并且sudo rm -rf

然后我去找我的备份。

有没有办法摆脱符号链接而不用把婴儿和洗澡水一起扔掉?

0 投票
1 回答
9427 浏览

windows - 如何以编程方式访问 Windows 符号链接的目标路径?

Windows 6(Vista 和 Server 2008)支持正确的符号链接,可以通过CreateSymbolicLink函数创建。但是似乎没有相应的函数来询问符号链接以获取链接目标的路径。

我发现符号链接是重解析点的一种实现,所以重解析点函数可以用来获取目标路径。但是我需要使用重解析点的头文件似乎随Windows Driver Kit一起提供。用 VS2008 设置这个套件似乎不是一件容易的事。

是否有一个很好的简单函数我错过了获取链接的目标,或者我真的必须设置一个 Windows 驱动程序开发环境只是为了编写代码来访问这些信息?

编辑:Adam Mitz 提出了 GetFinalPathNameByHandle 的建议。此功能非常适用于本地符号链接,但似乎不适用于解析远程链接(通过 UNC 路径)。

编辑 2:应亚当的要求,这里有更多关于我尝试过的细节:

我最初沿着FSCTL_GET_REPARSE_POINT/DeviceIoControl路线走,但这会产生一个REPARSE_DATA_BUFFER结构。定义此结构的标头似乎仅存在于 Windows 驱动程序工具包中。

GetFinalPathNameByHandle()当链接存在于本地磁盘(C:\...\link等)上时工作正常。奇怪的是,我发现无论目标文件是否存在,我都可以使用CreateFileW()是否指定标志来获取链接的句柄 - 从而获取目标。FILE_FLAG_OPEN_REPARSE_POINT

CreateFileW()GetFinalPathNameByHandle()用于询问远程链接时(\\?\UNC\....),事情开始解开。如果FILE_FLAG_OPEN_REPARSE_POINT指定,则GetFinalPathNameByHandle()始终返回链接路径,而不是目标路径。如果FILE_FLAG_OPEN_REPARSE_POINT未指定,则返回目标路径,但前提是目标存在并且与链接位于同一台机器上。如果链接指向另一台机器,我会收到网络权限错误。如果链接指向本地 - 不存在 - 文件,我会收到文件未找到错误。