J'essaie de configurer mon iTerm Prompt de la même manière que Paul Irish
Jusqu'à présent, j'ai les éléments suivants dans ~/.profile
:
# Add git branch name to Prompt
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/*\(.*\)/ on \1/'
}
PS1='\n\[\033[0:35m\]\u\[\033[0;32m\]\w\[033[0m\]$(parse_git_branch)\n\$\[\033[0m\] '
Je ne sais pas comment faire en sorte que la branche apparaisse dans une couleur différente et non la précédente "sur"
En plus de cela, il existe d'autres fonctionnalités telles que:
Toute aide serait appréciée
Je viens d'écrire un article sur la façon de faire tout cela. J'ai couvert toutes les bases, mais je devais deviner plusieurs choses, par exemple. comment Paul utilise les symboles, etc. Si vous voulez le lire, consultez http://digitalformula.net/articles/pimp-my-Prompt-like-paul-irish .
Il y a aussi un article sur digitalformula.net qui montre quelques autres exemples de prompt - voir http://digitalformula.net/articles/a-couple-more-bash-Prompt-examples .
EDITED: La partie code est la suivante:
PATH=$PATH:~/Data/Scripts:~/Data/Utils/rar:~/_Applications:~/_Applications/lynx
# alias to quickly show if any Handbrake processes are running
alias hb='Sudo ps -aef | grep HandBrakeCLI'
# alias for quick DNS cache flushing
alias fc='Sudo dscacheutil -flushcache'
# enable the git bash completion commands
source ~/.git-completion
# enable git unstaged indicators - set to a non-empty value
GIT_PS1_SHOWDIRTYSTATE="."
# enable showing of untracked files - set to a non-empty value
GIT_PS1_SHOWUNTRACKEDFILES="."
# enable stash checking - set to a non-empty value
GIT_PS1_SHOWSTASHSTATE="."
# enable showing of HEAD vs its upstream
GIT_PS1_SHOWUPSTREAM="auto"
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
Lime_YELLOW=$(tput setaf 190)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
Magenta=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)
# set the Prompt to show current working directory and git branch name, if it exists
# this Prompt is a green username, black @ symbol, cyan Host, Magenta current working directory and white git branch (only shows if you're in a git branch)
# unstaged and untracked symbols are shown, too (see above)
# this Prompt uses the short colour codes defined above
# PS1='${GREEN}\u${BLACK}@${CYAN}\h:${Magenta}\w${WHITE}`__git_ps1 " (%s)"`\$ '
# this is a cyan username, @ symbol and Host, Magenta current working directory and white git branch
# it uses the shorter , but visibly more complex, codes for text colours (shorter because the colour code definitions aren't needed)
# PS1='\[\033[0;36m\]\u@\h\[\033[01m\]:\[\033[0;35m\]\w\[\033[00m\]\[\033[1;30m\]\[\033[0;37m\]`__git_ps1 " (%s)"`\[\033[00m\]\[\033[0;37m\]\$ '
# return the Prompt prefix for the second line
function set_prefix {
BRANCH=`__git_ps1`
if [[ -z $BRANCH ]]; then
echo "${NORMAL}o"
else
echo "${UNDERLINE}+"
fi
}
# and here's one similar to Paul Irish's famous Prompt ... not sure if this is the way he does it, but it works :)
# \033[s = save cursor position
# \033[u = restore cursor position
PS1='${Magenta}\u${WHITE} in ${GREEN}\w${WHITE}${Magenta}`__git_ps1 " on %s"`${WHITE}\r\n`set_prefix`${NORMAL}${CYAN}\033[s\033[60C (`date "+%a, %b %d"`)\033[u${WHITE} '
J'utilise git-aware-Prompt .
Beaucoup de solutions que j’avais auparavant n’affichaient la branche git que si je me trouvais seulement dans ce répertoire lors du chargement du terminal. Si j'ai démarré iTerm dans un référentiel non-Git, cela ne fonctionnerait pas si je cd
dans un répertoire avec un référentiel Git.
Ce projet github a résolu ce problème pour moi.
Plutôt que d'utiliser des codes de terminal archaïques, utilisez plutôt tput
, ce qui rend le code beaucoup plus facile à lire et beaucoup plus difficile à gâcher:
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
Lime_YELLOW=$(tput setaf 190)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
Magenta=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)
# Set Titlebar and Prompt
TITLEBAR='\e]0;\h: ${PWD/$HOME/~}\a'
PS1="${TITLEBAR}${WHITE}[${POWDER_BLUE}\u@\h${WHITE}]${NORMAL}$ "
La définition de la barre de titre est facultative. Veillez simplement à utiliser ${NORMAL}
à la fin pour désactiver le changement de couleur.
Ajoutez ceci à votre ~/.bashrc
ou ~/.profile
PS1="\u@\h:\w on\e[0;35m$(__git_ps1)\e[m\$ "
Où,
$(__git_ps1)
est utilisé pour imprimer le nom de la branche
\e
définit le début du jeu de couleurs
[0;35m
représente la couleur pourpre
\e[m
définit la fin du schéma
Aussi , j'ai corrigé votre invite actuelle:
PS1='\n\[\033[0;35m\]\u\[\033[0;32m\]\w\[\033[0m\]$(__git_ps1)\n\$\[\033[0m\] '
Comme mentionné ci-dessus, j'utilise également git-aware-Prompt .
Exécutez ceci pour installer rapidement:
mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-Prompt.git
Ajoutez ceci en haut de votre ~/.bash_profile
:
export GITAWAREPROMPT=~/.bash/git-aware-Prompt
source "${GITAWAREPROMPT}/main.sh"
Dans le même fichier ~/.bash_profile
, voici l'invite que j'utilise:
export PS1="\n\[$txtpur\]\u\[$bldwht\]@\h\[$bldgrn\]:\[$bldblu\] \w \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ \[$txtwht\] "
export Sudo_PS1="\[$bakred\]\u@\h\[$txtrst\] \w\$ "
vous pouvez changer les couleurs comme bon vous semble
Voici ce que signifient certains des symboles de PS1:
\u - nom d'utilisateur
@ - symbole cool
\h - nom d'hôte
: - Symbole sympa pour séparer les objets
\w - chemin complet, utilisez\W pour le chemin court
\git_branch - nom de la branche actuelle
\git_dirty - show * quand il y a un changement de branche
$ - Symbole sympa pour indiquer, entrez la commande
Une solution très riche et très riche en fonctionnalités (non seulement pour iterm Shell, mais également pour Vim et autres) est Powerline .