터미널의 탭을 여러 개 열어 작업할 때 설정하여 편리했던 것
해결하려는 과제
↑
1. 모든 디렉토리에서 프롬프트의 색상 변경
PROMPT_COMMAND
라는 쉘 변수가 있으며이 값으로 설정된 명령과 함수는 프롬프트가 표시되기 전에 실행됩니다.prompt_command_color
는 특정 디렉토리로 이동하면 프롬프트에 표시 할 Git의 분기 이름 만 색상을 변경하는 함수입니다..bash_profie
# Gitのbranchを表示
source /usr/local/etc/bash_completion.d/git-prompt.sh
source /usr/local/etc/bash_completion.d/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
# Gitのブランチ名を色付きで表示
function prompt_command_color () {
CURRENT=$(basename `pwd`)
if [ "$CURRENT" = 'directory1' ]; then
export PS1='\[\e[0;36m\][\u@\h \W]\$\[\e[0m\]\[\033[01;33m\]$(__git_ps1 [%s])\[\033[00m\]\$ '
elif [ "$CURRENT" = 'directory2' ]; then
export PS1='\[\e[0;36m\][\u@\h \W]\$\[\e[0m\]\[\033[01;38m\]$(__git_ps1 [%s])\[\033[00m\]\$ '
else
export PS1='\[\e[0;36m\][\u@\h \W]\$\[\e[0m\]\[\033[01;32m\]$(__git_ps1 [%s])\[\033[00m\]\$ '
fi
}
PROMPT_COMMAND=prompt_command_color
2. 명령 기록 공유
ht tp // 어서 th. dyn dns. rg / mt / 이안 / 아 r ゔ s / 000651. HTML
.bash_profie
# コマンド履歴の共有
function prompt_command_sync_history () {
history -a # .bash_historyに前回コマンドを1行追記
history -c # 端末ローカルの履歴を一旦消去
history -r # .bash_historyから履歴を読み込み直す
}
shopt -s histappend # .bash_history追記モードは不要なのでOFFに
HISTCONTROL=ignoreboth # コマンドの重複を防ぐ
PROMPT_COMMAND=prompt_command_sync_history
1.과 2.의 함수를 PROMPT_COMMAND로 동시에 설정한다.
1개의 함수로 정리해 가면 곧바로 할 수 있다. 그렇지만, 기능 추가할 때마다 행이 길어지고, 같은 함수로 별개의 처리가 달리기 때문에 괴롭다.
처리마다 함수를 나누어 PROMPT_COMMAND
로 설정하고 싶다. 그러나 여러 함수를 하나의 쉘 변수로 설정하는 방법을 모르겠습니다.
ぃ tp // 이 m / y07212 / ms / 9509 굳이 f6dc3b 7 7 d0c
.bash_profie
# 色を変更する関数と、履歴共有の関数をグローバルな変数に入れる
PROMPT_COMMAND_COLOR=prompt_command_color
PROMPT_COMMAND_SYNC_HISTORY=prompt_command_sync_history
# PROMPT_COMMANDに複数の関数を割り当てる関数
function dispatch () {
for f in ${!PROMPT_COMMAND_*}; do # ${!HOGE*}は、HOGEで始まる変数の一覧を得る
eval ${!f} # ${!f}は、$fに格納された文字列を名前とする変数を参照する(間接参照・間接展開)
done
}
PROMPT_COMMAND=dispatch
이런 느낌이 든다
PROMPT_COMMAND
는 프롬프트가 표시되기 전에 실행되므로 enter를 누르면 명령 기록이 공유됩니다.번외편 1 : ${!f}
h tp // 코다마. 후부키. 인후/우우/우우. c기/바 sh/치 ps?ぁg=jp
실시예 1
$ A=BBB
$ BBB=1
$ echo ${A}
BBB
$ echo ${!A} # これは eval echo \$$A や eval echo '$'$A と 同じ
1
번외편 2 : eval echo \$$A 이나 eval echo '$'$A 와 같다?
입문 UNIX 쉘 프로그래밍 - 쉘의 기초에서 배우는 UNIX 세계
실시예 2
$ A=BBB
$ BBB=1
$ echo $A
BBB
$ echo \$A
$A
$ echo $$A # $$はプロセスID(51856)
51856A
$ echo \$$A
$BBB
$ eval echo \$$A
1
$ eval echo '$'$A
1
dispatch
라는 함수로 실행하고 있다 eval ${!f}
하는 것이었다. 요약
Reference
이 문제에 관하여(터미널의 탭을 여러 개 열어 작업할 때 설정하여 편리했던 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masashi-sutou/items/bbbb71787f8b2327fae6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)