我想编写一个脚本,用于在选定文件上执行 .jar 文件。稍后我将通过 Nautilus Actions 工具将该脚本添加到右键菜单中,或者直接将其放入 nautilus-scripts 文件夹中。我在创建脚本时遇到了问题。
当我在通常的控制台屏幕中并想在任何其他文件上执行此 jar 文件时,我使用以下语法
myfile.jar ./someotherfile.xml
并且 jar 文件会将输出写入控制台屏幕。
所以我创建了一个文件 script.sh,在里面添加了几行
#!/bin/bash
/home/username/myfile.jar $1
但它没有输出任何内容。我知道我做错了。请帮忙。
合计,我需要一个使用选定文件作为参数的脚本,打开 gnome-terminal,在该终端内它将启动 JAR 文件并将选定的文件传递给它。
我确信这是一个非常简单的过程,但我对 shell 脚本完全是新手。
答案1
你也可以选择
!/bin/sh
gnome-terminal -x java -jar /home/askmoo/myfile.jar "$1"
首先打开 gnome 终端,然后在其中执行您的 java 应用程序。这样,您就可以将输出打印到终端。
答案2
在 Gnome、KDE 和其他系统中,桌面和文件夹中的可执行文件(和图标)总是会弹出“右键单击属性”窗口。我不确定如何使用 nautilus 操作扩展来实现这一点,但您始终可以强制终端在命令退出后挂起,如下所示:
$ cat > /usr/local/bin/har.sh
#!/bin/sh
java -jar /home/jaroslav/tmp/src/hat/bin/hat.jar
while true;do
read -p "finished reading? " quit;
[[ "$quit" == "yes" ]] && exit
done
$ chmod 755 /usr/local/bin/hat.sh
$ hat.sh
Usage: hat [-stack=<bool>] [-refs=<bool>] [-port=<port>] [-baseline=<file> -debug=<int>] [-version] <file>
-stack false: Turn off tracking object allocatoin call stack.
-refs false: Turn off tracking of references to objects
-port <port>: Set the port for the HTTP server. Defaults to 7000
-exclude <file>: Specify a file that lists data members that should
be excluded from the reachableFrom query.
-baseline <file>: Specify a baseline object dump. Objects in
both heap dumps with the same ID and same class will
be marked as not being "new".
-debug <int>: Set debug level.
0: No debug output
1: Debug hprof file parsing
-version Report version number
-donationware Give information on the status of HAT
<file> The file to read
For a JDK 1.2 (or better) dump file, you may specify which dump in the file
by appending "#<number>" to the file name, i.e. "foo.hprof#3".
All boolean options default to "true"
finished reading? no
finished reading? ^C
$
按 CTRL+C 退出终端(或输入 yes)
还有属性对话框:..好的,我刚刚查看了 nautilus 属性...没有运气(我讨厌 gnome,他们让它变得越来越愚蠢)
它在 KDE 中仍然可用:(但 id 很快就会使用无限 while 循环),导航到这些设置所需的框数量实在是太多了。
答案3
./myfile.jar
和myfile.jar
是两个不同的命令。第一个命令执行当前目录中的文件(假设设置了执行位),后者搜索$PATH
名为 的程序myfile.jar
。
如果$PATH
是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
,则按顺序搜索:
/usr/local/sbin/myfile.jar
/usr/local/bin/myfile.jar
/usr/sbin/myfile.jar
/usr/bin/myfile.jar
/sbin/myfile.jar
/bin/myfile.jar
/usr/games/myfile.jar
我怀疑你的 jar 文件是否真的是可执行文件,如果它是 Java ARchive,你的 shellscript 应该是:
#!/bin/sh
java -jar /home/askmoo/myfile.jar "$1"