Ich habe diesen Befehl, der macht, was ich will, aber ich kann ihn in meiner .bashrc nicht aliasen (beachten Sie, dass er sowohl einfache als auch doppelte Anführungszeichen verwendet):
svn status | awk '$1 =="M"{print $2;}'
Ich habe es versucht:
alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"
Und einige andere vernünftige Kombinationen ohne Glück. Ich weiß, dass Bash mit Anführungszeichen sehr wählerisch ist. Also, wie kann man es richtig aliasen und warum? Vielen Dank
linux
bash
quotes
double-quotes
pragmatischer_Programmierer
quelle
quelle
Hier ist etwas, das dasselbe erreicht, ohne einen Alias zu verwenden. Fügen Sie es in eine Funktion in Ihrer .bashrc ein:
xx() { svn status | awk '$1 =="M"{print $2;}' }
Auf diese Weise müssen Sie sich keine Sorgen machen, dass die Angebote genau richtig sind. Dies verwendet genau die gleiche Syntax wie in der Befehlszeile.
quelle
function
Schlüsselwort ist eine unnötige Inkompatibilität mit POSIX. Lass es einfach aus:xx() { ...
#bash
, in denen wir Fragen zu Aliasnamen in irc.freenode.org erhalten , lautet die Antwort "Verwenden Sie stattdessen eine Funktion". ;; Aliase können nur eine Präfixerweiterung ausführen, was nicht hilfreich ist, wenn Sie beispielsweise nach Argumenten verzweigen möchten.Seit Bash 2.04 gibt es neben der Verwendung einer Funktion oder der Flucht vor @ffledgling einen dritten (einfacheren) Weg: die Verwendung der String-Literal-Syntax ( hier eine hervorragende Antwort ).
Wenn Sie beispielsweise einen Alias für diesen Onliner erstellen möchten, lautet dieser:
alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'
Sie müssen also nur das
$
vor der Zeichenfolge einfügen und die einfachen Anführungszeichen umgehen.Dies bringt eine shellcheck Warnung Sie wahrscheinlich sicher deaktivieren könnte mit
# shellcheck disable=SC2139
.quelle