Wenn Ihr Alias ausgeführt wird ssh ... "cd ...; commands using backquote that I can't easily show on Stack"
, befiehlt Ihre Shell der Shell, die Backquoted- ls ... | ...
Pipeline lokal auszuführen, wobei der Name der neuesten Datei in Ihrem aktuellen Verzeichnis auf Ihrem System ermittelt wird und dieser Dateiname als Teil des Befehls an das Remote-System gesendet wird Tail diese Datei funktioniert nicht.
Ihre Optionen sind:
# ugly quoting to work with doublequotes alias logger='ssh ... "cd ...; tail -f \`ls ... | ...\`; bash --login"' # shell function or script, which let you use clearer singlequotes logger(){ ssh ... 'cd ...; tail -f `ls ... | ...`; bash --login' } # or cat <<"END" >logger # use some dir (early) in $PATH ssh ... 'cd ...; tail -f `ls ... | ...`; bash --login' END chmod +x logger
Im Allgemeinen können Sie den Befehl anstelle einer Befehlszeile (Argument) auch als Eingabe für die Remote-Shell angeben.
ssh ... <<"END" # shouldn't need -t in this case cd ...; tail -f `ls ... | ...` END
Dies ist jedoch nicht mit Ihrem offensichtlichen, wenn auch unerwarteten und unerklärlichen Wunsch verbunden, bash --login
nach dem Verlassen des Systems zu laufen tail
.
Beachten Sie, dass in den beiden Heredoc-Fällen die Trennzeichenfolge angegeben ist, sodass die lokale Shell KEINE Backquote oder bestimmte andere Dinge innerhalb der Daten subventioniert.
In allen Fällen wäre es besser, die neuere $( ... )
Syntax für die Befehlssubstitution anstelle der alten Backquote-Syntax zu verwenden - insbesondere für Fragen zu Stack, bei denen Backquotes (viel? Am meisten?) Nicht-Codeblock-Formatierungen stören.