robertcollier4
robertcollier4

Reputation: 752

Bash Folder-File coloring in msysgit on Windows?

I am using msys Git in Windows. I have already gotten coloring for my prompt via setting the PS1 variable in .bashrc.

However - I am also looking to get standard bash coloring - for example, a different color for files vs directories when I do "ls". Does anyone know how to achieve this?

Upvotes: 2

Views: 2236

Answers (2)

im_benton
im_benton

Reputation: 2621

Here is what I found works. Assuming you have your colors defined.

 # tell ls to be colourful
    export PS1="${GREEN}\u ${YELLOW}\w ${BLUE}\W ${CYAN}\$(dev_info)${WHITE}\$ "
    export CLICOLOR=1
    export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx

Here is my code for it all

export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/share/npm/bin:$PATH
export PATH=${PATH}:/var/lib/gems/1.8/bin/
export PATH=${PATH}:/var/lib/gems/


export PATH=~/bin:$PATH
export PATH=/opt/subversion/bin:$PATH
export PATH="$PATH:/Users/bentonrr/Sites/Amex/trunk/www/lib/Cake/Console"
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node



alias ls="ls -H"
alias ll="ls -lh"
alias l="ll"
alias lll="ll"
alias la="ll -a"
alias lla="ll -a"
alias lsa="ls -a"
alias lt='ll -t'
alias lrt='ll -rt'
alias lart="ll -lart"
alias lsd="ls -d */"
alias lld="ll -d */"

alias git+st="git status"


function detect_git_dirty {
  local git_status=$(git status 2>&1 | tail -n1)
  [[ $git_status != "fatal: Not a git repository (or any of the parent
  directories): .git" ]] && [[ $git_status != "nothing to commit (working
  directory clean)" ]] && echo "*"
}

function detect_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1/"
}
function dev_info {
  echo "[$(detect_git_branch)$(detect_git_dirty)]"
}

# quick commands
alias tails='tail -f /Applications/MAMP/logs/apache_error.log'
alias ebash='vim ~/.bash_profile'
alias rebash='. ~/.bash_profile'
alias ehosts='sudo mvim /etc/hosts'
alias tmamp='tail -f /Applications/MAMP/logs/*';
alias tache='tail -f /var/log/apache2/*';
alias vimrc='vim ~/.vimrc'
alias gvimrc='vim ~/.gvimrc'
alias rmlogs="sudo rm -f /private/var/log/asl/*.asl"
alias ephp="sudo vim /etc/php.ini"
alias apr="sudo apachectl restart"
alias iphone="open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app"


 BLACK="\[\033[0;30m\]"
 RED="\[\033[0;31m\]"
 GREEN="\[\033[1;32m\]"
 YELLOW="\[\033[1;33m\]"
 BLUE="\[\033[0;34m\]"
 PURPLE="\[\033[0;35m\]"
 CYAN="\[\033[0;36m\]"
 WHITE="\[\033[0;37m\]"

export PS1="${GREEN}\u ${YELLOW}\w ${BLUE}\W ${CYAN}\$(dev_info)${WHITE}\$ "
# tell ls to be colourful
export CLICOLOR=1
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx

# Set git autocompletion and PS1 integration
if [ -f /usr/local/git/contrib/completion/git-completion.bash ]; then
  . /usr/local/git/contrib/completion/git-completion.bash
fi
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh ]; then
    . /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=true

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

Upvotes: 0

robertcollier4
robertcollier4

Reputation: 752

I figured out that you have to actually set the --color flag for each command. I added this to .bash-rc for ls to: show coloring (--color=auto), show hidden files (-a), show list (-l), show human readable sizes (-h), and sort by extension so that directories are shown first (-X):

alias ls='ls --color=auto -alhX'

If there is any way to turn on coloring globally for all commands without having to create aliases individually for each command, let me know.

Upvotes: 2

Related Questions