43 votes

Réduisez le répertoire de travail de l'invite de commande du terminal

Lorsque vous utilisez le terminal dans une structure de dossiers profonde, parfois l'invite peut occuper la majeure partie de la ligne. Y a-t-il un moyen de raccourcir le répertoire de travail ? Je sais que je peux faire

PS1="\W >"

pour n'afficher que le répertoire actuel et pas le chemin complet, mais y a-t-il un moyen d'avoir quelque chose comme :

/home/smauel/de...ther/folder >

1voto

Manuel Points 538

Basé sur la réponse de Cris Sullivan, mais en gardant le ~ pour le dossier personnel

get_bash_w() {
  # Retourne le même répertoire de travail que la commande de l'invite de commande bash \W
  echo $(pwd | sed 's@'"$HOME"'@~@')
}

split_pwd() {
  # Divise pwd en le premier élément, des points de suspension (...) et le dernier sous-dossier
  # /usr/local/share/doc --> /usr/.../doc
  # ~/projet/dossier/sous-dossier --> ~/projet/../sous-dossier
  split=2
  W=$(get_bash_w)
  if [ $(echo $W | grep -o '/' | wc -l) -gt $split ]; then
    echo $W | cut -d'/' -f1-$split | xargs -I{} echo {}"/../${W##*/}"
  else
    echo $W
  fi
}

export PS1="\$(split_pwd) > "

1voto

mike rodent Points 157

Tout juste pour mettre à jour légèrement (pour Python3) et améliorer la réponse sélectionnée pour ajouter des couleurs à l'invite de commandes comme dans une invite de commandes BASH (dans Linux Mint 18.3 en tous cas) :

#! /usr/bin/python3

import os, getpass
from socket import gethostname

username = getpass.getuser()
hostname = gethostname()
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)

if len(pwd) > 40:
    # premiers 10 caractères+derniers 30 caractères
    pwd = pwd[:10] + '...' + pwd[-30:] 

# Environnement virtuel en cours d'utilisation ? Essentiel à ne pas omettre !
ve = os.getenv('VIRTUAL_ENV')
venv = '(`basename \"$VIRTUAL_ENV\"`)' if ve else ''

# couleurs selon mon Terminal BASH actuel : 
# nom d'utilisateur + nom de l'hôte : vert en gras
# chemin et $ : bleu en gras
print( '\[\e[;1;32m\]%s%s@%s \[\e[;1;34m\]%s $\[\e[0m\]  ' % (venv, username, hostname, pwd) )

Plus d'informations sur les codes couleur dans un Terminal BASH ici. Il y a sûrement un moyen de savoir automatiquement quels sont les couleurs utilisées par votre Terminal, mais je n'en ai aucune idée.

Avec la ligne shebang, la ligne export à inclure dans .bashrc devient alors :

export PROMPT_COMMAND='PS1="$(~/.local/bin/manage_prompt.py)"' # ajustez le chemin vers le fichier .py

NB1 ces codes d'échappement "\e" doivent toujours être encadrés par "\[ ... \]", sinon les sauts de ligne seront complètement perturbés.

NB2 pour obtenir votre chemin complet à tout moment, il suffit de faire

... $ pwd 

bien sûr...

0voto

Kamal Points 1

J'aime celui-ci le plus, PS1="[\W]\\$ "

0voto

Travis S Points 21

Cette invite raccourcit tous les noms sauf la ligne actuelle :

utilisateur:/h/t/D/C/courant$ 

sps() {
    echo `dirname $PWD` | sed -r 's|/(.)[^/]*|/\1|g'
}

PS1='\u:$$(eval "sps")/\W\$ '

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X