首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个‘`ln -s`’,检查断开的符号链接

创建一个‘`ln -s`’,检查断开的符号链接
EN

Unix & Linux用户
提问于 2019-04-27 01:59:34
回答 1查看 155关注 0票数 0

我正在尝试编写一个函数ln() (如果称它为ln不是个好主意,那么它可能就像myln()之类的一样好,但这并不重要),所以,

  • 如果短选项-s不存在,它只执行command ln所做的操作。
  • 如果短选项-s确实存在,它将执行command ln所做的事情,除非要创建的符号链接(S)包含断裂的链接。在这种情况下,它会将警告打印到stderr,而不会创建链接(或者创建链接,然后立即删除)。

由于命令ln以非常灵活的各种形式使用它的选项,所以我不知道如何编写这样的函数来涵盖所有的可能性。我确实知道如何编写它,以便像ln -s [absolute path 1] [absolute path 2]这样简单地使用。

如果该函数能够涵盖lnGNU coreutils的最新版本中的用法(在提出问题时最新版本为8.31),这是最好的,但是一个只涉及POSIX中的用法的函数也可以。

Side注释:我已经在https://codereview.stackexchange.com/a/215226/155325中编写了一个“故障保护”rm,我想做一些类似的事情来创建一个“故障保护”ln。我自己也在用它,我知道后果。我不会把它分发给不熟悉Linux的人,并说:“嘿,从现在开始,你应该使用这个rm,你可以忘记rm /*的警告。”

EN

回答 1

Unix & Linux用户

发布于 2019-04-27 07:09:12

不确定这是否是您想要的,但是在您的函数中,您可以在创建符号链接之前使用namei命令检查目标文件。

代码语言:javascript
复制
$ touch file1
$ ln -s file1 file2
$ ln -s file2 file3
$ namei file3 
f: file3
 l file3 -> file2
   l file2 -> file1
     - file1
$ echo $?
0
$ rm file1 # break first symlink
$ ls -l
$ namei file3
f: file3
 l file3 -> file2
   l file2 -> file1
       file1 - No such file or directory
$ echo $?
1
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/515810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档