有没有办法撤消终端命令?

有没有办法撤消终端命令?

我刚刚使用以下命令将整个目录复制到另一个目录中

cp ~/local/* ./

实际上想输入

cp ~/local/srl* ./

所以我发现自己有很多不必要的文件。我可以手动抑制它们,但我想知道,有没有办法撤消该术语的任何命令?

答案1

不,没有办法撤消命令(至少不是通用的)。当用户rm使用错误的正则表达式运行,而没有意识到它覆盖的文件比他们想要删除的文件多时,这通常是一个问题。

此外,从终端撤消任何命令确实是不可能的。想象一下发送电子邮件或播放声音的命令。没有办法撤销这些。

庆幸的是你跑了cp,不是rm

至于未来,如果您不移动/删除/复制太多文件,-iswitch会将其转变为“交互”模式,在每次操作之前要求确认。

答案2

没有通用的方法可以撤消这样的命令。但是,如果您没有覆盖任何文件,那么使用源文件列表来识别必须从目标中删除的文件集并不太困难:

你不小心运行了这个:

cp ~/local/* ./

因此,要找到要删除的文件集,可以使用如下方法:

for SRC in ~/local/*; do DST="${SRC/*\/}"; echo rm "$DST"; done

DST="${SRC/*\/}"从 中的文件列表中删除路径,只留下文件名。)当您满意它列出了正确的文件集时,从命令中~/local/*取出并重新运行它。echo

答案3

  1. 安全又缓慢的方法:

    该方法包括将文件夹一一删除。您可以使用以下命令删除所选文件夹中的文件:

    rm -rf folder_name
    
  2. 更快的方法:

    您必须小心,因为您不想意外删除所需的文件:

    for SRC in ~/local/*; do
        DST="${SRC/*\/}";
        rm "$DST";
    done
    

答案4

不,通常您无法撤消终端命令。

根据您的具体情况,您可以轻松删除除这些特定文件之外的所有文件:

shopt -s extglob
rm !(srl*)

相关内容