帮助在bash shell中使用别名

时间:2010-04-03 16:56:02

标签: bash

我希望使用别名“t”输入文件夹并在其中列出内容。

我试过:

alias t="cd $1; ls -la"

但它刚刚列出了我输入的文件夹但没有输入。我想知道为什么?

因为我使用这个:

别名b =“cd ..; ls”

它回到了父母并列出了内容。

所以我希望“t”输入我输入的文件夹。

有人知道如何做到这一点吗?

4 个答案:

答案 0 :(得分:4)

您无法将参数传递给bash别名。您需要创建一个shell函数,如下所示:

function t { cd "$1" && ls -la; }

编辑:哎呀,忘记了这个功能,并根据Juliano的建议进行了编辑。

答案 1 :(得分:2)

我认为你不能以这种方式使用别名。但是,您可以声明一个函数:

function t {
    cd "$1"
    ls -la
}

答案 2 :(得分:1)

cd在bash中很棘手。您发出的命令在与bash shell不同的进程中运行,并且该进程在完成后终止。见Why doesn't "cd" work in a bash shell script?

答案 3 :(得分:1)

在大多数UNIX shell(cshbashzsh)中,别名是扩展的一种形式。因此,它们不像函数一样被解析。将作为命令处理的交互式输入流中的任何单词将根据别名列表进行扫描,并且将执行简单的字符串替换(通常在任何其他形式的扩展之前)。

如果你需要处理参数,那么你想要定义一个函数,它被解析和处理,而不是像宏一样简单地扩展。