2010-08-16 49 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。其中一人應該肯定工作。