Ich schaue, um Befehle von vim an einen separaten tmux-Bereich zu senden, und ich dachte mir, der einfachste Weg wäre, eine Named Pipe zu mkfifo /tmp/cmdsund zum Ausführen bash < /tmp/cmdsvon Befehlen zu lauschen.
Ich mache es dann echo "echo \"hello world\" > /tmp/cmds"als Test, dies funktioniert nur für einen Befehl und xargs wird sofort geschlossen. Gibt es eine Möglichkeit, dies nach mehr als einem Befehl auszuführen?
2 Antworten auf die Frage
1
johnshen64
Dies unterscheidet sich nicht vom Ausführen von xargs auf der interaktiven Shell und endet mit einem Zeilenumbruch, sodass es beendet und beendet wird.
Sie müssten eine Schleife schreiben und für jede Eingabezeile von stdin ausführen, wie z
während:; xargs </ tmp / cmds; erledigt
nicht getestet, so dass Sie möglicherweise optimieren müssen.
0
William Casarin
Wenn sich jemand gefragt hat, hier das Skript, das ich zum Senden von Befehlen von vim verwende:
#!/bin/sh FIFO=$ mkfifo $FIFO &> /dev/null while :; do bash < $FIFO && echo "== OK ==" || echo "!! ERR !!"; done
Hier ist eine Vim-Funktion, um Befehle an diese Pipe zu senden: