因此,对于我正在学习的操作系统课程,我选择将一个自定义的类似 ftp 的程序集成到右键菜单(用 C 语言编写)中,但我在尝试获取我制作的脚本时遇到了问题以我希望他们的方式出现和工作。
目标是让它看起来尽可能集成到操作系统中。我找到了一个关于如何在常规右键菜单中添加操作的主题,但我一直无法让我的 nautilus 脚本正常工作。
问题出现了,即使脚本位于 nautilus 脚本文件夹中,在 nautilus 操作中运行它也不会填充NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
脚本运行我的程序所需的文件选择变量 ( )。但是通过脚本菜单运行它们。我想知道这是否可行?
当没有选择任何文件时出现,因为这将启动我的程序来接收文件。如果可能的话,我需要得到它才能获得我在其中右键单击的文件夹:
这会在选择某些文件时出现,我需要能够获取所选文件的列表,以便我的程序知道要发送哪些文件:
我目前要做的是使用脚本菜单这是不可取的,因为脚本菜单仅在选择项目时出现:
我想做的事可能吗?
附加信息:发送/接收它们的程序是我编写的套接字服务器,我知道使用简单的 bash FTP 可能会更容易,但我的教授不会对 4 行解决方案印象深刻学期项目。
我正在用 bash 编写脚本。
以下是 bash 代码的示例:
#!/bin/bash
echo Hello World!
IP=$(zenity --entry --text "What is the IP you want?" --entry-text "")
PORT=$(zenity --entry --text "What is the PORT you want?" --entry-text "3000")
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
zenity --info --text $file
/home/admin/fileSending/clientRecieve $IP $PORT "$file"
done
echo $IP
我想出了答案,简而言之,你需要使用参数来给你的变量。参数
%b
将文件名作为命令行参数传递,可以通过"$1"
for 第一个参数访问。在这种情况下,%B
它将为您提供所有文件作为单独的参数,因此您将需要"$1"
"$2"
等...您还可以使用
$PWD
来获取当前工作目录。然而,有一些重要的事情需要注意,因为当前的工作目录并不总是你想象的那样。当您在文件夹中选择一个文件时,/home/admin/myStuff/test.txt
脚本的工作目录将是/home/admin/myStuff
. 因此,您可以使用"$PWD/$1"
++ 获取当前工作目录/
所选择的文件。代码如下当您尚未选择文件夹时,工作主管会更改。假设您右键单击
/home/admin/myStuff
工作目录内的空白区域将/home/admin
不会/home/admin/myStuff
为了选择工作目录,您可以使用
%b
获取您实际所在的目录。代码如下:你可以用这个小脚本自己测试