상황에 맞는 메뉴/작업에 노틸러스 스크립트 추가

상황에 맞는 메뉴/작업에 노틸러스 스크립트 추가

그래서 제가 수강하는 운영 체제 과정에서 FTP와 유사한 사용자 정의 프로그램을 오른쪽 클릭 메뉴(C로 작성됨)에 통합하기로 선택했는데 제가 만든 스크립트를 가져오는 데 문제가 발생했습니다. 내가 원하는 방식으로 나타나서 일하세요.

목표는 가능한 한 OS에 통합된 것처럼 보이도록 만드는 것입니다. 일반 마우스 오른쪽 버튼 클릭 메뉴에서 작업을 추가하는 방법에 대한 주제를 찾았지만 노틸러스 스크립트가 올바르게 작동하는 데 문제가 있었습니다.

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

답변1

간단히 말해서 매개변수를 사용하여 변수를 제공해야 한다는 답을 알아냈습니다. 매개변수는 첫 번째 인수를 %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"

관련 정보