terminal pager client/server화, Tmux를 조합하여 최강의 SQL 클라이언트로 만들기

8902 단어 GoMySQLtmuxpsqlovtech
터미널 관리자 ov의 소개ov포장을 사용하여 단말기 호출기를 다른 CLI로 client/server화ovcs하였다.
터미널 관리자client/server를 녹여도 열린 파일을 여러 사람이 보는 용도는 아니다.
고객은 서버에 대한 입력을 서버에 직접 전달한 후 종료하고 서버에서'보기'를 합니다.
Unix domain socket 을 통한 통신 및 사전 부팅
ovcs server
파이프를 통해 클라이언트에 전달되면 서버 측에 호출기가 표시됩니다.
echo "Hello World"| ovcs client

어떻게 써요?


psql 등의 결과를 호출기에 전달하는 CLI 프로그램을 통해 호출기를 ovcs client 로 설정하면 psql의 입력 표시줄은 호출기에 숨겨지지 않고 시작 ovcs server 의 한쪽에 표시됩니다.
tmux를 사용하여 Pane을 분할하면 하나의 터미널에서 psql의 입력 표시줄과 결과를 분리할 수 있습니다.
여기에서 시작 tmux 을 두 개로 나누고, 다음에 서버를 시작해서 결과를 표시합니다.
tmux
tmux split-window -v
ovcs server  # さらに -C 等 ov のオプションが使用できます。
클라이언트가 PAGER에서 지정한 경우ovcs client 호출기 사용 결과는 아래에 표시됩니다.
export PAGER='ovcs client'
psql
ovcs.gif
※ (tmux는 교체된 배경색 스타일로darkblue)
단순히 발송만 한다면 중간 중개 소프트웨어를 사용하면less도 가능하지만 ovcs에서ov큰 가방를 사용하면 다른 과정이 아니라 자동 서버화됩니다.
ov에서는 여러 파일이 지원되므로 호출기를 끄지 않고 다른 문서를 열 수 있습니다.위 비디오도 붙여넣기[] 전환 결과를 끄지 않습니다.
less도 여러 파일에 대응하지만 표준 입력은 하나이기 때문에 여러 파일만 연결해서 받아들일 수 있습니다.
ovcs 서버에서 클라이언트에 새로 연결되면 문서로 입력하고 마지막에 추가하며 디스플레이를 문서로 전환합니다.
문서의 전환은 기본 키 바인딩[으로 이전]에서 뒤로 이동할 수 있고 필요하지 않으면 닫을 수 있습니다ctrl+k.

좀 더 GUI 같아요.


GUI의 SQL 클라이언트 도구에는 왼쪽에는 테이블 일람 등이, 오른쪽 상단에는 SQL 입력 표시줄, 오른쪽 하단에는 결과 표시 표시줄이 있다.tmux로 패널을 분할하면 표시줄을 확보할 수 있습니다.
따라서 psql을 다른 세션으로 시작할 수도 있지만 ovcs-p ソケットファイル名에서 플러그인을 지정하여 시작할 수 있습니다.고객도 -p ソケットファイル名를 사용한다면 그 서버에 연결하세요.
따라서 왼쪽의 정보 표시용 호출기 서버를 시작하여 테이블 일람 등을 저쪽에 표시하고 SQL을 칠 때 결과 표시용 호출기에 표시하면 GUI와 같은 화면 구성이 완성된다.
tmux에서는 명령을 통해 조작할 수 있으며, 조개 스크립트를 미리 준비하면 명령을 한 번에 준비할 수 있다.
예를 들어 https://github.com/noborus/ovcs/blob/main/psql.sh에도 다음과 같은 스크립트가 있습니다.
psql에서 연결 후에도 \setenv PAGER를 통해 호출기를 지정할 수 있기 때문에 "\?"의 도움말과 "\d"의 표 일람표를 미리 표시합니다.
#!/bin/bash

SESSION="psql"
HELPSOCK="/tmp/ov-psql-help.sock"
OVSOCK="/tmp/ov-psql.sock"

SESSIONEXISTS=$(tmux list-sessions | grep $SESSION)
if [ "$SESSIONEXISTS" = "" ]
then
    tmux new-session -d -s $SESSION # 新しくセッションを開始
    tmux split-window -h -t $SESSION:0 # 左右に分割
    tmux resize-pane -L 50 # サイズ調整(左側の情報欄を狭めるため左に移動)
    tmux split-window -v -t $SESSION:0 # 右のpaneをさらに上下に分割
    tmux resize-pane -U 10 # サイズ調整(結果表示欄を広げるため上に移動)
    # 左側のpaneにページャーサーバー起動
    tmux send-keys -t $SESSION:0.0 "ovcs server -w=f -p $HELPSOCK" C-m 
    # 右下のpaneにページャーサーバー起動
    tmux send-keys -t $SESSION:0.2 "ovcs server -H2 -C -d'|' -p $OVSOCK" C-m
    # サーバー起動を待つ
    while [ ! -S $HELPSOCK ]
    do
	sleep 1
    done
    # シェルスクリプトのオプションを全てpsqlに渡す
    tmux send-keys -t $SESSION:0.1 "psql $*" C-m  
    # 左側のpaneのページャーに切り替え
    tmux send-keys -t $SESSION:0.1 "\setenv PAGER 'ovcs client -p $HELPSOCK'" C-m 
    # helpの表示
    tmux send-keys -t $SESSION:0.1 "\?" C-m
    # テーブル一覧  
    tmux send-keys -t $SESSION:0.1 "\d" C-m
     # 右下のpaneのページャーに切り替え
    tmux send-keys -t $SESSION:0.1 "\setenv PAGER 'ovcs client  -p $OVSOCK'" C-m 
    tmux select-pane -t $SESSION:0.1
fi

tmux attach-session -t $SESSION:0
이 스크립트를 시작하면 다음과 같습니다.
sh psql.sh sample # sampleデータベースに接続
ovcs-psql.gif
도움말, 표 이름과 이전에 실행된 SQL의 결과를 훑어보면서 SQL을 칠 수 있어 초보자들에게도 좋은 환경이다.
tmux를 사용할 때 결과[prefix + z]만 표시되고 복원[prefix + z]은 세션[prefix + d]과 세션의 재연결tmux a을 끊을 수 있기 때문에 키보드만 사용하면 쉽게 조작할 수 있는 고급자에게도 좋은 환경이다.

MySQL이라도


ovovcs는 psql 전용이 아니기 때문에 MySQL도 마찬가지로 SQL 고객 환경을 준비할 수 있다.
https://github.com/noborus/ovcs/blob/main/mysql.sh의 스크립트는 다음과 같습니다.
ovcs-mysql.gif

최후


며칠 해 보았는데 아직 좀 거칠다.
만약kill이 tmux의 세션을 처리했다면, 처리kill와 플러그인 파일의 뒷처리 rm /tmp/ov-*를 해야 합니다.

좋은 웹페이지 즐겨찾기