TMUX 명령어 자동 완성 설정하기

Tmux 명령어의 자동완성 기능을 사용하는 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.


[LINUX] TMUX 명령어 자동 완성 설정하기
Tmux Logo

Tmux 명령어의 자동완성 기능을 사용하는 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
리눅스의 bash shell에서 tmux 명령어 자동 완성 기능을 사용하기 위해 설정합니다.

bash-completion 패키지를 먼저 설치해야 하며, 아래 작성된 매뉴얼을 통해 알아봅니다.


실습 환경

  • 운영 체제(OS) : CentOS 8
  • 실행 계정 : root

사전 작업 참조하기

[리눅스] CentOS 8 리눅스 명령어 자동 완성 설정하기


tmux bash completion 파일 생성하기

vi를 사용해서 tmux 파일을 열어서 편집합니다.

[vi /etc/bash_completion.d/tmux]

tmux 명령어 자동 완성 기능을 사용하기 위해 아래 내용을 입력합니다.

[#!/usr/bin/env bash # START tmux completion function _tmux_complete_client() { local IFS=$'\n' local cur="${1}" && shift COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux "$@" list-clients -F '#{client_tty}' 2> /dev/null)" -- "${cur}") ) options="" return 0 } function _tmux_complete_session() { local IFS=$'\n' local cur="${1}" && shift COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux "$@" list-sessions -F '#{session_name}' 2> /dev/null)" -- "${cur}") ) options="" return 0 } function _tmux_complete_window() { local IFS=$'\n' local cur="${1}" && shift local session_name="$(echo "${cur}" | sed 's/\\//g' | cut -d ':' -f 1)" local sessions sessions="$(tmux "$@" list-sessions 2> /dev/null | sed -re 's/([^:]+:).*$/\1/')" if [[ -n "${session_name}" ]]; then sessions="${sessions} $(tmux "$@" list-windows -t "${session_name}" 2> /dev/null | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')" fi cur="$(echo "${cur}" | sed -e 's/:/\\\\:/')" sessions="$(echo "${sessions}" | sed -e 's/:/\\\\:/')" COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${sessions}" -- "${cur}") ) options="" return 0 } function _tmux_complete_socket_name() { local IFS=$'\n' local cur="${1}" && shift COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(find /tmp/tmux-$UID -type s -printf '%P\n')" -- "${cur}") ) options="" return 0 } function _tmux_complete_socket_path() { local IFS=$'\n' local cur="${1}" && shift COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(find /tmp/tmux-$UID -type s -printf '%p\n')" -- "${cur}") ) options="" return 0 } __tmux_init_completion() { COMPREPLY=() _get_comp_words_by_ref cur prev words cword } _tmux() { local cur prev words cword; if declare -F _init_completion >/dev/null 2>&1; then _init_completion else __tmux_init_completion fi local index=1 # Check tmux options that will change completion for: # - available sessions # - available windows # - ... local argv=( "${words[@]:1}" ) local OPTIND OPTARG OPTERR=0 flag tmux_args=() while getopts "L:S:" flag "${argv[@]}"; do case "$flag" in L) tmux_args+=(-L "$OPTARG") ;; S) tmux_args+=(-S "$OPTARG") ;; *) ;; esac done # Completed -- have a space after if [[ ${#words[@]} -gt $OPTIND ]]; then local tmux_argc=${#tmux_args[@]} (( index+=tmux_argc )) (( cword-=tmux_argc )) fi if [[ $cword -eq 1 ]]; then COMPREPLY=($( compgen -W "$(tmux start\; list-commands | cut -d' ' -f1)" -- "$cur" )); return 0 else case ${words[index]} in -L) _tmux_complete_socket_name "${cur}" ;; -S) _tmux_complete_socket_path "${cur}" ;; attach-session|attach) case "$prev" in -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;; *) options="-t -d" ;; esac ;; detach-client|detach) case "$prev" in -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; lock-client|lockc) case "$prev" in -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; lock-session|locks) case "$prev" in -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;; *) options="-t -d" ;; esac ;; new-session|new) case "$prev" in -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;; -[n|d|s]) options="-d -n -s -t --" ;; *) if [[ ${COMP_WORDS[option_index]} == -- ]]; then _command_offset ${option_index} else options="-d -n -s -t --" fi ;; esac ;; refresh-client|refresh) case "$prev" in -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; rename-session|rename) case "$prev" in -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; has-session|has|kill-session) case "$prev" in -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; source-file|source) _filedir ;; suspend-client|suspendc) case "$prev" in -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; switch-client|switchc) case "$prev" in -c) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;; -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;; *) options="-l -n -p -c -t" ;; esac ;; send-keys|send) case "$option" in -t) _tmux_complete_window "${cur}" "${tmux_args[@]}" ;; *) options="-t" ;; esac ;; esac # case ${cmd} fi # command specified if [[ -n "${options}" ]]; then COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${options}" -- "${cur}") ) fi return 0 } # http://linux.die.net/man/1/bash complete -F _tmux tmux # END tmux completion]

tmux bash completion 적용하기

source 명령을 사용해서 tmux 파일 내용을 적용합니다.

[source /etc/bash_completion.d/tmux]

  • [message]
    • ##info-circle## 참조하기!
      • 실시간 적용을 위해 source 명령을 사용했으며, 이후 로그인 시 자동으로 적용됩니다.

tmux 명령어 뒤에 Tab 키 입력으로 명령어 자동 완성 확인하기

[root@RunIT ~]# tmux attach-session clock-mode display-panes kill-window list-panes move-window previous-window rotate-window set-buffer show-messages swap-window bind-key command-prompt find-window last-pane list-sessions new-session refresh-client run-shell set-environment show-options switch-client break-pane confirm-before has-session last-window list-windows new-window rename-session save-buffer set-hook show-window-options unbind-key capture-pane copy-mode if-shell link-window load-buffer next-layout rename-window select-layout set-option source-file unlink-window choose-buffer delete-buffer join-pane list-buffers lock-client next-window resize-pane select-pane set-window-option split-window wait-for choose-client detach-client kill-pane list-clients lock-server paste-buffer resize-window select-window show-buffer start-server choose-tree display-menu kill-server list-commands lock-session pipe-pane respawn-pane send-keys show-environment suspend-client clear-history display-message kill-session list-keys move-pane previous-layout respawn-window send-prefix show-hooks swap-pane

마무리

tmux 명령어 입력 후 Tab키 입력 시 자동 완성 옵션이 표시되는 것을 확인 할 수 있습니다.
tmux 명령어를 사용하기 편하도록 명령어 자동 완성 사용 방법을 알아보고 쉽게 사용할 수 있습니다.

COMMENTS

이름

가상 머신 생성,1,가상 머신 자동 시작,2,그라파나 비밀번호 초기화,1,데이터베이스 설치,1,리눅스 메모리,1,리눅스 명령어 자동 완성,2,리눅스 백업,1,리눅스 설치,1,리눅스 시스템 언어,1,리눅스 언어 설정,1,리눅스 원격 명령 실행,1,리눅스 프로세스,1,리눅스 한글 설정,1,리눅스 LOCALE,1,리버스 프록시,1,맥북,1,메모리,1,모바일 리다이렉션,1,모바일 페이지,1,백업 스크립트,1,버추얼박스 설치,1,보안 취약점,1,사설 인증서,1,서버 관리,2,소스 컴파일,1,슬랙 사용법,1,슬랙 시작,1,슬랙 초보자 가이드,1,엔진엑스 설치,1,원격 데스크톱 연결,1,웹 접속 제한,1,윈도우 비밀번호 초기화,1,윈도우 전원 옵션,1,윈도우 PATH,1,이미지 압축,1,이미지 용량 줄이기,1,인증서 생성,1,인증서 설치,1,자동 로그인,1,자빅스 한글,1,자체 서명,1,점검 스크립트,1,젠서버 설치,1,커널 삭제,1,콘솔 파란색 설정,1,클립보드 공유,1,파이썬 설치,1,파일 업로드 제한,1,프로세스 관리,1,프로세스 오류,1,한국어 설정,1,한글 설정,1,한영 전환,1,호스트 전용 네트워크,1,ADMIN 초기화,1,APACHE,1,APPLICATIONS,16,Big Sur,1,CentOS,4,CentOS 6,9,CentOS 7,4,CentOS 8,21,CentOS 8 설치,1,CentOS 설치 이미지 다운로드,1,CentOS ISO Download,1,CentOS-Base.repo,1,Citrix Hypervisor,2,DATABASES,1,dnf install httpd,1,DROPPING PACKET,1,GRAFANA,1,htpasswd,1,HTTP 기본 인증,2,HTTPS,1,IPTABLES,1,ISMS,1,ISO 저장소,1,JENNIFER,1,jennifer_admintool,1,jpg smaller,1,LINUX,29,macOS,2,MariaDB,1,MONITORING,3,NF_CONNTRACK,1,NGINX,9,NGINX 설치,1,NGINX SSL 설정,1,openssl 인증서 생성,1,pam 인증,1,passwd,1,PHP,1,PHP-FPM 설치,1,PuTTY,1,PYTHON,1,RSYNC,1,SFTP,1,Shift + Space 한영 전환,1,SLACK,2,slack 사용법,1,SSH 인증,1,SSH 자동 로그인,2,SSHPASS,3,SSL 경고 로그,1,SSL 인증서,1,su,1,SWAP,1,TABLE FULL,1,TABLEAU,1,tinypng,1,TIP,1,TMUX,3,TMUX 설치,2,useradd,1,userdel,1,VirtualBox,4,VIRTUALIZATION,7,VM,3,VMware,1,VMware 무료 라이센스,1,Vmware Fusion,1,wheel 그룹,1,WINDOWS,7,Windows 10,7,XCP-ng,2,XenServer,4,YUM,1,ZABBIX,1,
ltr
item
시스템 엔지니어의 세상: TMUX 명령어 자동 완성 설정하기
TMUX 명령어 자동 완성 설정하기
Tmux 명령어의 자동완성 기능을 사용하는 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHiLPylb9G2-f5Z1U0N5rPGgvLB1vG9McCLNv9J6Dfq_6xCw3kI8Psft7AbwSTu9Uz-wP7ig59dEMsPWu9yiikvTCZjO_-yxwsoBy0xb06PAMttz8hcWByT0CVxbjP6RyGF9gAfj33BY/s1600/tmux-logo-medium.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHiLPylb9G2-f5Z1U0N5rPGgvLB1vG9McCLNv9J6Dfq_6xCw3kI8Psft7AbwSTu9Uz-wP7ig59dEMsPWu9yiikvTCZjO_-yxwsoBy0xb06PAMttz8hcWByT0CVxbjP6RyGF9gAfj33BY/s72-c/tmux-logo-medium.png
시스템 엔지니어의 세상
https://www.runit.cloud/2020/04/tmux-bash-completion.html
https://www.runit.cloud/
https://www.runit.cloud/
https://www.runit.cloud/2020/04/tmux-bash-completion.html
true
7559506062450536879
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content