1

只是想我会记录下来(自我回答如下):

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,它允许用户定义命令;一个简单的问题在gdb终端:

(gdb) define fn
> finish
> next
> end

...从那时起,您可以fn在该终端中键入以调用finishand的序列end

有没有类似的东西gnuplot

4

1 回答 1

1

是的,似乎有 - 有一个称为宏(help macrosin )的工具,其中可以通过在其名称前添加(“at”字符)来gnuplot扩展字符串变量。@

默认情况下禁用此功能,因此需要考虑启用它。这就是为什么最好将该序列保存在一个初始化脚本文件中,例如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

好吧,希望这对某人有所帮助,
干杯!

于 2013-01-23T05:20:58.537 回答