Angepasster Linux-Alias ​​im Überwachungsbefehl?

Angepasster Linux-Alias ​​im Überwachungsbefehl?

Ich kann meinen angepassten Alias-Befehl im Überwachungsprogramm nicht verwenden, um andere Warteschlangen zu überwachen. Es heißt „Befehl nicht gefunden“. Gibt es eine Möglichkeit, den Alias-Befehl im Überwachungsprogramm zu verwenden?

$ alias lq='ls -lhrt /home/foo/stat/*.msg'

$ watch lq
sh: lq: command not found

Antwort1

Darauf gibt es keine einfache Antwort: Das Beste, was ich tun konnte, war,Funktion watchanyEnthält:

watchany() { alias "$1" 2>/dev/null| \
  ( t=`line`; if [ -n "$t" ]; then t=${t#*=\'}; t=${t%\'}; shift; \
    watch $t "$@"; else watch "$@"; fi ) }

Es muss eine Funktion sein, um die Verarbeitung in einer Unter-Shell zu vermeiden (und die ()Klammern dienen demselben Zweck). Sie können es zu hinzufügen .bashrc.

Ich habe es nicht bis zum Äußersten verfolgt, aber wie oben beschrieben funktioniert es nicht richtig mit Dateien oder zusätzlichen Parametern, die eingebettete Leerzeichen enthalten. Wenn dies ein Problem darstellt, müssen Sie es selbst ausarbeiten.

Wenn Sie sich davon überzeugt haben, dass es wie gewünscht funktioniert, können Sie watchin der Funktion durch $(which watch)und dann ersetzen alias watch=watchall.

Wenn Sie nur ein oder zwei Aliase überwachen möchten, ist es wahrscheinlich am einfachsten, weitere Aliase hinzuzufügen, beispielsweise:

alias watchlq='watch ls -lhrt /home/foo/stat/*.msg'

Natürlich müssen Sie daran denken, zu wechseln watchlq, wenn Sie jemals wechseln lq.

verwandte Informationen