将 bash 函数编写为单行别名

将 bash 函数编写为单行别名

我该如何将其写为别名?

p() {
    DIR=~/projects/$@
    pushd "$DIR"
}

据我所知,这是通过管道将 stdin 传输到 Pushd 而不是 xargs:

alias p="xargs printf ~/projects/%s | pushd"

作为一个函数,它可能更好,但我觉得通过知道如何将其写在一行上并获得正确的管道,我可以学到一些东西。

答案1

正如@AndreasWiese 评论的那样,您不能使用别名来执行此操作。别名附加以空格分隔的参数,因此您无法将它们(以简单的方式)连接到别名命令。

对您的功能的评论:您为什么使用$@?你应该改用$1。如果您使用多个参数 ( ) 调用函数p a b c,则可能会收到错误 ( b: command not found)未知目录。

相关内容