내 배포판은 RHEL이므로 DIR_COLORS 폴더와 LS_COLORS 변수가 있습니다. 색상을 수정하는 방법을 알고 있습니다. 폴더가 git 저장소인지 확인하는 방법도 알고 있습니다. 내가 모르는 것은 폴더가 저장소인 경우 ls를 사용하여 디렉토리 색상을 변경하는 방법입니다(기본값은 파란색, 저장소 폴더는 보라색 등).
잘못된 sudo 코드에 대한 나의 시도는 다음과 같습니다.
for d in ls
if git_repo($d)
LS_COLORS = git_colors
else
LS_COLORS = normal
print ls[$d]
나는 이것이 아마도 "법적"으로 이해되지 않는다는 것을 알고 있지만, 여러분이 요점을 이해하길 바랍니다. 단일 열에 에코하고 (이론적으로) 텍스트 색상을 수동으로 변경하여 이 작업을 수동으로 수행할 수 있다는 것을 알고 있지만 여러 열이 있는 일반 ls처럼 보이도록 하고 싶습니다.
더 좋은 방법이 있으면 채택하겠습니다. 또한 이것을 bashrc의 함수에 넣어서 함수에 ls 별칭을 추가하고 싶습니다.
답변1
힘내 팁
여기에 직접 배포하는 것보다 Git 프로젝트와 함께 제공되는 기능을 즉시 사용하는 것이 좋습니다.
CentOS 7.x 시스템에서 yum install git
모든 것이 이미 Git에 있는 경우 명령줄 완성 + git 프롬프트를 수행할 수 있습니다.
$ rpm -ql git|grep completion
/etc/bash_completion.d
/etc/bash_completion.d/git
/usr/share/doc/git-1.8.3.1/contrib/completion
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.tcsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.zsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
/usr/share/git-core/contrib/completion
/usr/share/git-core/contrib/completion/git-completion.tcsh
/usr/share/git-core/contrib/completion/git-prompt.sh
~/.bash_profile
이 작업을 수동으로 수행하는 단계는 다음과 같습니다. 영구적으로 만들려면 계정에 추가해야 합니다 .
$ . /usr/share/git-core/contrib/completion/git-prompt.sh
$ mkdir somedir && cd somedir
$ git init
$ PS1="$GREEN\t$RED-$BLUE\u$YELLOW\w\[\033[m\]$MAGENTA\$(__git_ps1)$WHITE \$ "
위의 작업을 수행하면 프롬프트가 다음 위치에서 시작되도록 설정됩니다.
[root@centos7 somedir]#
-to-
13:18:42-root/home/vagrant/somedir (master) $
노트:이제 이 저장소에 현재 있는 분기가 프롬프트에 표시됩니다.
색상은 어디에 있나요?
PS1
이 색상을 얻으려면 색상 변수를 프롬프트하는 변수가 해당 색상에 대한 이스케이프 코드를 갖도록 색상을 정의해야 합니다 .
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[0;34m\]"
MAGENTA="\[\033[0;35m\]"
WHITE="\[\033[0;37m\]"
이제 PS1
다음을 얻으려면 재설정하세요.
13:24:26-root/home/vagrant/somedir (master) $ PS1="$GREEN\t$RED-$BLUE\u$YELLOW\w\[\033[m\]$MAGENTA\$(__git_ps1)$WHITE \$ "
13:24:35-root/home/vagrant/somedir (master) $
이제 다음과 같이 보입니다.
색상을 변경하는 것은 어떻습니까 ls
?
이것이 가능하다면 Git 저장소인지 확인하기 위해 git status
모든 디렉터리에 대해 명령을 실행해야 하기 때문에 권장하지 않습니다 .ls
상상해보자:
$ ls somedir
dir1
dir2
dir3
dir4
dir5
dir6
dir7
그러면 git status
어떤 디렉토리가 Git 저장소이고 어떤 디렉토리가 아닌지 결정하는 7개의 명령이 생성되므로 보라색으로 표시할지 여부를 결정할 수 있습니다.