标签: ln

太多级别的符号链接

我创建了这个文件结构:

test/src
test/firefox
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时:

ln -s test/src test/firefox
Run Code Online (Sandbox Code Playgroud)

我希望test/firefox/src创建一个指向的符号链接test/src,但是我收到了这个错误:

-bash: cd: src: Too many levels of symbolic links
Run Code Online (Sandbox Code Playgroud)
  • 我究竟做错了什么?
  • 您不能创建一个指向存储在该文件夹的同级文件夹中的文件夹的符号链接吗?
  • 这有什么意义?

linux filesystems ln

151
推荐指数
4
解决办法
37万
查看次数

创建相对于当前目录的符号链接

我正在尝试在我的主目录中创建一个符号链接,该链接指向我的外部 HDD 上的一个目录。

当我像这样指定它时它工作正常:

cd ~
ln -s /run/media/name/exhdd/Data/ Data
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时,它会创建一个错误的链接:

cd /run/media/name/exhdd
ln -s Data/ ~/Data
Run Code Online (Sandbox Code Playgroud)

这会创建一个我无法cd进入的链接。

当我尝试时,bash 抱怨:

bash: cd: Data: Too many levels of symbolic links
Run Code Online (Sandbox Code Playgroud)

ls设置为显示彩色输出时,我家中的数据符号链接也显示为红色。

为什么会这样?如何以这种方式创建链接?(我想在另一个目录中的我的工作目录中创建一个目录的符号链接。)


编辑:根据这个StackOverflow 答案,如果第二个参数(在我的例子中是 ~/Data)已经存在并且是一个目录,ln将创建一个指向该目录目标的符号链接。

但是,我遇到了同样的问题:

ln -s Data/ ~/
Run Code Online (Sandbox Code Playgroud)

directory symlink ln

114
推荐指数
3
解决办法
48万
查看次数

如何更改符号链接的所有权?

我在创建软链接时遇到了一些问题。以下是原文件。

$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11  2014 /etc/init.d/jboss
Run Code Online (Sandbox Code Playgroud)

链接创建失败,文件所有者的权限问题:

ln -sv  jboss /etc/init.d/jboss1
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied

$ id
uid=689(askar) gid=500(admin) groups=500(admin)
Run Code Online (Sandbox Code Playgroud)

因此,我创建了具有 sudo 权限的链接:

$ sudo ln -sv  jboss /etc/init.d/jboss1
`/etc/init.d/jboss1' -> `jboss'

$ ls -l /etc/init.d/jboss1
  lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Run Code Online (Sandbox Code Playgroud)

接下来我尝试将软链接的所有权更改为原始用户。

$ sudo chown askar.admin /etc/init.d/jboss1

$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Run Code Online (Sandbox Code Playgroud)

但是软链接的权限没有改变。 …

linux rhel permissions symlink ln

98
推荐指数
2
解决办法
13万
查看次数

记住 ln 参数顺序的技巧?

我已经使用ln符号链接写了很多年了,但我仍然把参数的顺序弄错了。

这通常让我写:

ln -s a b
Run Code Online (Sandbox Code Playgroud)

然后看着输出提醒自己。

我总是想像a -> b我读它时的样子,但实际上恰恰相反b -> a。这感觉违反直觉,所以我发现我总是在怀疑自己。

有没有人有任何提示可以帮助我记住正确的顺序?

symlink ln

72
推荐指数
5
解决办法
5526
查看次数

为什么重启、关机和关机符号链接到 systemctl?

在Arch Linux的,如果我做ls -l/sbin,我可以看到rebootshutdown而且poweroff都是符号连接/usr/bin/systemctl。但是发出reboot,shutdownsystemctl命令显然并不都具有相同的行为。

ls -l不是向我展示有关符号链接的完整信息?例如,我如何知道真正的符号链接reboot是什么?

ls arch-linux symlink ln reboot

31
推荐指数
1
解决办法
1万
查看次数

为什么 ln -s 接受单个参数

> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user    3 Jul 29 14:00 foo -> foo
Run Code Online (Sandbox Code Playgroud)

这是一个错误ln还是有一个将文件符号链接到自身的用例?

这是与coreutils 8.21-1ubuntu5.1.

coreutils symlink ln

30
推荐指数
2
解决办法
2173
查看次数

ln -s 带有相对于 pwd 的路径

我正在尝试创建一堆符号链接,但我不明白为什么这是有效的

ln -s /Users/niels/something/foo ~/bin/foo_link
Run Code Online (Sandbox Code Playgroud)

而这

cd /Users/niels/something
ln -s foo ~/bin/foo_link
Run Code Online (Sandbox Code Playgroud)

不是。

我相信它与foo_link链接到 foo in/Users/niels/bin而不是/Users/niels/something

所以问题是,如何创建一个指向绝对路径的符号链接,而不实际输入它?

作为参考,我使用的是 Mac OS X 10.9 和 Zsh。

shell bash symlink ln

29
推荐指数
2
解决办法
3万
查看次数

可执行符号链接导致“找不到命令”

我创建了一个符号链接(昨天),如下所示:

sudo ln -s bin/python /usr/bin/prj-python
Run Code Online (Sandbox Code Playgroud)

当我运行时:

prj-python file.py
Run Code Online (Sandbox Code Playgroud)

我得到:

prj-python: command not found
Run Code Online (Sandbox Code Playgroud)

当我再次尝试创建链接时,我得到:

ln: 创建符号链接`/usr/bin/prj-python': 文件存在

为什么会这样?我的$PATH是:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

symlink ln

28
推荐指数
2
解决办法
6万
查看次数

为什么在 Linux 中使用“ln -sf”?

我有2个问题。第一个用于-sf选项,第二个用于更具体的-f选项用法。

通过谷歌搜索,我找到了 command ln、 option-s-f.

(从http://linux.about.com/od/commands/l/blcmdl1_ln.htm复制)

-s, --symbolic : make symbolic links instead of hard links
-f, --force : remove existing destination files
Run Code Online (Sandbox Code Playgroud)

我分别理解这些选项。但是,如何同时使用 this-s-foptions 呢?-s用于创建链接文件,-f用于删除链接文件。为什么要使用这个合并选项?

为了更多地了解ln命令,我做了一些例子。

$ touch foo     # create sample file
$ ln -s foo bar # make link to file
$ vim bar       # check how link file works: foo file opened
$ ln -f …
Run Code Online (Sandbox Code Playgroud)

shell ln

28
推荐指数
1
解决办法
3万
查看次数

移动文件并用符号链接替换它

有人可以给我一个命令:

  • 将文件移至新目录
  • 并在旧位置留下一个符号链接到新位置

shell-script files ln mv

19
推荐指数
1
解决办法
1万
查看次数

标签 统计

ln ×10

symlink ×7

linux ×2

shell ×2

arch-linux ×1

bash ×1

coreutils ×1

directory ×1

files ×1

filesystems ×1

ls ×1

mv ×1

permissions ×1

reboot ×1

rhel ×1

shell-script ×1