xclip으로 터미널에서 클립보드 활용하기
들어가며: 리눅스의 CLI 클립보드 도구 X클립(XClip)
GUI 환경과 CLI 환경 사이에서 정보를 공유하는 것은 생각보다 간단하지 않은 일입니다. 하지만 CLI 환경에서 작업할 일이 많은 프로그래머라면 이 두 환경의 정보를 적절하게 공유할 수 있어야 작업 효율도 따라서 올라가게 됩니다. 이 글에서는 리눅스에서 X클립XClip을 통해서 터미널 환경의 문자열을 리눅스 GUI 환경의 클립보드로 복사하는 법과 티먹스Tmux의 복사 모드와 X클립을 연동하는 방법에 대해 소개합니다.
X클립(Xclip) 설치
우분투Ubuntu에서 X클립은 아래 명령어로 설치할 수 있습니다.
$ apt-get install -y xclip
정상적으로 설치가 되었는지 확인해봅니다.
$ xclip -version
xclip version 0.12
Copyright (C) 2001-2008 Kim Saunders et al.
Distributed under the terms of the GNU GPL
버전 정보가 출력되는 것을 확인할 수 있습니다.
X클립으로 복사하기
X클립의 기본적인 사용법은 간단합니다. 리눅스 커맨드의 출력 결과를 파이프라인으로 넘겨주면 X클립이 그 결과를 GUI의 클립보드에 저장해줍니다. 예를 들어 date
명령어를 사용하면 아래와 같이 출력됩니다.
$ date
Tue Jul 29 23:35:59 KST 2014
터미널 어플리케이션마다 약간의 차이는 있지만 보통 이러한 출력을 복사하기 위해서는 마우스로 문자열을 선택하고 복사를 하거나 그것도 잘 안 되면 마우스 오른쪽 버튼을 눌러서 컨텍스트 메뉴에서 복사하기를 클릭해야합니다.
date
의 출력을 xclip
으로 복사하고자 한다면 다음 명령어를 실행합니다.
$ date | xclip -selection clipboard
$
복사가 잘 되었는지 GUI 에디터에서 Ctrl + v 로 복사해보겠습니다.

붙여넣기가 정상적으로 이루어집니다. 표준 출력의 내용을 파이프로 넘겨주기만 하면 복사가 이뤄지므로 훨씬 더 다양한 활용이 가능합니다. 예를 들어 시스템 정보를 출력해서 바로 클립보드로 보낼 수도 있고, cat
과 함께 사용하면 아주 긴 파일을 곧바로 클립보드로 보낼 수도 있습니다.
$ cat /var/log/syslog | xclip -selection clipboard
이를 통해 클립보드가 훨씬 더 강력해질 것입니다. 매번 긴 옵션을 입력하는 것은 번거로우므로 셸의 별칭 기능을 사용하면 더 편리하게 사용할 수 있습니다. 자신이 사용하는 셸 설정 파일(Zsh이라면 ~/.zshrc
)에 다음 내용을 추가해줍니다.
alias copy='xclip -selection clipboard'
이제 copy
라는 별칭으로 표준출력의 내용을 복사할 수 있습니다.
$ cat /var/log/syslog | copy
X클립의 사용 시 주의사항
몇몇 예제에서는 -selection clipboard
옵션 없이 X클립을 사용하기도 하는데 이렇게 사용할 때는 조심할 필요가 있다. X11의 클립보드는 하나가 아닙니다. 위의 옵션을 명시적으로 주지 않아도 복사가 이루어집니다.
$ date | xclip
$
분명히 정상적으로 복사되었지만 아마 일반적으로 Ctrl + v 키로 복사한 내용을 가져오지 못 할 것입니다. 이렇게 복사한 경우 마우스 가운데 버튼을 통해서 복사한 내용을 가져올 수 있습니다.
X클립으로 붙여넣기
GUI 클립보드의 내용을 표준 출력에 출력하고자 할 때는 -o
옵션을 사용합니다. 클립보드에 문자열 Hello!
라는 문자열이 복사되어있는 경우, 다음과 같이 출력됩니다.
$ xclip -o
Hello!
티먹스(Tmux)와 연동하기
티먹스Tmux는 다수의 셸을 동시에 띄워놓고 사용할 수 있도록 해주는 도구입니다. 티먹스에서는 복사 모드Copy Mode로 텍스트를 복사할 수 있습니다. 티먹스의 복사 모드에서는 빔Vim이나 이맥스Emacs 모드로 단축키를 사용할 수 있습니다. 이 설정은 ~/.tmux.conf
파일에 아래 옵션을 통해서 설정할 수 있습니다.
빔 모드를 사용하고자 하면 아래와 같이 설정합니다.
set-window-option -g mode-keys vi
이맥스 모드를 사용하고자 하면 아래와 같이 설정합니다.
set-window-option -g mode-keys emacs
이제 복사모드를 사용해보겠습니다. 티먹스 내에서 복사 모드는 ^b [
키로 시작하고, ^b ]
로 종료합니다. 복사 모드 내에서도 빔Vim이나 이맥스Emacs 모드에 따라서 아래의 단축키들을 사용할 수 있습니다.
Function vi emacs
Back to indentation ^ M-m
Clear selection Escape C-g
Copy selection Enter M-w
Cursor down j Down
Cursor left h Left
Cursor right l Right
Cursor to bottom line L
Cursor to middle line M M-r
Cursor to top line H M-R
Cursor up k Up
Delete entire line d C-u
Delete to end of line D C-k
End of line $ C-e
Goto line : g
Half page down C-d M-Down
Half page up C-u M-Up
Next page C-f Page down
Next word w M-f
Paste buffer p C-y
Previous page C-b Page up
Previous word b M-b
Quit mode q Escape
Scroll down C-Down or J C-Down
Scroll up C-Up or K C-Up
Search again n n
Search backward ? C-r
Search forward / C-s
Start of line 0 C-a
Start selection Space C-Space
Transpose chars C-t
예를 들어 이맥스 모드에서는 Ctrl+Space로 필요한 영역을 선택한 후 M-w를 키로 해당 영역을 복사할 수 있습니다.
단, 복사 모드에서 복사한 텍스트가 GUI의 클립보드에 저장되지는 않습니다. 복사 모드에서 복사한 문자열을 자동적으로 클립보드에 저장하기 위해서는 X클립을 사용해야합니다. 다음 설정을 ~/.tmux.conf
에 추가해줍니다.
bind-key -t emacs-copy M-w copy-pipe "xclip -i -selection clipboard"
설정을 추가했으면 설정 파일을 아래와 같이 리로드하거나 티먹스 서버를 재실행합니다.
$ tmux source-file ~/.tmux.conf
이제 티먹스 복사 모드에서 복사한 내용이, 자동적으로 클립보드에도 저장됩니다.