Bash 捕获;rm:fts“读取:无此类文件或目录”;出错并继续
我把我的Macbook弄砸了。我将一些Time Machine备份从外部驱动器移到了垃圾桶中,很快意识到这是一个可怕的错误。我不能把它们放回去,也不能删除它们。到目前为止,我一直在运行Bash 捕获;rm:fts“读取:无此类文件或目录”;出错并继续,bash,macos,unix,rm,Bash,Macos,Unix,Rm,我把我的Macbook弄砸了。我将一些Time Machine备份从外部驱动器移到了垃圾桶中,很快意识到这是一个可怕的错误。我不能把它们放回去,也不能删除它们。到目前为止,我一直在运行rm,使用一个名为bypass的助手函数,它允许我绕过苹果删除备份的保护 不管怎样,我有命令 sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass rm -rfv /Volumes/*/.Trashes 为简洁起见,可将其
rm
,使用一个名为bypass
的助手函数,它允许我绕过苹果删除备份的保护
不管怎样,我有命令
sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass rm -rfv /Volumes/*/.Trashes
为简洁起见,可将其称为
sudo bypass rm -rfv /Volumes/*/.Trashes
这会被rm:fts\u read:No这样的文件或目录
随机中断。我认为fts_read本质上是一个UNIX内核函数,它进入文件空间,在非常详细的递归rm
调用中作为文件读取。所以我想捕捉fts\u read
并重新启动我的sudo-bypass rm-rfv/Volumes/*/.Trashes
。我对bash不太了解,但这里有一些我想法的伪代码:
try:
sudo bypass rm -rfv /Volumes/*/.Trashes
except 'rm: fts_read: No such file or directory':
sudo bypass rm -rfv /Volumes/*/.Trashes
基本上,现在每次出现错误时,我都会手动重新启动该命令,但这个过程需要几十个小时,因此如果它能够自行重新启动就好了。一个可能的选项是while循环,它需要前一个命令失败?例如:
counter=0
cd "not a real place" #get the initial error code
while [[ $? -ne 0 ]]; do
echo 'words'
(( counter++ ))
(( counter > 10 ))
done
这将一直持续到((计数器>10))
返回0,即计算结果为真。您应该能够使用命令执行类似的操作:
sudo bypass rm -rfv /Volumes/*/.Trashes
while [[ $? -ne 0 ]]; do
sudo bypass rm -rfv /Volumes/*/.Trashes
done
我怀疑这是一个好的解决方案,但这是一个解决方案。您最终是如何解决的?我不确定,尽管可能尝试用python之类的东西包装您的命令?这样,您就可以利用try/catch,仍然可以进行命令行
exec
调用@ebaynaud