为垃圾箱创建别名

为垃圾箱创建别名

我是新手。我在 .bashrc 文件中设置了一个别名,如下所示。

alias myrm='mv /home/user/Trash/*'

目的是当我使用 myrm 注释时,例如 $myrm foo,文件“foo”必须移动到我的主文件夹 (/home/user/Trash) 中的垃圾文件夹。

然后我就这么做了

$source ~/.bashrc

此后,当我尝试通过键入 $myrm foo 来使用 myrm 时,出现以下错误消息。

mv:无法统计‘/home/user/Trash/*’:没有这样的文件或目录

这个问题该如何解决?

答案1

首先,$当您调用别名时,您不会使用它。  $用于扩展变量(以及一些与这个问题不特别相关的其他事情)。

但其次,别名确实工作有点像变量,因为它们(有点过于简单)只是扩展为一堆单词。你说你想做myrm foo,但这会扩展为mv /home/user/Trash/* foo,这没有意义。

一个简单的解决方案是将别名定义为mv -t /home/user/Trash,这将起作用,因为mv支持

速度destination_dir 文件
语法作为替代

动量文件目标目录
句法。

但是,使用 shell 函数可以获得更大的灵活性。这些函数将脚本的灵活性与别名的(低)开销相结合。例如,

myrm() { mv "$@" /home/user/Trash; }

将导致myrm foo被解释为mv foo /home/user/Trash

答案2

可能更简单的解决方案是使用trash-cli包。然后你只需执行alias myrm=trash然后就可以trash foo完成你想要的操作。除了 foo 现在将转到~/. local/share/Trash

答案3

问题是,mv您必须像那样使用它mv source destination

用你的别名则反之亦然mv destination source

另外,您不需要*在末尾添加星号,因为它将目标视为文件夹。请确保您的文件夹/home/user/Trash存在mkdir /home/user/Trash

为了解决您的别名想法,我建议您看看这个 stackoverflow 问题:

这将导致该解决方案;请将其添加到您的~/.bashrc并在添加后执行source ~/.bashrc

myrm() {
 /bin/mv "$@" /home/user/Trash/
}

答案4

gvfs-bin如果您的主机上安装了软件包,那么您可以考虑使用另一个有用的别名:

alias myrm='gvfs-trash`

它会将您的文件移至垃圾箱。此外,正确的文件会写入您的 $TRASH 文件夹(例如info/files/...)。所以您不必为此担心。示例:进入垃圾箱并单击restore即可完美运行。

这是多余的,trash-cli但是您的主机可能只安装了其中一个,所以如果您没有 trash-cli,请尝试一下。

相关内容