rm请求确认时如何自动取消删除?

时间:2016-04-11 14:12:11

标签: macos bash rm

rm -f但是自动n不是自动y吗? 删除可以删除的内容rm未被询问并阻止其他人被删除。与具有只读标志的文件一样,由其他程序打开的文件。 我试过yes n | rm somefile无效。

这是OS X 10.11。 rm推广只读文件。

似乎rm在不同的平台上有不同的默认行为。

我已经尝试过OS X 10.11和Ubuntu 14.04(不能正常工作):

rm somefile
rm --interactive=never somefile 
echo n| rm -i somefile

Ubuntu日志:

$ touch somefile
$ chmod 444 somefile 
$ ls -l somefile 
-r--r--r-- 1 ubuntu ubuntu 0 Apr 12 06:04 somefile
$ 
$ rm somefile
rm: remove write-protected regular empty file ‘somefile’? n
$ rm somefile
rm: remove write-protected regular empty file ‘somefile’? n
$ 
$ rm --interactive=never somefile 
$ rm --interactive=never somefile 
rm: cannot remove ‘somefile’: No such file or directory
$ 
$ touch somefile                                                
$ chmod 444 somefile                                                 
$ ls -l somefile                                            
-r--r--r-- 1 ubuntu ubuntu 0 Apr 12 06:06 somefile
$ echo n| rm -i somefile 
rm: remove write-protected regular empty file ‘somefile’? $ ls -l somefile 
-r--r--r-- 1 ubuntu ubuntu 0 Apr 12 06:06 somefile

@SaintHax的解决方案

for file in $@; do
    [ -w $file ] && rm $file
done

适用于上述平台上的只读文件。

3 个答案:

答案 0 :(得分:1)

您可以在--interactive命令中使用-irm作为选项,如手册页中所述:

  每次删除前都会出现

-i提示

     

- 交互式[= WHEN]提示符根据WHEN:never,once(-I)或always(-i);没有WHEN,提示始终

答案 1 :(得分:1)

在我的两种Linux上,这对我来说很好。

echo n| rm -i *.csv

但是,-i总是交互式的,所以它基本上否定了命令。如果你想用readonly命令跳过任何东西,我建议你创建一个函数。

del() {
   for file in $@; do
      [ -w $file ] && rm $file
   done
} 

请注意,这仅适用于您无法写入文件的情况。

答案 2 :(得分:0)

您可以使用:

rm --interactive=never somefile