帮酷LOGO
0 0 评论
文章标签:命令行  Comma  argument  Arguments  COM  COMM  命令行参数  DASH  

问题:

我最近问过关于将 shell script 添加到Dash的这个问题:

在 14.04年如何运行我写的bash脚本而不打开终端

它工作正常。

后续问题:如何通过破折号传递命令行参数? 示例:在本例中,我的dash命令名为"面板"。 我的屏幕上有 8个终端。 下面是使用的示例:


panel # Tile the screen with 8 terminal windows.


panel --left # Tile the left side with 4 terminals


panel --right # Tile the right side with 4 terminals



等等,如何通过破折号传递 --left 或者 --right 之类的参数? 理想情况下,我希望拥有这里工作流:

  • 按下超级键
  • 键入 panel --left ( 例如)
  • 破折号消失了,左边是面板。

现在它运行了正确的脚本,但是忽略了 --left

提示?


回答 1:

你的问题是,你不能用参数来控制一个 .desktop 文件,所以设置正确,就像你心中所写的那样,我害怕不可能。 不过,假设你的脚本 参数,有一些优雅的替代选项,也许更好:

  • ~/bin 中保存脚本

    • 删除扩展名
    • 使它可以执行
    • 按AltF2键,键入命令

      
      <scriptname> <argument> 
      
      
      
      
  • 在Unity启动中创建 quicklist:

    ( 假设你在 ~/bin 中保存了脚本,使它的可以执行,并将扩展名移除为 1.)

    enter image description here

    
    [Desktop Entry]
    
    
    Name=name_of_your_script_like_you_see_it_in_Dash
    
    
    Exec=<scriptname> <default_argument>
    
    
    Icon=/path/to/some/icon
    
    
    Type=Application
    
    
    
    Actions=Panel;Panel -left;Panel -right;
    
    
    
    [Desktop Action Panel]
    
    
    Name=Panel
    
    
    Exec=<scriptname> <default_argument>
    
    
    OnlyShowIn=Unity;
    
    
    
    [Desktop Action Panel -left]
    
    
    Name=Panel -left
    
    
    Exec=<scriptname> <argument_1>
    
    
    OnlyShowIn=Unity;
    
    
    
    [Desktop Action Panel -left]
    
    
    Name=Panel -right
    
    
    Exec=<scriptname> <argument_2>
    
    
    OnlyShowIn=Unity;
    
    
    
    

    将它保存为 ~/.local/share/applications 中的panel.desktop 并将它的拖到发射器上。

  • 创建三个不同的快捷键,例如 alt+ <,Alt+^,Alt+> 以运行你的script+arguments:

    "系统设置">"键盘">"快捷键">"自定义快捷键"

    单击"+"添加你的命令: <scriptname> <argument>

  • 不是最明显的,但是要探索选项,它应该被提及: 你可以从Dash调用( zenity ) 选项列表:

    enter image description here

    键入选项的第一个字符,按回车键,你的脚本将使用所选参数运行。

    enter image description here

    再次假定你将脚本保存为 ~/bin,,使它的可以执行并删除了语言扩展,如 1所示:

    • 将脚本复制到空文件中,将它的保存为 panel_options.sh,使它的可以执行。

      
      #!/bin/bash
      
      
      
      test=$(zenity --list"1. Panel""2. Panel -left""3. Panel -right" --column="Panel options" --title="Panel")
      
      
      
      if [["$test" ="1. Panel"* ]]; then
      
      
       <scriptname> <default_argument>
      
      
      elif [["$test" ="2. Panel -left"* ]]; then
      
      
       <scriptname> <argument_1>
      
      
      elif [["$test" ="3. Panel -right"* ]]; then
      
      
       <scriptname> <argument_2>
      
      
      fi
      
      
      
      
    • 从下面的代码创建。desktop文件。 将路径设为 Icon=,在 Exec= 行中设置到 pane_options.sh的路径,将它保存为 ~/.local/share/applicatios

      
      [Desktop Entry]
      
      
      Name=Panel
      
      
      Exec=/path/to/panel_options.sh
      
      
      Icon=/path/to/some/icon
      
      
      Type=Application
      
      
      StartupWMClass=Zenity
      
      
      
      

回答 2:

从原始问题来看,应该将脚本移动到 ~/bin/,默认情况下,该脚本应该在你的$PATH
这样做,你就可以再次使用AltF2运行你的脚本。 你还可以像在 shell 中那样将参数传递给它。

你还可以添加任何其他文件夹,将脚本保存到你的$PATH。 为此,请在你选择的文本编辑器中打开 ~/.profile:


# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login


# exists.


# see/usr/share/doc/bash/examples/startup-files for examples.


# the files are located in the bash-doc package.



# the default umask is set in/etc/profile; for setting the umask


# for ssh logins, install and configure the libpam-umask package.


#umask 022



# if running bash


if [ -n"$BASH_VERSION" ]; then


 # include. bashrc if it exists


 if [ -f"$HOME/.bashrc" ]; then


. "$HOME/.bashrc"


 fi


fi



# set PATH so it includes user's private bin if it exists


if [ -d"$HOME/bin" ] ; then


 PATH="$HOME/bin:$PATH"


fi



最后,添加一行( 用文件夹替换 <folder> ) 并保存 file:


PATH="<folder>:$PATH"



,add add,i,binaries,binaries,binaries,binaries,binaries,binaries,binaries,path,path,add,add,add,add,add,add,add,add。 世界可以写)。
更改将在下次登录时生效。




文章标签:COM  COMM  Comma  命令行  DASH  argument  Arguments  命令行参数  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语