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