2010-08-16 53 views
0

我是Linux shell的新手,不得不最近开始使用它来工作......我现在已经习惯了bash中的基本命令以找到我的方式......但是有很多命令我发现自己一遍又一遍地打字,每次都输入它的麻烦...所以任何人都可以告诉我如何缩短我经常使用的命令语法。创建bash命令的较短版本

一个非常简单的例子,我经常使用ls -lh命令,虽然这很短暂,但我只是举个例子。我可以有什么东西(一个shell脚本可能),以便我可以通过键入只是说lh来运行它。

我想为它做更复杂的命令。

+0

只要确保'lh'不会做其他事情(我不认为它会这样做,但您可能会遇到其他缩写)。 – FrustratedWithFormsDesigner 2010-08-16 15:16:47

回答

7
alias lh='ls -lh' 

如果您希望跨会话使其持续存在,请将其置于您的.bashrc文件中。之后不要忘记运行source .bashrc以使bash知道这些更改。

如果你想传递变量,一个别名是不够的。你可以做一个功能。作为一个例子,考虑命令lsall列出指定目录下的一切(注意,这只是一个例子,因此非常容易出错):

function lsall 
{ 
    ls $1/* 
} 

$N获取与第N个参数替代。

+0

编辑完成后。bashrc,所做的更改不会奇迹般地出现在当前shell中 - 您将不得不“源代码.bashrc”。新的终端窗口将会接受更改。 – 2010-08-16 16:49:09

+0

@glenn jackman:谢谢,我更新了我的答案。 – Job 2010-08-16 17:49:59

4

您会将以下别名在.bashrc文件:

alias lh='ls -lh' 

现在lhls -lh简写。

对于更复杂的任务,您可以使用bash函数。举例来说,在我的机器之一,我有这会导致“ls”的一个功能,每一个成功的“CD”后运行:

cdls() { 
    builtin cd "$*" && ls 
} 
alias cd='cdls' 
1

可以定义aliases。对于较长的命令,使用一个函数,将其放入一个库文件中,并在需要使用函数时获取它。

+0

并确保遵循链接功能 - 有时一个别名太简单了。 – 2010-08-16 15:16:15

1

只是为了完整起见,因为你想了解的bash:你也可以写一个函数

lh() { 
    ls -lh "[email protected]" 
} 

虽然我从来不写,当一个简单的别名会做;-)

1

;)我记得我刚开始使用Linux时遇到的一个问题,那就是我会问这样的问题,人们会认真回答它们,但没有人会解释如何使这种更改永久化,所以我发现自己每次打开终端时都要输入一堆命令。因此,尽管其他人已经准确地回答了这个问题,但如果您想要使更改永久化,请将别名行放入您的〜/ .profile或〜/ .bashrc文件(〜=您的主目录) 。这取决于你运行的分发版本,但是我总是尝试将我的别名首先添加到〜/ .profile文件中,如果这样做不起作用,那么〜/ .bashrc。其中一人应该肯定工作。