2013-11-21 121 views
35

我有這樣的命令,我想要做什麼,但我不能讓別名它在我的.bashrc(請注意,它使用單引號和雙引號):bash的alias命令

svn status | awk '$1 =="M"{print $2;}' 

我已經試過:

alias xx="svn status | awk '$1 ==\"M\"{print $2;}'" 

而且沒有運氣其他一些常識的組合。我知道的bash是非常挑剔的報價..那麼什麼是它的別名,爲什麼正確的方法是什麼?謝謝

回答

45

你只需要正確地轉義它。

alias xxx="svn status | awk '\$1 ==\"M\"{print \$2;}'" 
+7

所以我沒有逃避$ ..不知道! –

+2

不錯!我不知道我必須逃避'$'! – Shadoninja

+0

很好的答案,但也提醒一下,犯錯是多麼容易。在我處理的情況下,已經有了逃脫的角色,並且造成了巨大的混亂。 EJK的答案對我來說更有用,對許多人來說,函數可能是一個更乾淨的選項:) – jerclarke

45

這是不使用別名完成相同的事情。把它放在你的.bashrc中的一個函數中:

xx() { 
    svn status | awk '$1 =="M"{print $2;}' 
} 

這樣你就不用擔心得到引號了。這使用了與命令行相同的語法。

+4

+1,但是一個詭辯 - 'function'關鍵字是與POSIX的不必要的不​​兼容。只要把它關掉:'xx(){...' –

+4

我不知道。謝謝。 – EJK

+1

這更簡單,我喜歡它,但另一個更精確地回答了這個問題。 –