Bash:创建嵌套别名

时间:2014-08-12 00:44:58

标签: bash alias

我正在尝试按如下方式创建别名,其中app_folder是顶级文件夹,appX是可执行文件:

alias app_folder='/tmp/app'
alias app1='app_folder/app1'
alias app2='app_folder/app2'
alias app_output='cat app_folder/log.txt'

当我在终端中呼叫时,我会得到这样的结果:

bash: app_folder/app1: No such file or directory
cat: app_folder/log.txt: No such file or directory

我尝试了所有不同的方法,但没有一种方法有效:

app1="$(app_folder)"'/app1'
app1='`app_folder`/app1'

这样可以使用别名,如果没有,还有其他方法吗?

1 个答案:

答案 0 :(得分:5)

我想你想要这样的东西:

APP_FOLDER="/tmp/app"
alias app1="$APP_FOLDER/app1"
alias app2="$APP_FOLDER/app2"
alias app_output="cat $APP_FOLDER/log.txt"

如果定期更改,您可以在文件中使用它,例如,更改别名指向的文件夹:

APP_FOLDER="$1"
alias app1="$APP_FOLDER/app1"
alias app2="$APP_FOLDER/app2"
alias app_output="cat $APP_FOLDER/log.txt"

因此,如果这是在“aliastest”文件中,您可以这样做:

. aliastest /tmp/app

你会得到的,例如:

$ alias | grep app
alias app1='/tmp/app/app1'
alias app2='/tmp/app/app2'
alias app_folder='/tmp/app'
alias app_output='cat /tmp/app/log.txt'

这是你要找的吗?或者,您可以使用单引号在别名中包含变量,例如:

alias app1='$APP_FOLDER/app1'
alias app2='$APP_FOLDER/app2'
alias app_output='cat $APP_FOLDER/log.txt'

然后,每当您设置APP_FOLDER变量时,您的别名都会使用它。