wie füge ich meine Argumente in einen Bash-Alias-Befehl ein?

wie füge ich meine Argumente in einen Bash-Alias-Befehl ein?

Normalerweise habe ich in meiner Bashrc den folgenden einfachen Alias:

alias g="grep --color=always --exclude-dir=\*.svn\*"

aber jetzt muss ich auf Systemen arbeiten, die nur GNU grep 2.5 haben, daher kein --exclude-dirArgument.

jetzt brauche ich so etwas zum Arbeiten:

alias g="grep --color=always $1 $2 | grep -v .svn"

aber natürlich werden die Argumente an das Ende des Alias ​​angehängt. $1 und $2 werden analysiert, wenn der Alias ​​erstellt wird, nicht wenn er aufgerufen wird, auch nicht bei starken Anführungszeichen.

Kann ich das lösen, ohne auf zusätzliche Skripte oder Funktionen zurückzugreifen?

Antwort1

Nein, das geht nicht. Im Bash-Handbuch heißt es:

Es gibt keinen Mechanismus zur Verwendung von Argumenten im Ersetzungstext, wie in „csh“. Wenn Argumente benötigt werden, sollte eine Shell-Funktion verwendet werden (*beachten Sie Shell Functions::).

Funktionen sind hierfür das Richtige und können so einfach geschrieben werden wie ein Alias. In diesem Fall könnte es sein

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }

verwandte Informationen