파일을 새 위치로 끌어다 놓는 Bash 스크립트


8

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

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

배쉬 스크립트

#! /bin/bash

mv $file /path/to/new/directory

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

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

고마워, 폴


2
이해가 안되는데, 원하는 것이 있다면 드래그 앤 드롭하지 않겠습니까? 폴더 1로 드래그하여 드래그 한 항목을 폴더 2로 이동시키는 방법을 묻는 것 같습니다. 왜 먼저 폴더 2로 직접 드래그하지 않습니까?
terdon

2
파일 관리자를 응용 프로그램으로 끌어다 놓은 다음 해당 파일을 응용 프로그램에 전달하여 무언가를 수행 할 수있는 파일 관리자를 모릅니다. 내가 사용한 모든 파일 관리자는 파일을 폴더로 드래그하는 것만 지원합니다. 이것이 가능할 것이라고 생각할만한 이유가 있습니까? 이런 식으로 작동하는 응용 프로그램을 보셨습니까? 물론 웹 응용 프로그램 (브라우저의 드래그 앤 드롭 API를 제공하는) 또는 더 복잡한 다른 유형의 응용 프로그램 으로이 작업을 수행 할 수 있지만 AskUbuntu 답변에서 설명하기에는 너무 복잡 할 수 있습니다.
Robin Winslow

1
대부분의 터미널과 파일 관리자가 이것을하지 않습니까? XFCE에서 파일을 Thunar에서 터미널로 드래그하면 전체 파일 이름이 붙여집니다. 그리고 파일을 LibreOffice 또는 Gedit와 같은 것으로 드래그하면 파일이 열립니다 (적어도 시도 ). 파일 이름으로 원하는 것을 수행하는 것은 응용 프로그램에 달려있는 것처럼 들립니다.
Xen2050

@ 터던. 예, 다른 폴더로 드래그 앤 드롭하고 싶지만 내가 있던 디렉토리에서 벗어나서 새 디렉토리로 완전히 이동 한 다음 파일을 덤프하는 빠른 방법이 필요했습니다. 그것은 비효율적 인 것 같습니다. 다른 모든 사람들에게 아래 Slug45가 제공 한 답변을 참조하십시오.
PaulFrater

답변:


24
  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. 끝난!.


1
표시된대로 항상 변수를 인용 해야한다는 점을 강조해야합니다 . (또는 ) $file대신 사용하면 문제가 발생할 수 있습니다. "$file""${file}"
Paddy Landau

또한 bash여기 에서 사용할 필요는 없습니다 . #!/bin/sh( bash어쨌든 많은 시스템에서 연결될 수 있지만) 동일하게 수행하기에 충분 합니다.
ckujau

14

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


2
이것은 더 쉬운 해결책이었을 것입니다 (그러나 나는 bash 스크립팅에 대해 배우지 못했습니다 :)
PaulFrater

이것이 "명백한"방법이며 질문에 대답합니다. 그러나 스크립트를 사용하는 경우 해당 스크립트는 음악 파일을 한 장소에 배치하고 다른 장소에 문서를 배치하거나 심볼릭 링크를 바꾸지 않고 대상을 변경하는 것과 같이 전달되는 파일에 따라 임의로 복잡하고 다른 작업을 수행 할 수 있습니다.
Joe

3

@ 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.