Таким образом для курса я беру в операционных системах, я принял решение интегрировать пользовательскую подобную ftp программу в меню правой кнопки (записанный в C), и у меня были проблемы с попыткой получить сценарии, которые я сделал, появляются и прокладывают себе путь, я хочу их к.
Цель состоит в том, чтобы заставить его казаться максимально интегрированным в ОС. Я нашел тему о том, как добавить действие в обычном меню правой кнопки, но я испытывал затруднения, заставляя мои сценарии наутилуса работать правильно.
Проблема возникает, что даже со сценарием в папках сценария наутилуса, работая она в действии наутилуса не заполняет избранные файлом переменные (NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
) то, что сценарий должен запустить мою программу. Однако выполнение их с помощью меню сценариев делает. Я хотел бы знать, возможно ли для этого работать?
Это появляется, когда никакие файлы не были выбраны, так как это запустит мою программу для получения файлов. Я должен добраться, это для сможения получает папку, по которой я щелкнул правой кнопкой в если возможный:
Это появляется, когда некоторые файлы выбраны, я должен смочь получить список, выбранных так, чтобы моя программа знала который файлы отправить:
Что я должен сделать, в настоящее время использование меню сценариев, Это - нежелательный, потому что меню сценариев только появляется, когда объект выбран:
То, что я хочу сделать возможный?
Дополнительная информация: программа к send/recieve их является сервером сокета, который я записал, я знаю, что мог, вероятно, сделать это намного легче с простым ударом FTP, но я не делаю мой профессор был бы впечатлен 4 решениями для строки на проекте термина.
Я пишу сценарии в ударе.
Вот пример кода удара:
#!/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"
для первого аргумента. в случае %B
это даст Вам все файлы как отдельные аргументы, таким образом, Вам будет нужно "$1"
"$2"
и т.д...
Можно также использовать $PWD
получить текущий рабочий каталог. ОДНАКО существуют некоторые важные вещи отметить об этом, поскольку текущий рабочий каталог не всегда, что Вы могли бы думать, что это. Когда Вы выбрали файл в папке, говорят, /home/admin/myStuff/test.txt
рабочий каталог сценария будет /home/admin/myStuff
. Можно поэтому использовать "$PWD/$1"
получить текущий рабочий каталог + /
+ выбранный файл. Код следующие
#!/bin/bash
#Author: Thomas Migus, created on March 20th 2018
#this is a script that runs the client that will send the file.
FILE="$PWD/$1"
IP=$(zenity --entry --text "What is the IP you want?" --entry-text "127.0.0.1")
PORT=$(zenity --entry --text "What is the IP you want?" --entry-text "3000")
/home/admin/fileSending/clientSend $IP $PORT $FILE
zenity --info --text "File sent"
Когда Вы не выбрали папку, рабочие изменения директора. Позволяет говорят, что Вы щелкаете правой кнопкой по вакууму внутри /home/admin/myStuff
рабочий каталог будет /home/admin
НЕТ /home/admin/myStuff
Для выбора рабочего каталога можно использовать %b
получить, в каком каталоге Вы находитесь на самом деле. Код следующие:
#!/bin/bash
#Author: Thomas Migus, created on March 20th 2018
# This is a script which runs the server
OUTPUT="$PWD/$1/"
PORT=$(zenity --entry --text "What is the port number?" --entry-text "3000")
/home/admin/fileSending/serverRecieve $PORT $OUTPUT
zenity --info --text "File recieved"
можно протестировать его сами с этим маленьким сценарием
#!/bin/bash
zenity --info --text "$1"
zenity --info --text "$PWD"