명령 출력을 클립 보드에 직접 복사하려면 어떻게해야합니까?


528

터미널을 사용할 때 명령 출력을 클립 보드에 파이프하여 다시 붙여 넣는 방법은 무엇입니까? 예를 들어 :

cat file | clipboard



: 나는 Windows에서 힘내 배쉬에서 우분투에 로그인 할 때 작업 XCLIP 얻을 수 없기 때문에 난 그냥 관련 질문을 stackoverflow.com/q/60117294/470749
라이언

1
클립 보드에 파일 내용을 저장하십시오. apt install xclipcat file | xclip -sel clip
EsmaeelE

답변:


597

나는 항상 이것을하고 싶었고 훌륭하고 쉬운 방법을 찾았습니다. 다른 사람이 필요로하는 경우를 대비하여 완전한 절차를 작성했습니다.

먼저 다음과 같은 16kB 프로그램을 설치하십시오 xclip.

sudo apt-get install xclip

그런 다음 출력을 파이프 xclip보드에 복사하여 파이프 라인에 복사 할 수 있습니다.

cat file | xclip

방금 복사 한 텍스트를 붙여 넣으려면 다음을 사용해야합니다.

xclip -o

수명을 단순화하기 위해 .bashrc 파일에 별명을 설정할 수 있습니다.

alias "c=xclip"
alias "v=xclip -o"

이것이 얼마나 유용한 지 보려면 새 터미널 창에서 현재 경로를 열고 싶다고 상상해보십시오 ( 일부 시스템에서는 Ctrl+ 와 같은 다른 방법이있을 수 T있지만 이것은 단지 설명을위한 것입니다).

Terminal 1:
pwd | c

Terminal 2:
cd `v`

` ` 주변에 주목하십시오 v. 이 v명령은 먼저 명령으로 실행 된 다음 대신 사용하도록 대체됩니다 cd.

내용을 X클립 보드 로만 복사

cat file | xclip

X응용 프로그램 이외의 다른 곳에 붙여 넣으려면 다음을 시도하십시오.

cat file | xclip -selection clipboard

144
"cat file | xclip"은 내용을 'X'클립 보드로만 복사합니다. 'X'응용 프로그램 이외의 다른 곳에 붙여 넣으려면 다음 중 하나를 시도하십시오. "cat file | xclip -selection clipboard"
khotyn

5
손잡이 선택이 적절합니다!
Matt Joiner

4
"pwd | c"의 결과를 직접 붙여넣고 편집 할 수 있도록 줄 바꿈 문자를 제거하려면 "pwd | tr -d '\ n'| xclip -selection c"
Anake

12
시스템 클립 보드에서보다 쉽게 ​​복사 / 붙여 넣기를 정의 alias "cs=xclip -selection clipboard"하고 alias "vs=xclip -o -selection clipboard"만들기
Yibo Yang

1
sudo 액세스 권한이없고 xclip이 설치되지 않은 솔루션은 어떻습니까?
DanGordon

179

OS X에서는 pbcopy;를 사용하십시오 . pbpaste반대 방향으로갑니다.

pbcopy < .ssh/id_rsa.pub

14
ps! 예를 들면 다음과 같습니다.pbcopy < .ssh/id_rsa.pub
doublejosh

명령 출력에서 ​​작동하지 않습니다. 예 :pbcopy < git merge-base master some-branch
Ben

tmux를 사용하는 경우 세션을 다시 연결하지 않으면 작동하지 않습니다. superuser.com/a/413233/146254
Atav32

1
이미 작업 한 경우 cat을 사용할 수도 있습니다. cat file.txt | pbcopy
rtrigoso 2016 년

3
나는 그 의견이 5 살이라는 것을 알고 있지만, 나중에 누군가가 이것에 우연히 들어 와서 명령 출력과 함께 사용하려면,git merge-base master some-branch | pbcopy
Sam

62

Linux / OSX / Cygwin 용 도구를 만들었습니다.이 도구는 다른 도구와 비슷하지만 약간 독특합니다. 내가 전화를 cb하고 그것을이 github의의 요점에서 찾을 수 있습니다 .

그 요지에서 Linux, macOS 및 Cygwin을 사용하여 명령 줄을 통해 복사하여 붙여 넣는 방법을 보여줍니다.

리눅스

_copy(){
    cat | xclip -selection clipboard
}

_paste(){
    xclip -selection clipboard -o
}

맥 OS

_copy(){
    cat | pbcopy
}

_paste(){
    pbpaste
}

사이 그윈

_copy(){
    cat > /dev/clipboard
}

_paste(){
    cat /dev/clipboard
}

참고 : 나는 원래 Bob Enohp의 답변에 대한 의견에서 이것을 언급하려고했습니다 . 그러나 나는 내 요지에 README를 추가해야한다는 것을 깨달았습니다. 요점 편집자는 Markdown 미리보기를 제공하지 않기 때문에 여기에 답 상자를 사용하고 그것을 요점 생각에 복사 / 붙여 넣은 후에 "답변을 제출할 수도 있습니다."

cb

클립 보드에 누수 방지 티

이 스크립트는 다음에 모델링됩니다 tee(참조 man tee).

일반적인 복사 및 붙여 넣기 명령과 같지만 통합 가능하고 체인 가능할 때 감지 할 수 있습니다.

$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017

# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017

체인

$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017

파일 리디렉션을 통해 복사

(시간순으로 이것을 시연하는 것이 합리적이었습니다)

# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00

이것은 macOS 터미널의 클립 보드에 명령 출력을 복사하는 데 완벽했습니다. 감사합니다!
Joshua Dyck

46

복사 / 붙여 넣기 명령에서 추측 작업을 수행하는이 작은 스크립트를 작성했습니다.

스크립트의 Linux 버전은 시스템에 이미 설치되어있는 xclip을 사용합니다. 스크립트를 클립 보드라고합니다.

#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if command -v xclip 1>/dev/null; then
    if [[ -p /dev/stdin ]] ; then
        # stdin is a pipe
        # stdin -> clipboard
        xclip -i -selection clipboard
    else
        # stdin is not a pipe
        # clipboard -> stdout
        xclip -o -selection clipboard
    fi
else
    echo "Remember to install xclip"
fi

스크립트의 OS X 버전은 모든 Mac에 사전 설치된 pbcopy 및 pbpaste에 의존합니다.

#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if [[ -p /dev/stdin ]] ; then
    # stdin is a pipe
    # stdin -> clipboard
    pbcopy
else
    # stdin is not a pipe
    # clipboard -> stdout
    pbpaste
fi

clipboard이 두 예제에 표시된 것처럼 단순히 파이프 인 또는 파이프 아웃하기 때문에 스크립트를 사용하는 것은 매우 간단합니다 .

$ cat file | clipboard

$ clipboard | less

3
이름 pbcopypbpasteLinux를 사용하여 Linux와 OS X 모두에서 작동합니다.
StackedCrooked

우분투에서 세계적으로 스크립트 작업을 만들려면 : * 저장을에 ~/.scripts/clipboard *가 실행 확인 chmod +x ~/.scripts/clipboard bash에 대한 * 추가 export PATH=$PATH:~/.scripts의 말에 ~/.bashrc 물고기 : * 추가 set PATH ~/.scripts $PATH~/.config/fish/fish.config 파일이나 폴더의 단지를 만들 이미 존재하지 않을 경우.
하키

2
또한 함수로이 스크립트를 래핑 할 수 clipboard(){ ... }와의 .bashrc에 붙여 넣습니다
세바스찬 노박에게

이것은 내가 만든 것과 매우 유사하지만 체인을 허용 date | cb | tee -a updates.log합니다. 그러면 date명령 출력이 클립 보드로 전송되어 tee -a파일에 추가 한 명령에 전달됩니다 stdout. 그러나 " 클립 보드에 누수 방지 티 "와 같습니다 date | cb. 출력이 없으면 출력이되지 않기 때문 입니다. 그리고 마지막으로 그것은 또한 cb > file.txt gist.github.com/RichardBronosky/
Bruno Bronosky

한 가지 제안-붙여 넣을 때 명령이 실행되지 않도록 후행 줄 바꿈 문자를 제거하십시오 (예 : 경로를 복사하여 붙여 넣는 경우). 명령 xclip -i -selection clipboard을 다음과 같이 수정하면 됩니다.xargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev

23

에 추가하십시오 ~/.bashrc:

# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'

이제 p 페이스트와 c 클립 사본을 자르십시오. 그러나보다 멋진 작업을 수행 할 수도 있습니다.

clipp | sed 's/^/    /' | cclip

↑ 클립 보드를 들여 씁니다. 스택 오버플로 { }버튼이 없는 사이트에 적합

다음을 실행하여 추가 할 수 있습니다.

printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc

사용법 예를 들어주세요
Ulf Aslak

7

Parcellite를 사용하고 있으며 xsel마지막 커밋 메시지를 git클립 보드 관리자 에게 복사하려고합니다 (어떤 이유로 xclip작동하지 않음).

$ git log -1 --pretty=%B | xsel -i -b

7

외부 도구를 사용하지 않고 서버보기 SSH에 연결하는 경우 비교적 쉬운 명령입니다.

Windows 7 이상 명령 프롬프트에서 :

ssh user@server cat /etc/passwd | clip

원격 파일의 내용이 로컬 클립 보드에 저장됩니다.

(이 명령을 실행하려면 키에 대해 Pageant를 실행해야합니다. 그렇지 않으면 암호를 묻습니다.)


1
@AfshinMoazami, 제목과 질문 자체는 일반적입니다. 태그 만 유닉스 시스템을 암시하고 제 답변은 유닉스 서버에서 Windows 시스템으로 데이트를 얻으려고 할 때 유용합니다. 이는 미래의 독자에게 유용 할 수 있습니다.
d.raev

1
Powershell 만 가지고 로컬로 게임을 할 수있는 Windows 관리자에게 유용합니다. (현재 LSW에서는 실제로 작동하지만 Powershell에서 직접 bash에 들어가서 거기에서 내 * nixy 일을 할 수 있습니다).
벼랑

창 (10)에 미치는 DOS에서 작업 프롬프트뿐만 아니라 자식 bash는 예echo Hello World | clip

5

mac의 경우 명령 줄을 사용하여 (클립 보드로) 붙여 넣기 (클립 보드에서)를 복사하는 예제 방법입니다

pwd명령 결과를 다음과 같이 클립 보드에 복사하십시오.

$ pwd | pbcopy

클립 보드의 내용을 다음과 같이 사용하십시오.

$ cd $(pbpaste)

3

xclip이나 xsel을 사용하지 않고 비슷한 기능을 제공하는 작은 도구를 만들었습니다. stdout클립 보드에 복사되고 터미널에 다시 붙여 넣을 수 있습니다. 보다:

https://sourceforge.net/projects/commandlinecopypaste/

이 도구에는 X- 세션이 필요하지 않습니다. 클립 보드는 터미널 내에서만 사용할 수 있으며 Ctrl+V다른 X- 윈도우에 붙여 넣거나 마우스 가운데 버튼을 클릭 해서는 안됩니다 .



2

이전 게시물을 기반으로 다음에 추가 할 수있는 다음과 같은 가벼운 무게 별칭 솔루션으로 끝났습니다 .bashrc.

if [ -n "$(type -P xclip)" ]
then
  alias xclip='xclip -selection clipboard'
  alias clipboard='if [ -p /dev/stdin ]; then xclip -in; fi; xclip -out'
fi

예 :

# Copy
$ date | clipboard
Sat Dec 29 14:12:57 PST 2018

# Paste
$ date
Sat Dec 29 14:12:57 PST 2018

# Chain
$ date | clipboard | wc
   1       6      29

1

벗겨진 KDE 배경에서 왔으며 xclip, xsel또는 다른 멋진 것들에 액세스 할 수 없습니다 . 문제를 악화시키기 위해 TCSH Konsole이 있습니다.

필수 조건 : qdbus klipper xargs bash

bash 실행 파일을 작성하십시오 foo.sh.

#!/bin/bash
qdbus org.kde.klipper /klipper setClipboardContents "$1" > /dev/null

참고 : TCSH는 다중 행 인수를 지원하지 않으므로 bash이어야합니다.

에 TCSH 별칭이옵니다 .cshrc.

alias clipboard xargs -0 /path/to/foo

설명:

xargs -0stdin을 단일 인수로 파이프합니다. 이 인수에 요청 "클립 보드에 복사의"를 전송 bash는 실행 파일에 전달됩니다 klipper사용 qdbus. 파이프 는 콘솔에 /dev/null반환 된 줄 바꿈 문자를 인쇄하지 않는 것 qdbus입니다.

사용법 예 :

ls | clipboard

현재 폴더의 내용이 클립 보드에 복사됩니다.

참고 : 파이프로만 작동합니다. 인수를 복사해야 할 경우 bash 실행 파일을 직접 사용하십시오 .


1

나는 보통 내 명령을 복사해야 할 때이 명령을 실행합니다 ssh-key.

cat ~/.ssh/id_rsa.pub | pbcopy

ctrl+v 다른 곳.


1

Wayland xcopy에서 작동하지 않는 것 같습니다 . 대신 wl-clipboard를 사용하십시오. 예를 들어 페도라

sudo dnf install wl-clipboard

tree | wl-copy

wl-paste > file

0

Windows 시스템 (WSL (Windows Subsystem for Linux))에 설치된 bash를 사용하는 경우 xclip을 시도하면 오류가 발생합니다.

Error: Can't open display: (null)

대신, 리눅스 서브 시스템은 Windows 실행 파일에 액세스 할 수 있습니다. 다음과 같이 clip.exe를 사용할 수 있습니다

echo hello | clip.exe

붙여 넣기 명령 (ctrl-v)을 사용할 수 있습니다.


1
xservers (예 : vcxsvr 또는 xming)가 Windows에 설치되어 있고 디스플레이가 작동 중이고 xclipboard가 실행 중이면 실제로 xclip을 사용할 필요가 없습니다.
bitbyte September

0

단지 대소 문자를 다루기 위해 :) 질문 제목은 명령 출력을 클립 보드에 직접 복사하는 방법을 묻습니다.

종종 명령이 이미 실행 된 후 명령의 출력을 복사하여 명령을 다시 실행하고 싶지 않거나 실행할 수없는 경우가 종종 있습니다.

이 시나리오에서는 gdm 또는 유사한 마우스 유틸리티를 사용하고 마우스를 사용하여 선택할 수 있습니다. apt-get install gdm그런 다음 마우스 오른쪽 버튼을 클릭하거나 Cntrl + Shift + c 및 Cntrl + Shift + v 조합을 사용하여 터미널에 복사하여 붙여 넣습니다.

또는 나에게 선호되는 방법입니다 (여러 개의 창이 나란히 있고 하나 이상의 행을 선택해야 할 때 마우스가 하나의 창 안에서 올바르게 선택할 수 없기 때문에) tmux를 사용하면 표준을 사용하여 tmux 버퍼에 복사 할 수 있습니다 [, 공백, 이동으로 선택, 입력 또는 코드 블록을 선택할 수 있습니다. 또한 이것은 tmux와 같은 CLI 멀티플렉서의 레인 중 하나에 있고 여러 줄의 텍스트를 선택해야하지만 줄 번호는 필요하지 않을 때 특히 유용합니다 (내 vim 설정은 줄 번호를 렌더링합니다)

이 후 다음 명령을 사용할 수 있습니다.

tmux 저장 버퍼-| xclip -i

물론 tmux 구성 파일에서 직접 좋아하거나 바인딩 할 수 있습니다.

이것은 명령을 다시 실행할 수 없을 때이 중요한 경우를 다루는 개념적 대답을 제공하기위한 것입니다. 더 구체적인 코드 예제가 필요하면 알려주십시오.

건배

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