IT박스

터미널에서 현재 분기 및 폴더 경로를 표시하려면 어떻게해야합니까?

itboxs 2020. 12. 3. 07:41
반응형

터미널에서 현재 분기 및 폴더 경로를 표시하려면 어떻게해야합니까?


저는 Team Treehouse 비디오 중 일부를보고 있는데 Git으로 작업 할 때 매우 멋진 터미널을 가지고 있습니다.

예를 들어 (유사한 것) :

mike@treehouseMac: [/Work/test - feature-branch-name] $ git add .
mike@treehouseMac: [/Work/test - feature-branch-name] $ git commit -m "Some feature."
mike@treehouseMac: [/Work/test - feature-branch-name] $ git checkout master
mike@treehouseMac: [/Work/test - master] $ git status

내 터미널은 내가 원하는 데이터의 비트를 구별하는 색상으로 내가 속한 분기에 대한 유용한 정보를 어떻게 표시 할 수 있습니까? 아직 찾지 못한 사실상의 플러그인이 있습니까?

Mac OSX 10.8을 사용하고 있습니다.


플러그인에 관한 것이 아닙니다. 쉘의 신속한 트릭에 관한 것입니다.

bash에서 멋진 설정을 보려면 dotfiles이 사람 프로젝트를 확인하십시오 .

https://github.com/mathiasbynens/dotfiles

멋진 프롬프트를 얻으 .bash_prompt려면 ~/.bash_profile또는 ~/.bashrc.

질문에서와 똑같은 프롬프트를 얻으려면 다음 과 같이 export PS1끝의 줄을 변경하십시오 .bash_prompt.

export PS1="\[${BOLD}${MAGENTA}\]\u\[$WHITE\]@\[$ORANGE\]\h\[$WHITE\]: [\[$GREEN\]\w\[$WHITE\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" - \")\[$PURPLE\]\$(parse_git_branch)\[$WHITE\]] \$ \[$RESET\]"

.bash*한 달 전에이 저장소의 모든 파일을 사용 하게되었고, 정말 유용했습니다.

Git의 경우 .gitconfig.

Mac 사용자이기 때문에 .osx.


간단한 방법

~/.bash_profile좋아하는 편집기에서 열고 아래에 다음 내용을 추가하십시오.

프롬프트에서 Git 분기.

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \[\033[32m\]\w - \$(parse_git_branch)\[\033[00m\] $ "

터미널 프롬프트 (MAC)에 GIT 지점 이름 추가


기존의 훌륭한 답변을 확장하려면 멋진 터미널을 얻는 매우 간단한 방법은 오픈 소스 Dotfiles 프로젝트 를 사용하는 것 입니다.

https://github.com/mathiasbynens/dotfiles


여기에 이미지 설명 입력


OSX 및 Linux에서 설치는 매우 간단합니다. 터미널에서 다음 명령을 실행하십시오.

git clone https://github.com/mathiasbynens/dotfiles.git && cd dotfiles && source bootstrap.sh

이것은 다음과 같이 될 것입니다.

  1. 힘내는 저장소를 복제합니다.
  2. cd 폴더에.
  3. 설치 bash 스크립트를 실행하십시오.

내 프롬프트에는 다음이 포함됩니다.

  • 마지막 명령의 종료 상태 (0이 아닌 경우)
  • 뿌리를 내릴 때의 독특한 변화
  • rsync- user@host:pathname복사-붙여 넣기를위한 스타일
  • Git 브랜치, 인덱스, 수정, 추적되지 않은 및 업스트림 정보
  • 예쁜 색상

예 : 내 프롬프트의 스크린 샷이렇게하려면 다음을 추가하십시오 ~/.bashrc.

#
# Set the prompt #
#

# Select git info displayed, see /usr/share/git/completion/git-prompt.sh for more
export GIT_PS1_SHOWDIRTYSTATE=1           # '*'=unstaged, '+'=staged
export GIT_PS1_SHOWSTASHSTATE=1           # '$'=stashed
export GIT_PS1_SHOWUNTRACKEDFILES=1       # '%'=untracked
export GIT_PS1_SHOWUPSTREAM="verbose"     # 'u='=no difference, 'u+1'=ahead by 1 commit
export GIT_PS1_STATESEPARATOR=''          # No space between branch and index status
export GIT_PS1_DESCRIBE_STYLE="describe"  # detached HEAD style:
#  contains      relative to newer annotated tag (v1.6.3.2~35)
#  branch        relative to newer tag or branch (master~4)
#  describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
#  default       exactly eatching tag

# Check if we support colours
__colour_enabled() {
    local -i colors=$(tput colors 2>/dev/null)
    [[ $? -eq 0 ]] && [[ $colors -gt 2 ]]
}
unset __colourise_prompt && __colour_enabled && __colourise_prompt=1

__set_bash_prompt()
{
    local exit="$?" # Save the exit status of the last command

    # PS1 is made from $PreGitPS1 + <git-status> + $PostGitPS1
    local PreGitPS1="${debian_chroot:+($debian_chroot)}"
    local PostGitPS1=""

    if [[ $__colourise_prompt ]]; then
        export GIT_PS1_SHOWCOLORHINTS=1

        # Wrap the colour codes between \[ and \], so that
        # bash counts the correct number of characters for line wrapping:
        local Red='\[\e[0;31m\]'; local BRed='\[\e[1;31m\]'
        local Gre='\[\e[0;32m\]'; local BGre='\[\e[1;32m\]'
        local Yel='\[\e[0;33m\]'; local BYel='\[\e[1;33m\]'
        local Blu='\[\e[0;34m\]'; local BBlu='\[\e[1;34m\]'
        local Mag='\[\e[0;35m\]'; local BMag='\[\e[1;35m\]'
        local Cya='\[\e[0;36m\]'; local BCya='\[\e[1;36m\]'
        local Whi='\[\e[0;37m\]'; local BWhi='\[\e[1;37m\]'
        local None='\[\e[0m\]' # Return to default colour

        # No username and bright colour if root
        if [[ ${EUID} == 0 ]]; then
            PreGitPS1+="$BRed\h "
        else
            PreGitPS1+="$Red\u@\h$None:"
        fi

        PreGitPS1+="$Blu\w$None"
    else # No colour
        # Sets prompt like: ravi@boxy:~/prj/sample_app
        unset GIT_PS1_SHOWCOLORHINTS
        PreGitPS1="${debian_chroot:+($debian_chroot)}\u@\h:\w"
    fi

    # Now build the part after git's status

    # Highlight non-standard exit codes
    if [[ $exit != 0 ]]; then
        PostGitPS1="$Red[$exit]"
    fi

    # Change colour of prompt if root
    if [[ ${EUID} == 0 ]]; then
        PostGitPS1+="$BRed"'\$ '"$None"
    else
        PostGitPS1+="$Mag"'\$ '"$None"
    fi

    # Set PS1 from $PreGitPS1 + <git-status> + $PostGitPS1
    __git_ps1 "$PreGitPS1" "$PostGitPS1" '(%s)'

    # echo '$PS1='"$PS1" # debug    
    # defaut Linux Mint 17.2 user prompt:
    # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\] $(__git_ps1 "(%s)") \$ '
}

# This tells bash to reinterpret PS1 after every command, which we
# need because __git_ps1 will return different text and colors
PROMPT_COMMAND=__set_bash_prompt

시스템에 설치된 git 패키지에는 정보 프롬프트를 만드는 데 도움이되는 bash 파일이 포함되어 있습니다. 색을 만들려면 프롬프트에 터미널 이스케이프 시퀀스를 삽입해야합니다. 그리고 마지막 요소는 내장 변수 PROMPT_COMMAND를 사용하여 각 명령이 실행 된 후 프롬프트를 업데이트하는 것입니다.

Edit your ~/.bashrc to include the following, and you should get the prompt in your question, modulo some color differences.

#
# Git provides a bash file to create an informative prompt. This is its standard
# location on Linux. On Mac, you should be able to find it under your Git
# installation. If you are unable to find the file, I have a copy of it on my GitHub.
#
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-git-prompt.sh
#
source /usr/share/git/completion/git-prompt.sh

#
# Next, we need to define some terminal escape sequences for colors. For a fuller
# list of colors, and an example how to use them, see my bash color file on my GitHub
# and my coniguration for colored man pages.
#
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/10-colors.sh
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-less.sh
#
color_start='\e['
color_end='m'
color_reset='\e[0m'
color_bg_blue='44'

#
# To get a fancy git prompt, it's not sufficient to set PS1. Instead, we set PROMPT_COMMAND,
# a built in Bash variable that gets evaluated before each render of the prompt.
#
export PROMPT_COMMAND="PS1=\"\${color_start}\${color_bg_blue}\${color_end}\u@\h [\w\$(__git_ps1 \" - %s\")]\${color_reset}\n\$ \""

#
# If you find that the working directory that appears in the prompt is ofter too long,
# then trim it.
#
export PROMPT_DIRTRIM=3

Just Install the oh-my-zsh plugins as described in this link.

여기에 이미지 설명 입력

It works best on macOS and Linux.

Basic Installation

Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the command-line with either curl or wget.

via curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

via wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

There are many PS1 generators but ezprompt has the git status (2nd tab 'Status Elements' ) also.


Based on 6LYTH3's answer I've decided to post my own due to some improvements that may come in handy:

Simple solution

Open ~/.bash_profile and add the following content

# \[\e[0m\] resets the color to default color
reset_color='\[\e[0m\]'
#  \[\033[33m\] sets the color to yellow
path_color='\[\033[33m\]'
# \e[0;32m\ sets the color to green
git_clean_color='\[\e[0;32m\]'
# \e[0;31m\ sets the color to red
git_dirty_color='\[\e[0;31m\]'

# determines if the git branch you are on is clean or dirty
git_prompt ()
{
  # Is this a git directory?
  if ! git rev-parse --git-dir > /dev/null 2>&1; then
    return 0
  fi
  # Grab working branch name
  git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
  # Clean or dirty branch
  if git diff --quiet 2>/dev/null >&2; then
    git_color="${git_clean_color}"
  else
    git_color="${git_dirty_color}"
  fi
  echo " [$git_color$git_branch${reset_color}]"
}

export PS1="${path_color}\w\[\e[0m\]$(git_prompt)\n"

This should:

1) Prompt the path you're in, in color: path_color.
2) Tell you which branch are you.
3) Color the name of the branch based on the status of the branch with git_clean_color 
for a clean work directory and git_dirty_color for a dirty one.
4) The brackets should stay in the default color you established in your computer.
5) Puts the prompt in the next line for readability.

You can customize the colors with this list

정교한 솔루션

또 다른 옵션은 Git Bash Prompt를 사용 하여이 . Mac OS X에서 Homebrew를 통해 옵션을 사용했습니다.

git_prompt_list_themes 테마를 보려고했지만 마음에 들지 않았습니다.

git_prompt_color_samples 사용 가능한 색상을 확인합니다.

git_prompt_make_custom_theme [<Name of base theme>] 새 사용자 지정 테마를 만들려면 .git-prompt-colors.sh 파일을 만들어야합니다.

subl ~/.git-prompt-colors.sh git-prompt-colors.sh를 열고 사용자 정의하려면 다음을 수행하십시오.

.git-prompt-colors.sh 파일은 내 사용자 정의에서 다음과 같이 보일 것입니다.

    override_git_prompt_colors() {
      GIT_PROMPT_THEME_NAME="Custom"

      # Clean or dirty branch
      if git diff --quiet 2>/dev/null >&2; then
        GIT_PROMPT_BRANCH="${Green}"
      else
        GIT_PROMPT_BRANCH="${Red}"
      fi
    }

    reload_git_prompt_colors "Custom"

도움이 되었기를 바랍니다. 좋은 하루 되세요!

참고 URL : https://stackoverflow.com/questions/17333531/how-can-i-display-the-current-branch-and-folder-path-in-terminal

반응형