터미널을 사용하여 파일을 클립 보드에 복사


159

데스크탑에 파일이 있는데 파일 이름은 ded.html입니다. 파일을 복사하려면 파일을 클릭하고 cmd + c를 누릅니다.

이제 터미널을 사용하여 동일한 작업을 어떻게 수행합니까?


2
내용을 붙여 넣을 수 있도록 파일을 복사하거나 파일의 내용을 복사 하시겠습니까?
user151019

답변:


237

질문을 올바르게 이해하고 있다면, 당신이 겪고있는 것은 pbcopypbpaste입니다.

터미널을 열고 다음을 수행하십시오.

$ cat ~/Desktop/ded.html | pbcopy

이제 파일이 클립 보드에 있습니다.

다른 곳에, 즉 붙여 넣기하려면 다음을 수행하십시오.

$ pbpaste > ~/Documents/ded.html

이제 ~ / Documents에 ded.html의 사본이 있어야합니다.


3
텍스트 파일 작업에는 유용하지만 바이너리로 작업을 수행하려고하면 실패합니다. 내가 무슨 뜻인지 알기 위해 이미지로 이것을 사용해보십시오.
Itai Ferber 2018 년

7
$ cat 입력 후 ~ / Desktop / ded.html | pbcopy cmd + v를 사용하여 파일을 붙여 넣을 수 없습니다. $ pbpaste> ~ / Documents / ded.html이 작업을 수행했습니다.
화난 키위

Finder 메뉴 편집> 클립 보드 표시 (요세미티에서 테스트)를 통해 OSX 클립 보드의 파일 내용을 볼 수도 있습니다 .
Dannid

고맙습니다. 어떻게 읽고 그것을 다음 명령으로 전달합니까? 예를 들어 cat ~/.emulator_console_auth_token | auth <read_content>?
Dominic

파일 내용은 복사하지만 파일 자체는 복사하지 않습니다.
vy32

20

Lri의 대답 은 올바른 방향으로 향하고 있지만 몇 가지 결함이 있습니다. Finder 를 사용할 필요가 없으며 ( StandardAdditions OSAX의 the clipboard일부 임) 핸들러를 제공하는 것이 명령 행에서 인수를 전달하는 훨씬 안정적인 방법입니다 (10.4부터). 이 두 가지 변경 사항을 모두 적용하면 프로그램을 쉘에 입력하기 위해 수행해야하는 "탈출"이 크게 단순화됩니다.run

여기 내 버전이 있습니다 (쉘 함수로 싸여 있습니다. 예를 들어 .bashrc쉘에서 사용할 수 있도록하기 위해 이것을 넣을 수 있습니다).

file-to-clipboard() {
    osascript \
        -e 'on run args' \
        -e 'set the clipboard to POSIX file (first item of args)' \
        -e end \
        "$@"
}

file-to-clipboard ~/Desktop/ded.html

이 스크립트를 사용하여 클립 보드에 넣은 파일을 Finder 에 붙여 넣어 파일을 다른 폴더로 복사 할 수 있습니다 .

osascript 는 해시 뱅 인터프리터 (10.5부터)로도 사용할 수 있습니다. (예를 들어, 파일이 넣어 file-to-clipboard)

#!/usr/bin/osascript
on run args
  set the clipboard to POSIX file (first item of args)
end

파일을 실행 가능하게 만드십시오 ( chmod +x /path/to/where/ever/you/put/file-to-clipboard). 그런 다음 다음과 같이 실행하십시오.

/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html

PATH의 디렉토리에 저장되어 있으면“script”파일의 경로를 생략 할 수 있습니다.


@Lri : Finder가 명백한 내용을 이해하지 못합니다 set the clipboard to {one,two}(다른 AppleScript 프로그램이 목록을 성공적으로 추출 할 수 있음). StandardAdditions는 명령이 단일 항목으로 제한 될 수 있습니다 클립 보드.
Chris Johnsen

1
여러 파일에서 작동합니까?
VitalyB

참고 : 제공된 경로는 스크립트가 작동하기위한 절대 경로 여야합니다.
레오

8

명령 행을 사용하여 수행하려는 작업을 수행 할 방법이 없습니다. Apple은 텍스트의 기본 복사를 허용하는 도구 pbcopypbpaste도구를 제공하지만 원하는 도구를 사용하여 파일을 복사 할 수는 없습니다.

너무 많은 기술적 세부 사항에 가지 않고을 사용하여 Finder에서 파일을 '복사'할 때 C실제로 파일 자체를 복사하는 것이 아니라 클립 보드의 파일에 대한 참조를 만들고 파일 참조로 표시하는 것입니다. 붙여 넣을 때 응용 프로그램에서이 참조를 수신하면 응용 프로그램에서 항목을 정렬하고 붙여 넣은 내용을 파악한 다음 궁극적으로 파일에 맞는 파일을 사용해야합니다. 본질적으로 Finder에서 파일을 복사하면 파일이 특정 클립 보드에 특정 방식으로 파일 경로를 저장하고 붙여 넣을 때 해당 파일 경로를 수신하고 파일의 내용을 사용하여 새 파일을 작성하는 것을 알게됩니다. 오래된 것 (파일을 클립 보드에 복사하고 삭제 한 다음 다른 곳에 붙여 넣기를 시도하고 예를 들어 어떤 일이 발생하는지 확인하십시오).

이러한 복사 및 붙여 넣기의 의미에서 현재 사용 가능한 도구로는 필요한 작업을 수행하기에 충분하지 않습니다. boehj가 제안했듯이 이전 파일의 내용을 새 파일로 복사하려고 시도 할 수 있지만 텍스트 파일에만 효과적입니다. 당신이 얻는 바이너리 파일은 손상 될 것입니다 (이미지로 이것을 시도하십시오 – 그것은 손상됩니다).

전통적인 명령 줄은 이런 식으로 실패하지만 AppleScript 에서이 작업을 수행하려는 경우을 사용하여 명령 줄을 통해 호출 할 수 osascript있습니다.


당신은 이미지 등에 대해 옳습니다. 나는 그것을 생각하지 않았습니다. 나는 비록 때문에 내가 질문을 잘못 이해 한 것 같아요 pbcopypbpaste.html 파일과 함께 작동합니다 그냥 텍스트 파일 될 일이 있기 때문에, 그 만입니다.
boehj 2016 년

아니요, 질문을 올바르게 이해했습니다. 도구가 제대로 작동한다고 가정했을뿐입니다. 애플은 문서화에있어 열악한 작업을 수행했지만 버그가 많으며, 그런 식으로 작동하지도 않습니다. 에 입력하면 반복 pbcopy -help할 수없는 생산할 수없는 NSLog()줄이 나타납니다 'pbcopy -help'. 이것을 이해하는 것이 프로그래머가되는 데 도움이됩니다. 그래서 나는 차임이 필요하다고 느꼈습니다.
Itai Ferber

1
네, 문제 없습니다. ;)
Itai Ferber 2018 년

1
약간의 관심을 얻기 위해 pbcopy 원하는 사람은 누구나 무료 개발자 계정을 얻을하고 몇 가지 버그 파일 수 - bugreport.apple.com를 - 그것은 도움이 될 것입니다 보장을하지만, 충분한 사람들은 여전히 관심이 있다면 이런 일에 작업 할 시간을 얻을 수있는 엔지니어 활용을 제공합니다 .
bmike

1
OP는 CLI의 AppleScript로 원하는 것을 달성 할 수 있습니까?

7

아래 기능은 단일 파일에서만 작동하며 여러 파일에서는 작동하지 않습니다. readlink실행하여 설치할 수있는 GNU 가 필요합니다 brew install findutils.

copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}

편집 : tell app "Finder"블록을 제거했습니다 .

편집 2 : 상대 경로를 지원하는 버전으로 되돌 렸습니다.


2
이것은 실제로 작동합니다!
Bemmu

6

pbcopy < filename터미널에서 명령을 실행 하면 이름이 지정된 파일의 내용이 복사됩니다 filename.


3

파일을 대상으로 복사하려면 cp명령을 사용하십시오 .

cp /path/to/file /path/to/destination

자세한 내용 man cp은 참조하십시오.


2
이것은 클립 보드를 대상 위치로 참조하는 질문에 대한 답변이 아닙니다.
kellyfj

2

간단한 Shell / Bash 스크립트는 다음과 같습니다. .bashrc파일 등으로 붙여 넣으십시오 .

file-to-clipboard() {
    if [ -z "$1" ]; then
        echo "file path/name:"
        read FILE
    else
        FILE="$1"
    fi
    pbcopy < "$FILE"
}

0

상대 파일 지원 :

clip_img() {
    osascript -e 'on run argv' \
        -e 'set currentDir to do shell script "pwd"' \
        -e 'set the clipboard to (read POSIX file (POSIX path of (currentDir as text & (first item of argv) )) as JPEG picture)' \
        -e 'end run' "/$1"
    # osascript -e 'clipboard info'
}

clip_img path-to-file이미지를 클립 보드에 복사하기 위해 실행 되며 path-to-file상대적 일 수 있습니다. 파일은 jpeg 또는 png 파일 일 수 있습니다.


-2

유닉스 환경에서 cat 'originfile'> 'destinationfile'을 사용할 수 있습니다.

Windows에서 원본 파일 대상 파일을 복사하십시오.


2
파일을 클립 보드에 어떻게 배치합니까?
grg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.