我想创建一个类似
的别名ssh -i {location of file} username@host
sf() {
ssh -i ~/.ssh/key user2@$1
}
alias ssf=sf
我必须
ssf host
如果我这样做,我的自动完成功能(zsh,iterm)将无效。正在考虑在接受参数的别名中调用函数。有什么帮助吗?
答案 0 :(得分:0)
创建接受参数的别名的快速而简单的方法与此伪代码类似:
#!/bin/bash
declare -r -a n=('$1' '$2' '$3' '$4' '$5')
function main() {
command -i ${n[0]} -f ${n[1]} --another-arg ${n[2]}
}
main
如果我希望所有用户都可以使用此脚本,我通常会sudo su
以root身份登录,然后我将使文件可执行并将脚本文件保存到/usr/bin/
目录。这将允许您使用脚本的名称作为终端命令。在root用户时,如果只希望root用户具有访问权限,请对脚本chown root script.sh
应用适当的权限。如果需要自定义命令名称来调用脚本,请将脚本命名为您要使用的别名。
declare -r -a
是创建只读数组的语法。 n=
是数组变量,它将保存您使用该工具的每个参数的值。 ('$1''$2''$3''$4''$5')
是最多5
个参数的参数变量。 $1
将成为第一个参数,$2
将成为下一个参数,并且将成为最后一个参数。这些参数变量中的每一个都将保留您在使用脚本别名时在命令行中输入的值。
接下来我们有main()
函数,它将包含您希望运行的命令。在此main()
函数中,您可以看到带有n
变量的大括号,括号中包含${n[0]}
等数字。这是什么,调用n
数组的值。调用bash中的数组值时,数字以0
开头,而不是以1
开头。因此0
是第一个值,或$1
,1
是第二个值,或$2
,依此类推。
以相同方式创建别名的另一种方法是为您登录的用户编辑.bashrc
文件。所以根据用户你会:
输入cd命令并按Enter键切换到.bashrc所在的主目录。
cd
然后使用nano,打开.bashrc。
nano .bashrc
滚动到文件底部并添加以下内容:
alias your_alias="bash path/to/your/bash/script.sh'
设置别名后,键入ctrl+x
以保存文件。 Nano将提示您确认。只需输入y
即可确认保存。接下来,您可以重新加载.bashrc
,这样您就可以立即使用该命令,也可以重新启动,以便下次启动时可以使用该命令。要重新加载.bashrc
,您将执行以下操作:
source ~/.bashrc
就是这样!你的别名准备好了。现在只需将别名用作普通的CLI工具命令,根据需要添加参数,然后按Enter键,您的脚本应该可以正常工作。
使用您自己的别名时,这些方法可能不是最有效或最安全的。但是它们应该足以让你开始。如果有人希望添加或编辑此答案以使其更具信息性和准确性(如果不准确),请随意这样做。希望这会有所帮助。