为垃圾箱创建别名

phe*_*non 8 linux bash bash-alias

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

alias myrm='mv /home/user/Trash/*'
Run Code Online (Sandbox Code Playgroud)

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

然后我做了

$source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

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

mv: 无法统计 '/home/user/Trash/*': 没有那个文件或目录

如何解决这个问题?

G-M*_*ca' 18

首先,$调用别名时不要使用。  $用于扩展变量(以及与此问题无关的其他一些内容)。

但是,第二,别名做的工作有点像变量,在这个意义上,他们(在过于简单化了一点风险),只是扩展到一堆话。你说你想做myrm foo,但那会扩展到mv /home/user/Trash/* foo,这是没有意义的。

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

mv -t destination_dir 文件...
作为替代的语法

mv文件... destination_dir
句法。

但是您可以通过 shell 函数获得更大的灵活性。这些结合了脚本的灵活性和别名的(低)开销。例如,

myrm() { mv "$@" /home/user/Trash; }
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为 `$` 来自他的 shell,通常终端中的所有行都以 `$` 开头,表示它是一个非 root shell (9认同)

des*_*ukh 7

可能更简单的解决方案是使用trash-clipackage.json 。然后你就可以做alias myrm=trash,然后trash foo完成你想要的。除了 foo 现在会去~/. local/share/Trash