터미널을 사용할 때 명령 출력을 클립 보드에 파이프하여 다시 붙여 넣는 방법은 무엇입니까? 예를 들어 :
cat file | clipboard
apt install xclip
와cat file | xclip -sel clip
터미널을 사용할 때 명령 출력을 클립 보드에 파이프하여 다시 붙여 넣는 방법은 무엇입니까? 예를 들어 :
cat file | clipboard
apt install xclip
와cat file | xclip -sel clip
답변:
나는 항상 이것을하고 싶었고 훌륭하고 쉬운 방법을 찾았습니다. 다른 사람이 필요로하는 경우를 대비하여 완전한 절차를 작성했습니다.
먼저 다음과 같은 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
alias "cs=xclip -selection clipboard"
하고 alias "vs=xclip -o -selection clipboard"
만들기
OS X에서는 pbcopy
;를 사용하십시오 . pbpaste
반대 방향으로갑니다.
pbcopy < .ssh/id_rsa.pub
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Linux / OSX / Cygwin 용 도구를 만들었습니다.이 도구는 다른 도구와 비슷하지만 약간 독특합니다. 내가 전화를 cb
하고 그것을이 github의의 요점에서 찾을 수 있습니다 .
그 요지에서 Linux, macOS 및 Cygwin을 사용하여 명령 줄을 통해 복사하여 붙여 넣는 방법을 보여줍니다.
_copy(){
cat | xclip -selection clipboard
}
_paste(){
xclip -selection clipboard -o
}
_copy(){
cat | pbcopy
}
_paste(){
pbpaste
}
_copy(){
cat > /dev/clipboard
}
_paste(){
cat /dev/clipboard
}
참고 : 나는 원래 Bob Enohp의 답변에 대한 의견에서 이것을 언급하려고했습니다 . 그러나 나는 내 요지에 README를 추가해야한다는 것을 깨달았습니다. 요점 편집자는 Markdown 미리보기를 제공하지 않기 때문에 여기에 답 상자를 사용하고 그것을 요점 생각에 복사 / 붙여 넣은 후에 "답변을 제출할 수도 있습니다."
이 스크립트는 다음에 모델링됩니다 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
복사 / 붙여 넣기 명령에서 추측 작업을 수행하는이 작은 스크립트를 작성했습니다.
스크립트의 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
pbcopy
과 pbpaste
Linux를 사용하여 Linux와 OS X 모두에서 작동합니다.
~/.scripts/clipboard
*가 실행 확인 chmod +x ~/.scripts/clipboard
bash에 대한 * 추가 export PATH=$PATH:~/.scripts
의 말에 ~/.bashrc
물고기 : * 추가 set PATH ~/.scripts $PATH
로 ~/.config/fish/fish.config
파일이나 폴더의 단지를 만들 이미 존재하지 않을 경우.
clipboard(){ ... }
와의 .bashrc에 붙여 넣습니다
date | cb | tee -a updates.log
합니다. 그러면 date
명령 출력이 클립 보드로 전송되어 tee -a
파일에 추가 한 명령에 전달됩니다 stdout
. 그러나 " 클립 보드에 누수 방지 티 "와 같습니다 date | cb
. 출력이 없으면 출력이되지 않기 때문 입니다. 그리고 마지막으로 그것은 또한 cb > file.txt
gist.github.com/RichardBronosky/
xclip -i -selection clipboard
을 다음과 같이 수정하면 됩니다.xargs echo -n | xclip -i -selection clipboard
에 추가하십시오 ~/.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
Parcellite를 사용하고 있으며 xsel
마지막 커밋 메시지를 git
클립 보드 관리자 에게 복사하려고합니다 (어떤 이유로 xclip
작동하지 않음).
$ git log -1 --pretty=%B | xsel -i -b
외부 도구를 사용하지 않고 서버보기 SSH에 연결하는 경우 비교적 쉬운 명령입니다.
Windows 7 이상 명령 프롬프트에서 :
ssh user@server cat /etc/passwd | clip
원격 파일의 내용이 로컬 클립 보드에 저장됩니다.
(이 명령을 실행하려면 키에 대해 Pageant를 실행해야합니다. 그렇지 않으면 암호를 묻습니다.)
xclip이나 xsel을 사용하지 않고 비슷한 기능을 제공하는 작은 도구를 만들었습니다. stdout
클립 보드에 복사되고 터미널에 다시 붙여 넣을 수 있습니다. 보다:
https://sourceforge.net/projects/commandlinecopypaste/
이 도구에는 X- 세션이 필요하지 않습니다. 클립 보드는 터미널 내에서만 사용할 수 있으며 Ctrl+V다른 X- 윈도우에 붙여 넣거나 마우스 가운데 버튼을 클릭 해서는 안됩니다 .
이전 게시물을 기반으로 다음에 추가 할 수있는 다음과 같은 가벼운 무게 별칭 솔루션으로 끝났습니다 .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
벗겨진 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 -0
stdin을 단일 인수로 파이프합니다. 이 인수에 요청 "클립 보드에 복사의"를 전송 bash는 실행 파일에 전달됩니다 klipper
사용 qdbus
. 파이프 는 콘솔에 /dev/null
반환 된 줄 바꿈 문자를 인쇄하지 않는 것 qdbus
입니다.
사용법 예 :
ls | clipboard
현재 폴더의 내용이 클립 보드에 복사됩니다.
참고 : 파이프로만 작동합니다. 인수를 복사해야 할 경우 bash 실행 파일을 직접 사용하십시오 .
Wayland xcopy에서 작동하지 않는 것 같습니다 . 대신 wl-clipboard를 사용하십시오. 예를 들어 페도라
sudo dnf install wl-clipboard
tree | wl-copy
wl-paste > file
Windows 시스템 (WSL (Windows Subsystem for Linux))에 설치된 bash를 사용하는 경우 xclip을 시도하면 오류가 발생합니다.
Error: Can't open display: (null)
대신, 리눅스 서브 시스템은 Windows 실행 파일에 액세스 할 수 있습니다. 다음과 같이 clip.exe를 사용할 수 있습니다
echo hello | clip.exe
붙여 넣기 명령 (ctrl-v)을 사용할 수 있습니다.
단지 대소 문자를 다루기 위해 :) 질문 제목은 명령 출력을 클립 보드에 직접 복사하는 방법을 묻습니다.
종종 명령이 이미 실행 된 후 명령의 출력을 복사하여 명령을 다시 실행하고 싶지 않거나 실행할 수없는 경우가 종종 있습니다.
이 시나리오에서는 gdm 또는 유사한 마우스 유틸리티를 사용하고 마우스를 사용하여 선택할 수 있습니다. apt-get install gdm
그런 다음 마우스 오른쪽 버튼을 클릭하거나 Cntrl + Shift + c 및 Cntrl + Shift + v 조합을 사용하여 터미널에 복사하여 붙여 넣습니다.
또는 나에게 선호되는 방법입니다 (여러 개의 창이 나란히 있고 하나 이상의 행을 선택해야 할 때 마우스가 하나의 창 안에서 올바르게 선택할 수 없기 때문에) tmux를 사용하면 표준을 사용하여 tmux 버퍼에 복사 할 수 있습니다 [, 공백, 이동으로 선택, 입력 또는 코드 블록을 선택할 수 있습니다. 또한 이것은 tmux와 같은 CLI 멀티플렉서의 레인 중 하나에 있고 여러 줄의 텍스트를 선택해야하지만 줄 번호는 필요하지 않을 때 특히 유용합니다 (내 vim 설정은 줄 번호를 렌더링합니다)
이 후 다음 명령을 사용할 수 있습니다.
tmux 저장 버퍼-| xclip -i
물론 tmux 구성 파일에서 직접 좋아하거나 바인딩 할 수 있습니다.
이것은 명령을 다시 실행할 수 없을 때이 중요한 경우를 다루는 개념적 대답을 제공하기위한 것입니다. 더 구체적인 코드 예제가 필요하면 알려주십시오.
건배