以为我会记录这个(自我回答):
在终端中使用gnuplot
时,可以使用键盘上的向上和向下箭头来迭代键入的命令历史记录 - 就像在gdb
中一样。
然而,有时可能会有一系列我经常重复的命令 - 我想通过发出一个命令来调用它。例如,一个使用x11
中的交互式gnuplot
终端,并希望以png
格式获取“屏幕截图”。这需要将终端更改为png
,设置输出,发布plot
,终端恢复为x11
;或者:
set terminal png
set output 'gnuplot.png'
replot
set terminal x11
我希望用一个命令调用这个序列 - 即使我知道这些序列可以放在一行上,使用分号作为分隔符:
set terminal png ; set output 'gnuplot.png' ; replot ; set terminal x11
在gdb
中,有一个命令define,允许user-defined commands;一个只是在gdb
终端发布:
(gdb) define fn
> finish
> next
> end
...从那时起,可以在该终端输入fn
来调用finish
和end
的序列。
是否有与gnuplot
类似的内容?
答案 0 :(得分:1)
是的,似乎有 - 在help macros
)中有一个名为macros(gnuplot
)的工具,其中可以通过添加@
(“at”字符)来扩展字符串变量)以它的名字命名。
默认情况下禁用此工具,因此需要考虑启用它。这就是为什么最好将该序列保存在init脚本文件中,例如init.gp
命名:
print ""
print "init.gp starting"
set terminal x11
# define capt string variable as sequence
# of commands, semicolon separated
capt = "print 'Saving...' ; set terminal png ; set output 'gnuplot.png' ; replot ; set terminal x11"
print "macros state: "
show macros
print "enabling macros state:"
set macros
show macros
print "The @capt command should be available now."
print ""
print "init.gp ending"
print ""
然后可以在gnuplot
中执行这样的终端会话:
$ gnuplot
G N U P L O T
[...]
Terminal type set to 'wxt'
gnuplot> load "init.gp"
init.gp starting
macros state:
command line macros will not be expanded
enabling macros state:
command line macros will be expanded
The @capt command should be available now.
init.gp ending
gnuplot> plot sin(x)
gnuplot> @capt
Saving...
Terminal type set to 'png'
Options are 'nocrop font /usr/share/fonts/truetype/ttf-liberation/LiberationSans-Regular.ttf 12 size 640,480 '
Terminal type set to 'x11'
Options are ' nopersist'
gnuplot> plot cos(x)
Closing gnuplot.png
gnuplot> exit
$ identify gnuplot.png
gnuplot.png PNG 640x480 640x480+0+0 8-bit PseudoClass 102c 5.58KB 0.000u 0:00.000
嗯,希望这有助于某人,
干杯!