- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我被问到的一个面试问题。
假设您有一个大型脚本文件,用于编译和清理目的。还假设您在该文件的同一目录中有一个名为 folder
的文件夹。此外,在此文件的末尾,您还有以下代码行:
clean:
rm -r -f folder &
当您尝试清理项目时,假设它工作正常。但是,如果我们删除 & 符号并这样写:
clean:
rm -r -f folder
然后在您尝试清理后,您将收到以下错误:
rm: cannot remove 'folder': Directory not empty
但是如果您再尝试清理一次,文件夹将根据需要进行清理。
我需要找到所有可能的原因,为什么会发生这种情况。我唯一能想到的是,如果我们在运行这个脚本的几个线程之间进行一些竞争。然后有人问我——“如果只有一个线程运行代码怎么办?”
我没有看到这个问题怎么会发生在一个线程上——但似乎我弄错了,我也不知道为什么。 还有哪些情况会导致上述错误?
编辑:在采访中,我还可以假设以下内容:
(1).在脚本文件的其他地方没有&符号,但是我写的rm
代码行。
(2).执行 rm 时,文件夹
中未创建新文件
最佳答案
我很高兴这是一个虚构的问题。在 makefile 中以这种方式使用 &
完全是伪造的;希望现实世界中没有人这样做。
无论如何,在典型的面试场景中,您需要猜测面试官在他们的脚本中给出的答案。问题很可能被错误描述,至少在你的问题中是这样(如果在采访中也出现了错误的场景,这也很正常)。如果错误消息出现在 &
出现并且您运行 make clean all
时,这个问题在理论上是有意义的。然后,新构建会创建防止删除目录的文件。这就是您不应在 makefile 配方中使用 &
的原因。
关于linux - rm 最后有 & 符号和没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321825/
我正在学习 git,但我对暂存和提交文件的不同方式感到困惑。为了解决这个问题,我使用了目录的比喻:工作目录、暂存目录、提交目录。 如果我rm 我的工作目录中的一个文件,它只会仅 从我的工作目录中删除它
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
在 Makefile 中,我读到: -rm -rf(而不是 rm -rf)。 Makefile 中行开头的第一个“-”是什么意思? 最佳答案 这意味着make本身将忽略来自rm的任何错误代码。 在 m
我正在使用此命令尝试删除一个非常大的文件夹中的所有 Thumbs.db 文件。我认为 -f 应该在不要求确认的情况下强制删除,但我仍然被提示在每个文件上输入“y”或“n”。 find "megapac
我想用 GIT 删除整个目录...每次我不断收到相同的错误并且不明白为什么会这样。 我想删除“blue_white”文件夹... ├── css │ ├── design.css │ └──
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
使用 /bin/rm abc.txt 有什么区别以及有时您必须这样做的时候 alias rm然后用 rm abc.txt 执行 最佳答案 /bin/rm将始终引用二进制 rm命令在您的系统上。如果你只
大多数文章,我都读过。他们建议使用 rm(list=ls())但我不知道如果我喜欢使用 rm() 有什么区别 我可以用rm()而不是 rm(list=ls())如果我想清除所有变量? 请给我一些建议。
问题 Bash 中的 rm -d 和 rm -R 命令有什么区别? 我应该使用哪一个? 详情 根据 rm 命令的手册页: rm -d 尝试删除目录以及其他类型的 文件。 rm -R 尝试删除以每个文件
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
标题是描述。 我只是想知道 rm -r 和 rm -R 之间有什么区别。 Linux man 描述似乎完全相同(还有一个,--recursive),但很多人使用 -r 和 -R 好像它们不一样。 所以
我使用 rm、Finder 等从 Git 存储库中删除了一堆文件和目录。 我正在寻找一个 Git 命令,它将这些记录到标记为删除的索引中,就好像我对它们调用了 git rm 一样。 我知道 git a
在 SVN 上,直接从文件系统中删除某些内容(而不是使用 svn)会带来很多麻烦。 我在使用 git 时没有发现这是一个问题,但我注意到 git 有它自己的 rm 实现(git rm). rm 和 g
我想备份我的 gitlab 容器。有两种选择: docker exec -ti my.gitlab.container sh -c "/opt/gitlab/bin/gitlab-rake gitla
我正在关注 this Wikipedia example查找和删除文件。 [jalal@galapagos-04] (5)$ touch 'not important_file' [jalal@gal
我有一个 shell 脚本在 cygwin 环境中的 windows 环境中运行。该脚本有一个清除功能,可以根据特定条件删除系统中的特定文件夹。 我准备好要删除的所有文件夹的列表,然后使用以下命令:
当我们使用 docker build 命令构建 docker 镜像时,我们有两个选项 --force-rm=true 和 --rm=true移除中间容器。这两个选项有什么区别,分别在什么场景下使用。
我在删除Docker容器时遇到问题-当我使用前一个命令时,它不起作用(Docker报告了容器ID,但没有删除它)。后者起作用了。据我所知,Docker语法是相同的: C:\Users\user>doc
我尝试计算数据 x 的每列的总和。但我总是遇到这个错误 "Error in colSums(x, na.rm = T) : invalid 'na.rm' argument" 为什么 na.rm 参数
有人知道如何删除 R 中除一个对象之外的所有内容吗?通常,要删除我编码的所有内容: rm(list=ls()) 所以我试过: rm(c(list=ls()-my_object)) 但它没有用。 最佳答
我是一名优秀的程序员,十分优秀!