Questions tagged «symlink»

一种特殊类型的文件,它引用不存在或现有的文件或目录。符号链接的内容由任意字符串组成,该字符串是符号链接指向的文件的路径。在路径名解析期间遇到符号链接时,文件存储的字符串用于修改路径名解析。

1
查找在符号链接路径上不起作用?
如果我运行此命令,则find $HOME/MySymlinkedPath -name "run*.sh"什么也不会发生,也不会出错(“ MySymlinkedPath”是到另一个硬盘驱动器的符号链接路径,而不是我的$ HOME路径)。 这些也会失败: find ~/MySymlinkedPath -name "run*.sh" find /home/MyUserName/MySymlinkedPath -name "run*.sh" 只是为了确保,这个不存在的路径失败了(当然),find $HOME/MySymlinkedPathDUMMYTEST -name "run*.sh"所以找到了该路径(因为不会发生错误),但是find没有对该路径执行搜索,我现在很无能为力。 仅当我cd $HOME/MySymlinkedPath先删除路径引用后才起作用,find -name "run*.sh"但这对我的脚本不利。 附加信息: 此命令照常运行ls $HOME/MySymlinkedPath/run*.sh,如果我去那里cd $HOME/MySymlinkedPath运行该命令ls ..,结果将不是我所期望的-符号链接路径所在的路径列表-返回实际路径的列表另一个媒体/硬盘! pwd -P /media/MediaIdentifier/RealPath pwd /home/MyUser/MySymlinkedPath 重新思考:和或我的系统 是否有问题?还是可以预期的,根本不是问题??我在Ubuntu 12.10上。它在我测试过的所有终端上均失败,因此似乎没有终端“问题”。findls
15 find  symlink  path 

2
symlink的目标相对于目标的父目录是否相对?为什么?
我有以下文件结构: build/ client/ –> index.js 当我尝试在构建目录中创建一个名为“ client”的符号链接时,该链接指向cwd中的客户端目录,如下所示 // Fails $ pwd /home/user/ $ ln -s client build/client $ stat build/client/index.js stat: build/client/index.js: stat: Too many levels of symbolic links 我收到上面显示的ELOOP错误。当我将目标路径更改为相对于目标路径时,一切都很好: // Works $ pwd /home/user/ $ ln -s ../client build/client $ stat build/client/index.js stat: <outputs file stats> 这是预期的行为,请解释原因...
14 symlink 


2
为什么硬链接似乎占据与原始链接相同的空间?
多亏了在这里和此页面的一些常见问题解答,我现在了解了链接。我看到硬链接用不同的名称引用相同的inode,而副本是不同的“节点,具有不同的名称。加上软链接具有与它们的inode相同的原始文件名和路径,因此如果移动文件,则链接会中断。 因此,我用一些文件(下面的“ saluton_mondo.cpp”)测试了我学到的东西,制作了一个硬链接和一个软链接以及一个副本。 jmcf125@VMUbuntu:~$ ls -lh soft hard copy s*.cpp -rw-rw-r-- 1 jmcf125 jmcf125 205 Aŭg 27 16:10 copy -rw-rw-r-- 2 jmcf125 jmcf125 205 Aŭg 25 13:34 hard -rw-rw-r-- 2 jmcf125 jmcf125 205 Aŭg 25 13:34 saluton_mondo.cpp lrwxrwxrwx 1 jmcf125 jmcf125 17 Aŭg 27 16:09 soft -> saluton_mondo.cpp 我发现尴尬的是,硬链接的大小与原始大小相同,并且在逻辑上与副本大小相同。如果硬链接和原始链接共享同一个索引节点(即具有数据且仅在文件名上有所不同),那么硬链接不应该仅使用其名称的空间而不是205个字节吗?还是ls -lh返回的原始文件的大小?但是,我怎么知道文件名占用什么空间呢?这里说硬链接没有大小。他们的文件名和原始文件名一起保存吗?硬链接的文件名存储在哪里?


6
如何获得“ realpath”以找到我的符号链接?
我使用MacOSX bash作为外壳。我有这样创建的符号链接: ln -s /usr/bin/python python2 我有一个使用python2的软件包,我想在我当前的工作目录中创建一个/usr/bin/python实际上是python2 的符号链接。当我python2从命令行执行a时,出现此错误: python2: realpath couldn't resolve "/usr/bin/python2" 但是像这样调用它./python2可以正确解析路径。我PATH有.。实际上,为了进行测试,我将其修改为仅包含.在其中。 我该如何解决?谢谢! 语境 以下建议的解决方案对我不起作用。我试图提炼出尽可能集中和简短的问题,以使人们不会淹没在文字的海洋中,但是显然我需要提供更多的背景知识。 我正在尝试从git克隆的软件包上进行开发。原始软件包,git-multimail是/是在Linux的某些变体上开发的(我猜是Ubuntu)。我一直在尝试对其进行修改,以使其能够在MacOSX上使用它及其测试套件,而只需进行尽可能少的修改。这就是一些建议的解决方案不理想的原因: 以root python2身份在/ usr / bin /中创建一个符号链接。我正在寻找不需要此解决方案的解决方案。在一开始,这是一个显而易见的选择,但是我想要一个尽可能少地修改主机系统的解决方案。这就是为什么我想在当前工作目录中创建一个临时符号链接,将CWD(即.)添加到我的路径,然后在完成时销毁它(即符号链接)。 创建包装器脚本以使用现有python调用python脚本。问题在于,大多数测试套件都将实际的script_files用作可执行文件,具体取决于shebang来找到正确的执行环境。这将意味着大量编辑测试套件。在这种情况下(有关测试框架的摘要,请参见下文),我将不得不为每个.py文件添加一个包装器;进一步,用户/开发人员将必须了解使用软件包的不同规则,具体取决于它们所在的系统(即,在MacOSX上,请确保在不通过包装或显式调用python文件的情况下,不要使用python文件/usr/bin/python file.py)。 #! /bin/sh D=$(cd $(dirname "$0") && pwd) MULTIMAIL="$D/../git-multimail/git_multimail.py" POST_RECEIVE="$D/../git-multimail/post-receive" TESTREPO=$("$D/create-test-repo") HOME="$D" XDG_CONFIG_HOME="$D" GIT_CONFIG_NOSYSTEM=1 export HOME XDG_CONFIG_HOME GIT_CONFIG_NOSYSTEM cd $TESTREPO test_email() { REFNAME="$1" OLDREV="$2" NEWREV="$3" …
13 python  symlink 

3
如何使用启动参数建立到/ usr / bin / vim的符号链接?
make&make install从源代码获取vim 之后,我在中找到了许多vim的符号链接/usr/local/bin,例如evim,rvim,view ... 该vim(1)手册页说:“rvim”等同于“VIM -Z”等。 现在我想知道:我可以和ln(1)自己建立这样的符号链接吗?如果可以,怎么做?
13 vim  symlink  ln 

5
如何将符号链接作为符号链接从一台计算机复制到另一台计算机?
假设我有两个相同的系统。在第一个系统上,我创建了一个符号链接。在第二个上,我想通过sftp复制该符号链接,并且符号链接应该工作相同(即,如果将符号链接链接到/etc/,将其复制过来,则将仅复制符号链接,并且仅复制符号链接(而不是链接文件)) 关于如何执行此操作/如果可以执行此操作的任何想法?我只是想复制的符号链接,没有别的; 只是参考。

2
tar命令-跳过符号链接
我用tar命令, tar -cvf protTests.tar protTests/* 到tar该文件夹内的所有文件,protTests。但这包括文件夹内的符号链接,这不是所需的链接。 是否有一个命令行选项,将忽略所有符号链接?
13 files  symlink  tar  wildcards 


2
创建到当前目录的绝对符号链接
我现在位于路径很长的目录下。为了将来更快地访问它,我想创建一个链接。 我试过了 ln -s . ~/mylink ~/mylink实际上链接到~。那么我可以扩展~为绝对路径名,然后给它ln吗?
12 shell  symlink  cwd 

1
chmod不会更改符号链接权限
我可以访问远程Linux机器,每次创建符号链接时,默认情况下都会创建该链接,并具有以下权限: lrwxrwxrwx 如果我尝试例如使用以下方式更改符号链接的权限(即不是其指向的路径): chmod g-w my_symbolic_link chmod可以正常运行(不会显示错误消息),但是当我再次检查权限时,它们仍然相同(lrwxrwxrwx)。 我正在等待机器管理员的来信,但我想知道这是否是正常现象,或者是否特定于包装盒。

3
有没有办法使perl -i不破坏符号链接?
我的一个朋友指出,如果您这样做: perl -pi.bak -e 's/foo/bar/' somefile 当“ somefile”实际上是一个符号链接时,perl会按照文档所说的去做: 它通过重命名输入文件,使用原始名称打开输出文件并选择该输出文件作为print()语句的默认值来做到这一点。该扩展名(如果提供)用于修改旧文件的名称以制作备份副本[...] 这将导致指向未更改的实际文件的新符号链接“ somefile.bak”,以及具有更改的新的已更改常规文件“ somefile”。 在许多情况下,遵循符号链接将是理想的行为(即使它使.bak文件的正确位置不明确)。除了测试包装器中的符号链接并适当处理大小写以外,还有其他简单的方法吗? (sed做同样的事情,这是值得的。)

3
进入通过链接链接的目录
当我cd链接时,当前路径的前缀是链接的路径,而不是链接链接到的目录的路径。例如 ~/dirlinks/maths$ ls -l logic lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic ~/dirlinks/maths$ cd logic ~/dirlinks/maths/logic$ pwd /home/tim/dirlinks/maths/logic ~/dirlinks/maths/logic$ cd .. ~/dirlinks/maths$ 我想将当前路径更改为链接目录的路径,以便我也可以使用链接目录的父目录。除了ls找到链接目录然后cd进入目录的链接之外,还有哪些更简单的方法可以实现该目的?例如,cd进入链接后,如何将当前路径更改为链接目录的路径?

5
为什么要在Linux中更改符号链接的所有者?
在Linux中,可以更改符号链接(symlink)的所有者或组所有者。我想知道为什么有人要这样做,因为在通过符号链接访问文件时不使用符号链接的权限。 我只能想象一个有用的用例:允许用户删除具有粘性位的目录中的符号链接。 您是否知道其他情况下,更改符号链接的所有者或组所有者可能有用吗?
12 symlink 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.