2013-11-21 8 views
35

Ich habe diesen Befehl, der das tut, was ich will, aber ich kann es nicht Alias ​​in meiner Bashrc erhalten (beachten Sie, dass es sowohl einfache und doppelte Anführungszeichen verwendet):Bash alias Befehl sowohl mit einfachen und doppelten Anführungszeichen

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

ich habe versucht:

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

und einige andere gesunde Menschenverstand Kombinationen ohne Glück .. ich weiß, dass bash mit Zitaten sehr wählerisch ist .. Also, was ist der richtige Weg, es zu alias und warum? Danke

Antwort

45

Sie müssen nur richtig entkommen.

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

Also ich entkam nicht die $ .. wusste das nicht! –

+2

Schön! Ich wusste auch nicht, dass ich dem "$" entkommen musste! – Shadoninja

+0

Gute Antwort, aber auch eine Erinnerung, wie einfach es ist, Fehler zu machen. In dem Fall, in dem ich mich abmühte, gab es bereits entflohene Charaktere und es war ein großes Durcheinander. EJK's Antwort unten war für mich nützlicher, eine Funktion ist wahrscheinlich eine sauberere Option für viele :) – jerclarke

45

Hier ist etwas, das das gleiche erreicht, ohne einen Alias ​​zu verwenden. Legen Sie es in einer Funktion in .bashrc:

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

Auf diese Weise müssen Sie nicht darum kümmern, die Anführungszeichen immer genau richtig. Dies verwendet die exakt gleiche Syntax wie in der Befehlszeile.

+4

+1, aber eine Quibble - das Schlüsselwort 'function' ist eine unnötige Inkompatibilität mit POSIX. Lass es einfach weg: 'xx() {...' –

+4

Das wusste ich nicht. Vielen Dank. – EJK

+1

Das ist einfacher und ich mag es, aber der andere beantwortete die Frage genauer. –