我是新手。我在 .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,请尝试一下。