我想要一个脚本来打开不同文件夹中的多个选项卡。
在搜索过程中我发现这条目,但如下所示的交换确实在我的主文件夹中打开了一个带有三个选项卡的终端。错误消息显示:
Failed to parse arguments: Unknown option --execute=cd /some/thing/
脚本如下:
#!/bin/sh
gnome-terminal --tab --execute="cd /some/thing/" \
--tab --execute="cd /home/" \
--tab --execute="cd /home/" \
exit 0
--working-directory="/some/thing/" 的变体也无济于事。您能看出错误吗?
答案1
以下内容适用于 oneiric。你可以使用它来代替你的版本:
#!/bin/bash
gnome-terminal --tab --working-directory="/var/www/" --tab --working-directory='/home/' --tab --working-directory='/home/'
exit 0
答案2
您的特定错误是由于未--execute
正确使用该选项而导致的。如果您查看以下手册页的摘录,您会注意到--execute
才不是将等号列为语法的一部分,因为它只是执行命令行的其余部分。正确使用的示例如下:
gnome-terminal --execute play '/home/cjohnson/Still Alive.mp3'
重要的提示:
无论如何,使用cd
有点特殊。cd
与大多数命令不同——它不会启动自己的二进制文件/可执行文件。它由bash
(或您正在使用的任何 shell)直接解释。因此,尝试调用与和标志cd
不一致(它们似乎想要直接生成子进程)。其他由类似直接处理的命令也会出现同样的问题(我已经检查过了)。即使正确使用,没有等号,它仍然会导致错误:“找不到文件或目录。”因此,使用该选项是您执行所需操作的最佳选择。--execute
-x
bash
home
--working-directory=[DIRECTORY]
另一个重要说明:
即使不是这种情况,你仍然会遇到麻烦。问题在于--execute
当你真正想要使用选项的含义时却试图使用它--command
。在手册页文档中,它明确指出
-e, --command=STRING
执行此选项的参数在航站楼内。-x, --execute
执行命令行的其余部分在航站楼内。
(重点是我的)
换句话说,它可能不会按照您认为应该的方式进行解析。使用--execute
可防止您将任何其他选项传递给gnome-terminal
。
摘自我的一个脚本,我在不同的选项卡中运行多个命令(为了保护我的隐私/安全,名称已更改):
gnome-terminal --tab --command="ssh cjohnson@GLaDOS" --tab --command="ssh drattman@GLaDOS"
(顺便说一句,尝试使用--command
带有cd
或的标志home
也会导致熟悉的“没有这样的文件或目录”错误。)
希望这篇文章不会太长。我只是想写得彻底一些。