2016-06-10 5 views
1

ich etwas bin auf der Suche, die wie folgt lautet:Speichern Befehle getippt Verwenden später

$ startmem 
$ command1 
$ command2 
$ command3 
$ endmem 

Später möchte ich es so nennen: mem, der die Befehle ausführt.
Um zu löschen, verwenden Sie einfach wieder startmem. Gibt es einen Weg dazu?

+0

Haben Sie versucht [definieren eine Funktion] (http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-8.html)? – nephtes

+0

Ich möchte dies mit mehreren Befehlssätzen verwenden können, die sich häufig ändern können, so dass ich für beide keine Funktion möchte. – Pete

+0

Jedes Mal, wenn Sie eine Reihe von Befehlen haben, geben Sie 'mem() {command1; Befehl2; Befehl3; } 'dann führe sie mit' mem' aus. Wenn Sie "mehrere Sätze von Befehlen" mit Ihrem vorgeschlagenen Prozess haben, wie werden Sie sie unterscheiden? Mit der Funktion haben Sie noch weniger tippen als Ihr Vorschlag. –

Antwort

3

Sie können dies tun:

startmem() { eval "mem() { $(sed '/^endmem/Q'); }"; } 

dass Ihre Eingabe nehmen, bis zu, aber nicht die „endmem“ Linie darunter, und erzeugt einen „mem“ -Funktion.


Wenn Sie es anhalten wollen, dann haben Sie keine andere Wahl, als es

auf Platte zu schreiben
startmem() { sed '/^endmem/Q' > ~/.mem_commands; } 
mem()  { source ~/.mem_commands; } 

Aber an diesem Punkt, warum Sie nicht nur erstellen ~/bin/mem, fügen ~/bin zu Ihrem PATH, und bearbeiten Sie einfach die Datei mem, wenn Sie sie ändern möchten.

+0

Perfekt, danke! – Pete

+0

Diese Antwort macht mich wegen der Verwendung von Eval unruhig. Aber du tippst die Befehle, wenn du in den Fuß geschossen wirst, bist du diejenige, die Kugeln in die Waffe lädt. –

+0

Hmmm ... Gibt es einen Weg, nach dem ich mich abmelden und wieder einloggen kann? – Pete

Verwandte Themen