Bash 스크립트의 클립보드에 연결/연결
Bash에서 클립보드에 파이프로 연결하거나 클립보드에서 파이프로 연결할 수 있습니까?
디바이스 핸들에 접속하거나 보조 어플리케이션을 사용해도 아무것도 찾을 수 없습니다.
를 들어, 「」의 ,/dev/clip
클립보드에 링크할 수 있는 장치였습니다.
cat /dev/clip # Dump the contents of the clipboard
cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
당신이 다룰 수 있는 클립보드가 많이 있습니다.X Windows의 프라이머리 클립보드에 내용을 넣고 싶은 Linux 사용자일 것입니다.일반적으로 대화하려는 클립보드에는 대화할 수 있는 유틸리티가 있습니다.
X가 가 있습니다xclip
( 타타)타 )xclip -selection c
는 대부분의 응용 프로그램에서 + , + 와 함께 작동하는 클립보드로 데이터를 전송합니다.
X를 경우 OS X가 있습니다pbcopy
를 들어, . . . . . .cat example.txt | pbcopy
모드없음)의는, 를 참조해 주세요.gpm
또는 클립보드가 있는 화면.Screen 명령어 실행readreg
.
10+ 10+ "Cygwin" 을 사용합니다./dev/clipboard
★★★★★★★★★★★★★★★★★」clip
.
하시기 바랍니다.alias xclip="xclip -selection c"
그렇지 않으면 +v를 사용하여 붙여넣을 수 없습니다.
" " 후: " "echo -n test | xclip
,v + 가 붙여넣습니다.test
설치하다
# You can install xclip using `apt-get`
apt-get install xclip
# or `pacman`
pacman -S xclip
# or `dnf`
dnf install xclip
할 수 apt-get
않다pacman
,도 아니다dnf
소스 포지에서 소스를 사용할 수 있습니다.
셋업
배쉬
»~/.bash_aliases
, 가::
alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"
「」를 사용해 새로운 말아 .. ~/.bash_aliases
또는 프로파일을 재시작합니다.
물고기.
»~/.config/fish/config.fish
, 가::
abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"
변경 사항을 적용하려면 단말기를 다시 시작하여 Fish 인스턴스를 다시 시작해야 합니다.
사용.
해서 '어울리지 않다'를 할 수 되었습니다.setclip
★★★★★★★★★★★★★★★★★」getclip
예: 개요:
$ echo foo | setclip
$ getclip
foo
macOS 에서는, 빌트인 및 커맨드를 사용합니다.
예를 들어, 실행한 경우
cat ~/.bashrc | pbcopy
의 ~/.bashrc
파일을 + 바로 가기를 사용하여 붙여넣을 수 있습니다.
현재 클립보드를 파일에 저장하려면 출력을 파일로 리디렉션합니다.
pbpaste > my_clipboard.txt
2018년 답변
clipboard-cli를 사용합니다.macOS, Windows, Linux, OpenBSD, FreeBSD, Android에서 실제 문제 없이 작동합니다.
설치 방법:
npm install -g clipboard-cli
다음 작업을 수행할 수 있습니다.
echo foo | clipboard
경우 를 붙일 수 .cb
사항을 .bashrc
,.bash_profile
, 「」.zshrc
:
alias cb=clipboard
데비안/우분투/민트의 xsel
# append to clipboard:
cat 'the file with content' | xsel -ab
# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib
# show clipboard
xsel -ob
# Get more info:
man xsel
설치하다
sudo apt-get install xsel
해라
xclip - command line interface to X selections (clipboard)
WSL(Windows Subsystem for Linux)에서는 클립보드에 복사할 수 있습니다.실행:
cat file | clip.exe
하세요.|
commandpipe 를 합니다....>
명령어를 사용합니다.
xcopy 유틸리티를 설치하고 터미널에서 다음을 입력합니다.
알았다.
Thing_you_want_to_copy | xclip -selection c
붙여넣기
myvariable=$(xclip -selection clipboard -o)
pbcopy와 pbcopy를 추천하는 답변이 많이 있었습니다.이러한 유틸리티를 사용하지만 저장소에서 사용할 수 없는 경우에는 언제든지 xcopy 명령어에 대한 별칭을 만들고 pbpaste 및 pbcopy라고 부를 수 있습니다.
alias pbcopy="xclip -selection c"
alias pbpaste="xclip -selection clipboard -o"
그러면 다음과 같이 됩니다.
Thing_you_want_to_copy | pbcopy
myvariable=$(pbpaste)
저는 더그라는 사용자가 쓴 댓글 중 하나에 있는 답변이 좋습니다.저는 그것이 매우 도움이 된다는 것을 알았기 때문에, 답변으로 다시 말하기로 했습니다.
다음은 여러 플랫폼에서 작동하는 클립보드를 읽기 위한 즉시 사용할 수 있는 Bash 스크립트입니다.
기능(플랫폼 추가 등)을 추가하는 경우는, 여기서 스크립트를 편집해 주세요.
#!/bin/bash
# WF 2013-10-04
#
# Multi-platform clipboard read access
#
# Supports
# Mac OS X
# Git shell / Cygwin (Windows)
# Linux (e.g., Ubuntu)
#
# Display an error
#
error() {
echo "error: $1" 1>&2
exit 1
}
#
# getClipboard
#
function getClipboard() {
os=`uname`
case $os in
# Git Bash (Windows)
MINGW32_NT-6.1)
cat /dev/clipboard;;
# Mac OS X
Darwin*)
pbpaste;;
# Linux
Linux*)
# Works only for the X clipboard - a check that X is running might be due
xclip -o;;
*)
error "unsupported os $os";;
esac
}
tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# Comment out for debugging
rm $tmp
Mac 전용:
echo "Hello World" | pbcopy
pbpaste
은 ★★★★★★★★★★★★★★★★★★./usr/bin/pbcopy
★★★★★★★★★★★★★★★★★」/usr/bin/pbpaste
.
Linux에는 다른 클립보드가 있습니다.X 서버에는 클립보드가 있고 윈도 매니저에는 클립보드가 있을 수 있습니다.표준 디바이스는 없습니다.
네, CLI에서는 화면 프로그램에도 자체 클립보드가 있고 Emacs나 vi 같은 다른 응용 프로그램도 있습니다.
X에서는 xclip을 사용할 수 있습니다.
이 스레드에서 기타 가능한 답변을 확인할 수 있습니다.http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html
탑재)에서는 Windows(Cygwin 재재에에)를 사용해 보세요.cat /dev/clipboard
★★★★★★★★★★★★★★★★★」echo "foo" > /dev/clipboard
이 기사에서 언급한 바와 같이
좋은 참고 자료를 찾았습니다.xclip을 사용하여 여러 선택 항목을 대상으로 하는 방법
붙여져 있는지 에, 이 클립보드에 붙여져 있는 것도 하고 .tee
이치노
echo "just a test" | tee >(xclip -i -selection clipboard)
>()
는 프로세스 치환의 한 형태입니다.Bash는 각 파일을 괄호 안에 있는 프로그램의 표준 입력에 연결된 파일 기술자의 경로로 대체합니다.
tee
명령어를 forks하면 명령어를 "콘텐츠 파이프 연결"하여 표준 출력 "stdout"에서 결과를 볼 수 있습니다.
또한 클립보드에 가져와 쓸 별칭을 만들 수 있으므로 Mac에서처럼 "pbcopy" 및 "pbpaste"를 사용할 수 있습니다.저 같은 경우에는 Z 쉘을 사용하기 때문에 (zsh
에일리어스 파일에는 다음과 같은 것이 있습니다.
(( $+commands[xclip] )) && {
alias pbpaste='xclip -i -selection clipboard -o'
alias pbcopy='xclip -selection clipboard'
}
(( $+command[name] ))
Z셸에서는 두 에일리어스가 모두 "name"으로됩니다.{}
. 。&&
는 바이너리 AND 입니다.a가 b일 경우 xclip이 있으면 에일리어스가 설정됩니다.
echo "another test" | tee >(pbcopy)
클립보드 내용을 가져오려면 다음과 같이 입력하십시오.
pbpaste | "any-command-you-need-here"
이것은 Python의 간단한 스크립트로, 필요한 것을 실행할 수 있습니다.
#!/usr/bin/python
import sys
# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'
if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
with open(clipboard_file, 'r') as c:
sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
with open(clipboard_file, 'w') as c:
c.write(sys.stdin.read())
내 파일로 이 파일은 " "에 했습니다")./usr/local/bin/clip
클립보드에 저장하기 위해 파이프에 연결할 수 있습니다.
echo "Hello World" | clip
클립보드에 있는 걸 다른 프로그램에 연결해서...
clip | cowsay
_____________
< Hello World >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
혼자서 실행하면 클립보드에 있는 내용이 출력됩니다.
방금 KDE 환경에서 동일한 내용을 검색했습니다.
롭게 하세요.clipcopy
★★★★★★★★★★★★★★★★★」clippaste
.
KDE:
> echo "TEST CLIP FROM TERMINAL" | clipcopy
> clippaste
TEST CLIP FROM TERMINAL
xsel -b
X Window에 대한 작업을 수행하며 대부분 이미 설치되어 있습니다.xsel의 man 페이지를 보는 것은 노력할 가치가 있다.
Windows(Cygwin)에서 클립보드에 복사하여 붙여넣기:
참조:
$ clip.exe -?
CLIP
Description:
Redirects output of command line tools to the Windows clipboard.
This text output can then be pasted into other programs.
Parameter List:
/? Displays this help message.
Examples:
DIR | CLIP Places a copy of the current directory
listing into the Windows clipboard.
CLIP < README.TXT Places a copy of the text from readme.txt
on to the Windows clipboard.
또한 getclip(+! 대신 사용 가능)과 putclip(에코오에우오아 | 풋클립)도 있습니다.exe를 클립에 삽입)할 수 있습니다.
Linux 에서는 다음과 같이 동작합니다.
cat filename | xclip
pbcopy는 OS X에 포함되어 있습니다.
.bash_profile 파일의 내용 복사:
cat ~/.bash_profile | pbcopy
몇 가지 방법이 있습니다.지금까지 설명한 방법으로는 (내 생각에) tmux, Screen, Vim, Emacs 및 셸이 있습니다.저는 Emacs나 Screen을 모르기 때문에 나머지 세 가지를 검토해 보겠습니다.
Tmux
X X를 통해 액세스할 수 있는 .prefix-[
)prefix
디폴트로는 + 입니다).이 모드에 사용되는 버퍼는 tmux와는 별도로 사용되기 때문에 많은 가능성이 열려 있으며 적절한 상황에서 X 선택보다 범용성이 높아집니다.
이 모드를 종료하려면 를 눌러 탐색합니다. Vim 또는 Emacs 바인딩(기본값 = Vim)을 사용합니다.hjkl
무브먼트, 무브먼트, 무브먼트용,v/V/C-v
문자/행/블록 선택 등선택사항이 있으면 을 눌러 복사하고 모드를 종료합니다.
, 「」를 사용합니다.prefix-]
.
껍데기
「」의 의 인스톨X11
두 되어 있는 것 : seems seems기기음 seems seems음음음음음 by by by by by by by by by by by by by by by by by by by by by by 。xclip
★★★★★★★★★★★★★★★★★」xsel
둘 다 처럼요.startx
★★★★★★★★★★★★★★★★★」xinit
외 의 답변은 )을 언급하고 xclip
는 정말 xsel
.xsel
.
입력 옵션 \
-a, --contains \
표준 입력을 선택 항목에 추가합니다.-i를 의미합니다.
-f, --follow \
표준 입력이 증가함에 따라 선택 항목에 추가됩니다.-i를 의미합니다.
-i, --input \
선택 항목에 대한 표준 입력을 읽습니다.
출력 옵션 \
-o, --출력 \
선택 항목을 표준 출력에 씁니다.
액션 옵션 \
-c, --clear \
선택을 지웁니다.모든 입력 옵션을 덮어씁니다.
-d, --delete \
현재 선택 항목을 삭제하도록 요청합니다.이렇게 하면 선택이 클리어될 뿐만 아니라 선택한 내용이 있는 프로그램에 대해 삭제되도록 요구됩니다.모든 입력 옵션을 덮어씁니다.
선택 옵션 \
-p, --primary \
Primary 선택 항목(기본값)에서 작동합니다.
-s, --secondary \
보조 선택 항목에서 작동합니다.
-b, --contains \
클립보드 선택 항목에서 작동합니다.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ p
아무것도)를 PRIMARY
,s
★★★★★★에SECONDARY
,b
★★★★★★에CLIPBOARD
,o
출력에 사용합니다.
:의 출력을 .foo
TTY에서 웹 페이지에 붙여 버그를 보고합니다.이를 위해서는 TTY/X 세션에서 복사하는 것이 이상적입니다.문제는 어떻게 TTY에서 클립보드에 접속하느냐는 것입니다.
예에서는 X 되어 있다고 :1
.
$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1
그러면 평소와 같이 폼에 넣을 수 있습니다.
지원 사이트의 누군가가 문제를 해결하기 위해 실행 명령을 내렸다고 가정합니다.복잡하고 길다.
$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99
피자 주문은 명령줄을 생산적으로 사용하는 것처럼 보입니다.
...다음으로 넘어갑시다.
VIM
「」로 되어 있는 .+clipboard
아!해 주세요.vim --version
), X, Vim 에 액세스 할 수 합니다.PRIMARY
★★★★★★★★★★★★★★★★★」CLIPBOARD
가지 은 2개의 선택 항목에서 수 있습니다.*
★★★★★★★★★★★★★★★★★」+
등록부는 다른 등록부와 마찬가지로 자유롭게 작성 및 열람할 수 있습니다.
예를 들어 다음과 같습니다.
:%y+ ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example
그러나 Vim 복사본이 X 선택 항목에 대한 액세스를 직접 지원하지 않는다고 해서 세상이 끝나는 것은 아닙니다.요.xsel
마지막 섹션에서 설명한 바와 같이 기술합니다.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
키 조합 몇 개를 묶으면 잘 할 수 있을 거예요.
웨이랜드에서는 xcopy가 작동하지 않는 것 같습니다.대신 wl-clipboard를 사용합니다.
예: Fedora의 경우:
sudo dnf install wl-clipboard
tree | wl-copy
wl-paste > file
몇 년 전에 작성한 Windows 프로그램입니다.클립보드를 덤프, 푸시, 추가 및 인쇄할 수 있습니다.다음과 같이 동작합니다.
dumpclip | perl -pe "s/monkey/chimp/g;" | pushclip
소스 코드 cmd_clip.zip이 포함되어 있습니다.
어제 저는 "다른 사용자 세션 간에 클립보드를 공유하는 방법"이라는 질문을 받았습니다.+ + - + + 를 사용하여 세션을 전환할 때 복사한 내용을 붙여넣을 수 없습니다.
저는 명명된 파이프를 기반으로 다음과 같은 빠르고 더러운 해결책을 생각해냈습니다.확실히 날것이지만, 기능하고 있는 것을 알 수 있었습니다.
user1@host:~$ mkfifo /tmp/sharedClip
송신 단말기로 송신합니다.
user1@host:~$ cat > /tmp/sharedClip
수신 단말기의 마지막:
user2@host:~$ cat /tmp/sharedClip
여기서 첫 번째 단말기에 원하는 것을 입력 또는 붙여넣으면 (키를 누른 후) 수신 단말기에 바로 나타나 원하는 위치에 복사 및 붙여넣기를 다시 수행할 수 있습니다.
물론 user1의 클립보드에서 콘텐츠를 엄밀하게 가져와 user2의 클립보드에서 사용할 수 있게 하는 것은 물론 붙여넣기 및 복사 클릭을 한 쌍 더 필요로 합니다.
에서는, 할 가 없는 .gclip
/xclip
/xsel
서드파티제 소프트웨어
Perl 스크립트(통상은 Perl이 항상 설치되어 있기 때문에)
use Win32::Clipboard;
print Win32::Clipboard::GetText();
Ruby oneliner는 Python을 사용해 볼 수 있도록 영감을 주었습니다.
클립보드에 공백이 4개 있는 명령어가 필요하다고 가정해 보겠습니다.Stack Overflow 상의 스니펫 공유에 매우 적합합니다.
$ pbpaste | python -c "import sys
for line in sys.stdin:
print(f' {line}')" | pbcopy
오타가 아니에요.Python은 for 루프를 하기 위해 새로운 행이 필요합니다.메모리 내 추가 배열을 방지하기 위해 한 패스로 라인을 변경하고자 합니다.
추가 어레이를 구축해도 괜찮다면 다음을 시도해 보십시오.
$ pbpaste | python -c "import sys; print(''.join([f' {l}' for l in sys.stdin]))" | pbcopy
은 제가 쓰던 가명으로 했습니다.~/.bashrc
alias indent="pbpaste | awk '{print \" \"\$0}' | pbcopy"
시 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」indent
클립보드에 있는 내용은 모두 들여쓰기되어 있습니다.
macOS 를 합니다.pbpaste
.
예를 들어 다음과 같습니다.
클립보드 업데이트
pbpaste | ruby -ne ' puts "\|" + $_.split( )[1..4].join("\|") ' | pbcopy
하지 않고 에 붙여넣는 (「 」 「 」 「 」 「 」 「 」 「 」 「 」 「 」 。echo
.
- 이스케이프: .
'
'\''
이치노 - 「」라고 입력합니다.
echo -n '
- + 를 누릅니다.
- 「」라고 입력합니다.
' > filename.txt
- 누르다
기본적으로 다음과 같은 작업을 수행합니다.
echo -n 'copied "text" with '\''single quotes'\'' escaped' > filename.txt
복사된 텍스트에 새 줄이 있더라도 작동합니다.
mac의 경우 다음과 같은 기능을 사용할 수 있습니다.pbcopy
★★★★★★★★★★★★★★★★★」pbpaste
쉬워요: ,, 조, 조, 조, 조, 단, 단, 단, 단이다.
도 이걸 더해서 쓰세요..bashrc
★★★★★★★★★★★★★★★★★」.zshrc
:
clp() {
if [[ -z "$1" ]]
then
# No input - act as paste
pbpaste;
else
# Input exists - act as copy
echo "$1" | pbcopy;
fi
}
하려면 , 「」를 사용합니다.clp "Content"
, 「붙여 주세요」를 합니다.clp
저와 마찬가지로 루트 권한이 없는 Linux 서버에서 실행 중이고 xclip 또는 GPM이 없는 경우 임시 파일만 사용하여 이 문제를 해결할 수 있습니다.예를 들어 다음과 같습니다.
$ echo "Hello, World!" > ~/clip
$ echo `cat ~/clip`
Hello, World!
언급URL : https://stackoverflow.com/questions/749544/pipe-to-from-the-clipboard-in-a-bash-script
'programing' 카테고리의 다른 글
텍스트 블록텍스트랩핑이 랩핑 (0) | 2023.04.12 |
---|---|
문자열을 한 줄의 목록으로 변환하시겠습니까? (0) | 2023.04.12 |
공백으로 구분된 문자열을 Bash에서 배열로 읽기 (0) | 2023.04.12 |
개체 목록에 특정 속성 값을 가진 개체가 포함되어 있는지 확인합니다. (0) | 2023.04.12 |
코드를 사용하여 데스크톱의 벽지를 변경합니다.그물 (0) | 2023.04.12 |