想要创建一个接受带参数的函数的bash别名

时间:2016-12-18 06:58:56

标签: linux bash alias zsh

我想创建一个类似

的别名
ssh -i {location of file} username@host

sf() {
    ssh -i ~/.ssh/key user2@$1
}

alias ssf=sf

我必须

ssf host

如果我这样做,我的自动完成功能(zsh,iterm)将无效。正在考虑在接受参数的别名中调用函数。有什么帮助吗?

1 个答案:

答案 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是第一个值,或$11是第二个值,或$2,依此类推。

.bashrc方法

以相同方式创建别名的另一种方法是为您登录的用户编辑.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键,您的脚本应该可以正常工作。

声明

使用您自己的别名时,这些方法可能不是最有效或最安全的。但是它们应该足以让你开始。如果有人希望添加或编辑此答案以使其更具信息性和准确性(如果不准确),请随意这样做。希望这会有所帮助。

相关问题