我有一个场景,我有一个监视文件位置的脚本,并且该文件位置已复制文件,即 /home/matt/thefile
.
我想要一个别名,如果我place myfile.txt
这样做,它将被/home/matt/thefile
覆盖myfile.txt
。
答案1
一个函数会更合适。
在类似 Bourne 的 shell 中:
place() { cp -- "$1" /home/matt/thefile; }
bash
在,以外的 shell 中yash
,posh
您可以将其简化为:
place() cp -- "$1" /home/matt/thefile
在fish
:
function place
cp -- $argv[1] /home/matt/thefile
end
在rc
/ es
:
fn place {
cp -- $1 /home/matt/the/file
}
这是(t)csh
因为您需要使用 an ,alias
因为这些 shell 没有函数(这也是csh
首先引入别名的原因)。您(t)csh
可以使用历史替换来允许某种参数传递给别名。
alias place 'cp -- \!:1 /home/matt/the/file'
当被称为 时place myfile.txt
,它们会复制myfile.txt
到~/thefile
如果您想要无论用户的 shell 是什么都可以工作的东西,而不是让他们将特定于 shell 的函数/别名添加到他们的 shell 自定义文件中,您可以创建一个脚本,将其添加到他们的目录中命令搜索路径。就像是:
#! /bin/sh -
exec cp -- "${1?Please give the file to copy as argument}" /home/matt/thefile