繁体   English   中英

将别名作为函数参数linux bash传递

[英]Passing alias as function argument linux bash

大家好我正在学习如何在linux中使用.bashrc文件,因为我的标题声明我想知道如何使函数将参数识别为别名

我有一个名为home的别名,定义为: alias home=$HOME

并且函数定义为

function go(){
cd $1
ls $1
}

但是当我go home我得到了

bash: cd: home: No such file or directory ls: cannot access home: No such file or directory

当我想要它去做$ HOME

我将如何实现这一目标?

别名不是单词替换,而是新创建的小命令:

$ alias bla=ls
$ bla
file1
file2
file3
…

因此,它不能以您假设的方式使用。

您可能希望对此使用变量替换:

$ home=$HOME
$ function go() {
  cd "$(eval echo \$"$1")"
}
$ go home

如果您想使用别名,尽管这是滥用行为,请尝试以下方法:

$ alias home=$HOME
$ function go() {
  cd "$(type "$1" | sed -e 's/.*is aliased to .//' -e 's/.$//')"
}
$ go home

我想知道如何使函数将参数识别为别名

要按字面意思回答您的问题,您可以在函数内使用type -t来确定其参数是否为别名。 但那可能不是你想要的。

AFAIK,你真正想要的是不可能的。 Bash手册 (强调我的):

别名允许在将字符串用作简单命令的第一个字替换字符串。

你最接近的是:

go `home`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM