当前位置: 首页 > 面试题库 >

自动移动目录

韩自怡
2023-03-14
问题内容

我在同一父目录中有两个目录。调用父目录 的基础* 和孩子目录 阿尔法喝彩 。我想用 bravo 代替 alpha
。最简单的方法是:
*

rm -rf alpha
mv bravo alpha

mv命令是原子的,但rm -rf不是。bash中有一种简单的方法可以用 bravo 原子替换 alpha 吗?如果没有,是否有复杂的方法?

附录:

顺便说一句,如果目录在短时间内不存在,这不是一个无法解决的问题。只有一个尝试访问alpha的地方,它会在执行任何关键操作之前检查alpha是否存在。如果不是,则会显示错误消息。但是,如果有一种方法可以做到这一点,那就太好了。:)也许有某种方法可以直接修改索引节点,或者其他方式。


问题答案:

如果使用符号链接,则可以执行以下操作:

假设alpha是指向目录alpha_1的符号链接,而您想将符号链接切换为指向alpha_2。这是切换之前的样子:

$ ls -l
lrwxrwxrwx alpha -> alpha_1
drwxr-xr-x alpha_1
drwxr-xr-x alpha_2

要使alpha引用alpha_2,请使用ln -nsf:

$ ln -nsf alpha_2 alpha
$ ls -l
lrwxrwxrwx alpha -> alpha_2
drwxr-xr-x alpha_1
drwxr-xr-x alpha_2

现在您可以删除旧目录:

$ rm -rf alpha_1

请注意,这实际上不是完全原子的操作,但是由于“ ln”命令会同时取消链接然后立即重新创建符号链接,因此确实会很快发生。您可以使用strace验证此行为:

$ strace ln -nsf alpha_2 alpha
...
symlink("alpha_2", "alpha")             = -1 EEXIST (File exists)
unlink("alpha")                         = 0
symlink("alpha_2", "alpha")             = 0
...

您可以根据需要重复此过程:例如,当您有新版本alpha_3时:

$ ln -nsf alpha_3 alpha
$ rm -rf alpha_2


 类似资料:
  • The migration CLI automatically migrates your v1 website to a v2 website. info Manual work is still required after using the migration CLI, as we can't automate a full migration The migration CLI migr

  • 问题内容: 我刚刚创建了我的第一个jQuery移动网站。 我想让那些使用手机查看“完整站点”的人自动转移到“移动站点”。但是,如果愿意,也可以单击链接来查看完整站点。 我不知道从哪里开始。我可以使用一些JavaScript吗? 问题答案: if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)

  • 想象一下没有自动化构建工具的场景 大部分的软件开发者都会面临下面的情形: 让IDE完成所有的工作. 用IDE来编码,导航到源代码、实现新特性、编译代码、重构代码、运行单元测试,一旦代码写完了,就按下编译按钮。一旦IDE提示没有编译错误测试通过,然后就把代码放入版本控制系统中以便与其他人分享。IDE是非常强大的工具,但是每个人都要安装一套标准的版本来执行上面介绍的任务,当你需要使用一个只有新版IDE

  • 所以我手头有一个非常奇怪的问题,数小时的搜索没有提供任何信息。 我有一个包含uitextfield的uiview。现在,该视图最初位于可见屏幕之外,坐标为x=-500,y=-500。 然而,在响应按钮按下此视图动画和移动到屏幕的中心。 现在,每当我点击作为此视图子视图的uitextfield时。此视图会在屏幕外移动回其原始坐标。 我已经疯狂地检查了我的代码,一旦它进入,就没有任何东西会再次将视图移

  • 问题内容: 我一直在玩s。我想要实现的是一种执行以下操作的方法: 我试图能够将列表中的项目向上移动,除非它已经位于顶部,在这种情况下它将保持不变。例如,如果项目3被移动,则列表将为: 从目前的了解来看,我想要一些类似的东西: 我苦苦挣扎的部分是“向上移动”部分。任何有关如何实现的技巧或代码示例都将受到赞赏。 问题答案: 我在寻找答案时遇到了这个老问题,我以为我会发布找到的解决方案,以防其他人经过这

  • 问题内容: 在Mobile Safari中,设置延迟时间后,我无法专注于文本字段。我附上了一些展示此问题的示例代码。如果在单击按钮时触发.focus(),则一切正常。如果您将焦点放在回调(如setTimeout函数)上,则仅在移动浏览器中失败。在所有其他浏览器中,存在延迟,然后出现焦点。 令人困惑的是,即使在移动浏览器中,也会触发“ focusin”事件。这个(和SO中类似的注释)使我认为这是一个