Ehrlich gesagt, wenn ein Befehl so groß wird, würde ich es zu einem Skript und nicht zu einem Alias machen. Ein Vorteil eines Skripts ist, dass Sie es mit mehr Dateien als nur mit 'access.logs' arbeiten lassen.
Diese Befehlsfolge umfasst sowohl einfache als auch hintere Anführungszeichen - was immer zum Spaß beiträgt. Im Allgemeinen ist es besser, $(command args)
anstelle von Anführungszeichen zu verwenden.
Wenn Sie den Alias in doppelte Anführungszeichen setzen, werden die Befehle in Anführungszeichen ausgeführt, wenn der Alias erstellt wird - es sei denn, die Shell interpretiert die Dinge bei der Definition des Alias anders. Außerdem werden $var
Ausdrücke in Anführungszeichen ausgewertet, sodass Ihre awk
Fehler zeigen, dass Sie in der aktuellen Shell keine Argumente haben.
Wenn Sie also einen Alias verwenden müssen, müssen Sie wahrscheinlich den gesamten Ausdruck in einfache Anführungszeichen setzen, und für jedes einzelne Anführungszeichen, das im Ausdruck angezeigt wird, dieses durch die Sequenz quote-backslash-quote-quote: ersetzen '\''
. Das erste Anführungszeichen beendet die aktuelle Anführungszeichenfolge. Das Backslash-Zitat steht für ein buchstäbliches Zitat. Das letzte Zitat startet die zitierte Zeichenfolge neu.
Das führt zu:
alias downloads='grep `date '\''+%d/%b/%Y'\''` access.logs | egrep 2765330645ae47d292c9ceac725d744e.py | awk '\'''\'' | sort | uniq -c -w15 | sort -n'