我最近问了有关向 Dash 添加 shell 脚本的问题:
在 14.04 中,如何在不打开终端的情况下运行我编写的 bash 脚本?
它运行得非常好。
后续问题:如何通过 Dash 传递命令行参数?示例:在本例中,我的 dash 命令名为“Panel”。该脚本用 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
等等。我如何通过 Dash 传递参数(如--left
或 )--right
?理想情况下,我希望有以下工作流程:
- 按 SUPER 键
- 类型
panel --left
(例如) - 破折号消失并且左侧被镶板。
现在它运行正确的脚本,但忽略了--left
。
尖端?
答案1
问题是你不能.desktop
用参数从 Dash “运行”一个文件,所以设置确切地恐怕你想象的那样是不可能的。但是,假设你的脚本做采取论点,有几个优雅的替代选择,甚至更好:
保存你的脚本
~/bin
- 删除扩展
- 使其可执行
按运行它AltF2,输入命令
<scriptname> <argument>
在 Unity 启动器中创建一个快捷列表:
(假设您将脚本保存在
~/bin
,使其可执行,并删除扩展名,如1所示。)[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;
将其保存为
panel.desktop
并将~/.local/share/applications
其拖到启动器上。
创建三个不同的键盘快捷键,例如Alt+ <,Alt+ ^,Alt+>来运行脚本+参数:
“系统设置”>“键盘”>“快捷键”>“自定义快捷键”
单击“+”添加您的命令:
<scriptname> <argument>
不是最明显的一个,但在探索选项时,应该提到:您可以从 Dash 调用(zenity)选项列表:
键入选项的第一个字符,按回车键,脚本将使用所选参数运行。
再次假设您将脚本保存在 ~/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
,将其保存panel.desktop
为~/.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>
为您的文件夹)并保存文件:
PATH="<folder>:$PATH"
例如,我添加$HOME/.bin
到我的$PATH
这样我的二进制文件就不会弄乱我的主文件夹,但你可以将任何目录添加到你的路径中,只要确保不要添加任何危险的内容(例如,全球可写的内容)。
更改将在下次登录时生效。