파일을 새 위치로 끌어다 놓는 Bash 스크립트 bash 스크립트를 호출하여 bash 스크립트 내에

나는이 질문에 대해 내 엉덩이를 나에게 줄 것이라고 확신하지만, 나는 그것을 이해할 수 없다. 스크립팅을 처음 접했으므로 나에게 쉽게 가십시오 …

파일을 데스크톱 응용 프로그램으로 끌어다 놓을 수 있고 bash 스크립트를 호출하여 bash 스크립트 내에 지정된 위치로 해당 파일을 이동시킵니다. 여기까지의 내용이 있습니다.

배쉬 스크립트

#! /bin/bash

mv $file /path/to/new/directory

그러나 $file변수를 데스크톱 응용 프로그램으로 끌어서 놓을 때 변수 로 입력하는 방법을 알 수 없습니다 . 어떻게해야합니까?

이유 : 한 폴더에서 읽어야하는 서류가 있는데 일단 읽고 나면 다른 폴더에 넣습니다. 나는 기본적으로 이것을 쉽게하기를 원합니다.

고마워, 폴



답변

  1. 다음 내용으로 bash 스크립트 파일을 작성하십시오.

    #!/bin/bash
    mv "$1" "PATH_TO_NEW_DIRECTORY"
    
  2. 다음 내용으로 .desktop 파일을 만듭니다.

    [Desktop Entry]
    Name=Document Mover
    Exec=PATH_TO_SCRIPT_FILE %U
    Type=Application
    
  3. PATH_TO_NEW_DIRECTORY 및 PATH_TO_SCRIPT_FILE을 원하는대로 변경하십시오.

  4. 하다 chmod +x script_name

  5. 파일을 .desktop 파일로 끕니다.

  6. 끝난!.


답변

스크립트가 필요 없습니다. 필요한 곳에 PATH_TO_NEW_DIRECTORY에 대한 링크를 작성하십시오. 그런 다음 파일을 링크로 드래그하십시오.


답변

@ Slug45가 말한 것은 완전히 정확합니다. 그러나 설명이 부족합니다.

파일을 실행 파일 (또는 파일에 대한 링크)로 끌어서 놓으면 드래그 된 파일의 경로를 인수로 사용하여 해당 실행 파일이 실행됩니다. 이것은 Windows에서 정확히 동일합니다 (실제로 중요하지는 않습니다).

Bash는 인수를 다루는 간단한 방법을 가지고 있습니다. "$@" 따옴표와 함께 사용 하여 모든 인수의 배열을 가져옵니다 (예 : for..in 루프에서 유용). $@,, "$*"$*비슷한 일을하지만 거의 항상 원합니다 "$@". 세부 사항에 대한 자세한 정보는 여기 를 참조 하십시오 .

또한 $XX가 인수 번호 인 것처럼 특정 인수에 직접 액세스 할 수 있습니다 . 예를 들면 다음과 같습니다.

$ cat ./args.sh
echo $1
echo $2
echo $3
$ ./args.sh foo bar baz
foo
bar
baz
$

큰 스크립트에서는 명명 된 변수에 해당 스크립트를 할당하는 것이 좋습니다.

$ cat music.sh
#!/bin/bash
# Usage: ./music.sh Artist Album Song
ARTIST=$1
ALBUM=$2
SONG=$3

if [ $ARTIST -eq "Nickelback" ]; then exit; fi

mplayer ~/Music/$ARTIST/$ALBUM/$SONG.mp3