在使用该别名调用的函数中使用bash别名

时间:2017-01-08 12:50:31

标签: bash function alias

我正在玩game in a terminal。它使用ssh连接,每个级别都有一对不同的用户和密码。

我使用我的bash别名存储这些对,即每个级别都有一个别名,我用两个参数调用bash函数:密码和级别数。

function log.as.bandit() {
    sshpass -p $1 ssh bandit$2@bandit.labs.overthewire.org
}
alias bandit14="log.as.bandit secretPass 14"
alias bandit15="log.as.bandit differentSecretPass 15"

如果我只能作为参数传递密码并从我使用的别名中获取用户名,那对我来说会更容易。

问题:
是否可以在由该别名调用的函数中使用别名?

在示例中:

function log.as.bandit() {
    sshpass -p $1 ssh $HERE_I_DEREFERENCE_THE_ALIAS_NAME@bandit.labs.overthewire.org
}
alias bandit14="log.as.bandit secretPass"
alias bandit15="log.as.bandit differentSecretPass"

1 个答案:

答案 0 :(得分:5)

据我所知:不,你不能用别名来做。

但你可以做的是:

function log.as.bandit() {
    sshpass -p "$1" ssh "${FUNCNAME[1]}"@bandit.labs.overthewire.org
}
bandit14() { log.as.bandit secretPass; }
bandit15() { log.as.bandit differentSecretPass; }

即。使用函数而不是别名。

FUNCNAME是一个包含当前正在执行的函数名称的数组。 ${FUNCNAME[0]}是当前函数本身的名称(log.as.bandit); ${FUNCNAME[1]}是调用函数的名称(bandit14bandit15)。