免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 883 | 回复: 0
打印 上一主题 下一主题

命令扩展(Command Expansion) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-06 20:01 |只看该作者 |倒序浏览

                                       
                                       
                               
                               
                                       
                                        http://blog.csdn.net/jinn8522/archive/2008/08/27/2838767.aspx
fvwm在执行命令的时候总会将参数扩展。参数是由'$'开始的,后面跟着单个字符或者括在括号内的单词。如果fvwm遇到一个没有加引号的参数,那么它
将会把这个参数扩展为字符串。fvwm不会处理它不认识的参数。参数扩展的优先级比引号高,如果需要得到'$',那么请输入'$$'。
如果命令带有'-'号前缀,那么fvwm将不会执行参数扩展。这只适用于紧挨着'-'号的命令,因为通常在这样的情况下参数扩展已经执行过了。当参数扩展和其他前缀一起使用时,必须放在其他前缀的前面。
比如说像下面这样:
Pick
-
Exec
exec xmessage '$[w.name]'
这个命令将会打开一个对话框,里面写着[color="#ff6600"]"$[w.name]",而不是扩展以后的内容。
这个长变量可能在它的名字里面包含其它的变量,内部的变量将首先被扩展。
在fvwm的早期版本中提供一些单字符的变量,但是单字符变量会引起很多问题,所以现在已经没有了。应该使用较长的变量名来替代。
例:
#打印当前的桌面编号和页面的水平编号和窗口的类(在这里没有扩展,因为没有窗口)
Echo
$[desk.n] $[page.nx] $[w.class]
注意:如果这个命令在窗口的焦点之外被执行,它将会打印[color="#ff6600"]"$[w.class]"而不是类的名字。通常来说把鼠标指针放在一个窗口上面来获得窗口焦点是不够的。
Current
命令可以强制使窗口具有焦点。
Current

Echo
$[desk.n] $[page.nx] $[w.class]
fvwm能够识别的参数有:
[color="#ff6600"]$$
                                   字母'$'
[color="#ff6600"]$
                                   fvwm正在读的这个文件的绝对路径。用来创建可重新定位的配置树。如果在任何可读文件之外使用则返回'.'。
[color="#ff6600"]$0 to $9
                                   分别标示传递到函数的第1个到第10个参数。如果相应的参数在函数中没有定义,那么这个参数会被命令行自动删除。
[color="#ff6600"]$*
                                   表示传递到函数的所有参数,包括$9以后的参数。
[color="#ff6600"]$[n]
                                  传递到函数的第n个参数,n是从0开始计数的。如果这个参数在函数中没有定义,那么这个参数会被命令行自动删除。这个参数扩展时不带引号。[color="#808080"]( The parameter is expanded unquoted.       )
[color="#ff6600"]$[n-m]
                                  传递给函数的第n个到第m个参数。如果所有的参数在函数中都没有定义,那么这个[color="#ff6600"]"$[...]"会被命令行自动删除。如果只是部分参数有定义,那么扩展所有已定义的参数,忽略其它。所有的参数扩展时都不带引号。
[color="#ff6600"]$[n-]
                                  传递给函数的从n开始的所有参数。如果所有的参数在函数中都没有定义,那么这个[color="#ff6600"]"$[...]"会被命令行自动删除。所有的参数扩展时都不带引号。
[color="#ff6600"]$

  •                                  传递给函数的所有参数。和[color="#ff6600"]$[0-]等效。
    [color="#ff6600"]$[version.num]
                                     fvwm的版本号
    [color="#ff6600"]$[version.info]
                                     fvwm的版本信息,像[color="#ff6600"]"(from cvs)",正式发行的版本没有这个信息。
    [color="#ff6600"]$[version.line]
                                     fvwm --version命令输出的第一行
    [color="#ff6600"]$[vp.x] $[vp.y] $[vp.width] $[vp.height]
                                     当前视口[color="#808080"](viewport)的坐标、宽度或者高度。
    [color="#ff6600"]$[desk.n]
                                     当前桌面的编号。
    [color="#ff6600"]$[desk.name]
                                    这个参数会被自动替换为第n个桌面的名字。桌面的名字是通过
    DesktopName
    命令来定义的。如果桌面没有命名,那么这个变量返回这个桌面的默认名字。
    [color="#ff6600"]$[desk.width] $[desk.height]
                                    整个桌面的宽度或者高度。也就是单个桌面的宽度或高度乘以x或者y方向上这里桌面里页面的个数。
    [color="#ff6600"]$[desk.pagex] $[desk.pagesy]
                                   一个桌面中x方向的页面个数或者y方向的页面个数。这两个参数的值是通过
    DesktopSize
    命令来设置的。
    [color="#ff6600"]$[page.nx] $[page.ny]
                                   当前页面的编号,也就是当前页面离x和y轴的距离。编号是从0开始计数的。这里页面相当于GNOME当中的区域。
    [color="#ff6600"]$[w.id]
                                   调用这个命令的窗口的ID(用16进制表示,比如 [color="#ff6600"]0x10023c),或者如果没有窗口和它关联,那么它的值就是字符串[color="#ff6600"]"$[w.id]"。
    $[w.name] $[w.iconname] $[w.class] $[w.resource]
    $[w.iconfile] $[w.miniiconfile] $[w.iconfile.svgopts]
    $[w.miniiconfile.svgopts]
              [color="#ff6600"]                   $[w.name]是窗口的名字
         [color="#ff6600"]                    $[w.iconname]是图标的名字
         [color="#ff6600"]                    $[w.class]是resource的类
    [color="#ff6600"]                             $[w.resource]是resource的名字
              [color="#ff6600"]$[w.iconfile] 和[color="#ff6600"] $[w.miniiconfile] 是图标或者或者由  
    Icon
    或者  
    MiniIcon
    定义的迷你图标的文件名(这个文件在硬盘上的绝对路径)
                                 [color="#ff6600"]$[w.iconfile.svgopts] 和 [color="#ff6600"]$[w.miniiconfile.svgopts]  是图标或者迷你图标的SVG渲染选项,只有当fvwm编译时加入了SVG支持时才有效
                                如果以上这些命令没有和任何窗口关联,那么这些命令会被没有扩展的字符串[color="#ff6600"]"$[w.]"替代。
                                注意:上面的前4个变量可能包括任何类型的字符,所以使用这些变量需要引用。这意味着这个变量的值两边需要加上单引号,而且值里面所有单独的引号都需要在前面加上反斜杠。以确保下面这样的命令:
                            
    Style
    $[w.resource]
    Icon
    norm/network.png
                              可以正常运行,即使这个变量的值含有像空格或者各种引号这样特殊的符号。
    [color="#ff6600"]$[w.x] $[w.y] $[w.width] $[w.height]
                             如果窗口没有图标话的话,这些参数分别表示当前窗口的坐标或者宽度或者高度。如果窗口已经图标话了或者没有窗口相关联的话,这些字符串的值将被保留。
    [color="#ff6600"]$[w.desk]
                            这个变量的值为窗口所在的桌面号,如果窗口是[color="#ff6600"]sticky风格的,那么则为当前的桌面号。
    [color="#ff6600"]$[w.layer]
                            这个变量的值为窗口所在的层。
    [color="#ff6600"]$[cw.x] $[cw.y] $[cw.width] $[cw.height]
                           这个和[color="#ff6600"]$[w...]相似,不过返回的是窗口客户端部分的[color="#ff6600"]geometry属性,也就是说:边框和标题栏不算在内。
    $[i.x], $[it.x],
    $[ip.x] $[i.y], $[it.y], $[ip.y] $[i.width], $[it.width], $[ip.width]
    $[i.height], $[it.height], $[ip.height]
                          这个和[color="#ff6600"]$[w...]相似,不过返回的是图标或者图标标题[color="#ff6600"]($[it...])或者图标所用图片[color="#ff6600"]($[ip...])的[color="#ff6600"]geometry属性。
    [color="#ff6600"]$[pointer.x] $[pointer.y]
                          这两个变量返回鼠标光标在屏幕上的位置。如果光标不在这个屏幕上,那么这俩个变量将不会被扩展。
    [color="#ff6600"]$[pointer.wx] $[pointer.wy]
                          这两个变量返回鼠标光标在所选择的窗口的位置。如果光标不在这个屏幕上,窗口被图标话或者没有窗口被选择,那么这俩个变量将不会被扩展。
    [color="#ff6600"]$[pointer.cx] $[pointer.cy]
                         这两个变量返回鼠标光标在所选择窗口的子窗口([color="#808080"]client portion)的位置。如果光标不在这个屏幕上,窗口被隐藏或者图标话或者没有窗口被选定时,那么这俩个变量将不会被扩展。
    [color="#ff6600"]$[screen]
                       fvwm正在运行的屏幕编号,对于多屏用户很有用。
           [color="#ff6600"]$[fg.cs]       $[bg.cs]       $[hilight.cs]       $[shadow.cs]
                       这些参数用来替代[color="#ff6600"]colorset中定义的前景色([color="#ff6600"]fg),背景色([color="#ff6600"]bg),高亮色([color="#ff6600"]hilight)或者阴影颜色([color="#ff6600"]shadow)。(用一个正整数来替代参数里面的[color="#ff6600"])。例如 [color="#ff6600"]"$[fg.cs3]"将会被扩展为名字为[color="#ff6600"]colorset 3的前景色(像[color="#ff6600"]rgb:rrrr/gggg/bbbb 这样的格式)。[color="#ff6600"]colorset的详情请参见
    Colorsets

    [color="#ff6600"]$[schedule.last]
                      这个参数会用
    Schedule
    命令调度的最后一条命令的ID替换自己,不管这个命令是否已经执行。
    [color="#ff6600"]$[schedule.next]
                      在没有明确指定其它的ID的情况下,这个参数会用
    Schedule
    命令调度的下一条命令的ID替换自己。
    [color="#ff6600"]$[cond.rc]
                     返回最后一个判断语句的返回值。这个变量只在函数内部有效,而且不能被判断语句用来作为判断的条件。详情请查看命令列表中的
    Conditional Commands
    章节。
    [color="#ff6600"]$[func.context]
                    当使用
    Mouse
    ,  
    Key
    或者  
    PointerKey
    命令时用来获得运行命令的上下文字符。可以像下面这个例子这样来用:              
                   
    Mouse
    3 FS N
    WindowShade
    $$[func.context]
    [color="#ff6600"]$[gt.str]
                   返回当前区域目录中str的翻译。如果没有找到翻译则返回原文。详见  
    LocalePath
    章节。
    [color="#ff6600"]$[...]
                  如果[color="#ff6600"][ ]里面的字符串不是上面的任何一个,fvwm将试着找一个同名的环境变量来替换它,并将这个环境变量的值给这个参数(比如说 [color="#ff6600"]"$[PAGER]" 可以被[color="#ff6600"]"more"替换)。如果找不到则保留这个变量。

    AddToFunc
    章节的描述中可以找到一些具体的例子。
                                           

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104526/showart_2064901.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP