web-dev-qa-db-fra.com

Comment raccourcir le chemin du répertoire actuel affiché sur le terminal?

Si je suis dans un répertoire profond, disons:

~/Desktop/Dropbox/School/2017/C/A3/

puis quand j'ouvre le terminal, ça dit

bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$

puis j'écris ma commande. C'est très long et chaque ligne que j'écris dans le terminal passe à la ligne suivante. Je veux savoir s'il existe un moyen pour qu'il affiche uniquement mon répertoire actuel. Je veux qu'il affiche:

bob@bob-ubuntu: A3/$

De cette façon, c'est beaucoup plus clair, et je peux toujours faire pwd pour voir tout mon répertoire. Je ne veux tout simplement pas que le répertoire entier soit visible dans le terminal car il prend trop de place.

22
K Split X

Vous devez modifier PS1 dans votre fichier de démarrage Shell (probablement .bashrc).

S'il est déjà là, son paramètre contiendra \w, ce qui donne votre répertoire de travail. Changez cela en \W (majuscule). Déconnectez-vous et reconnectez-vous, ou faites:

. .bashrc

(ou quel que soit votre fichier).

Si ce n'est pas le cas, ajoutez quelque chose comme:

PS1='\u@\h: \W:\$'

à .bashrc ou peu importe. Chercher PS1 dans la page de manuel bash pour obtenir plus d'idées.

Faites attention; bash peut utiliser plusieurs fichiers d'initialisation, par exemple .bashrc et .bash_profile; il se peut que PS1 est défini dans l'ensemble du système. Mais vous pouvez remplacer cela dans l'un de vos propres fichiers.

16
Bob Eager

Depuis bash 4, le moyen simple de raccourcir la profondeur du répertoire en ligne de commande est d'utiliser la commande ci-dessous dans votre fichier bashrc. N'oubliez pas de rouvrir votre terminal et le nombre (c'est-à-dire 1) spécifie la profondeur du répertoire à afficher.

Prompt_DIRTRIM = 1

29
Esmaeil MIRZAEE

En supposant que vous utilisez bash, modifiez la chaîne d'invite (variable PS1) pour qu'elle ait \W au lieu de \w.

par exemple. si votre PS1 est actuellement \u@\h:\w\$, définissez-le sur \u@\h:\W\$

Pour rendre cela permanent, vous devrez le changer dans vos fichiers de démarrage bash - par exemple ~/.bash_profile ou ~/.bashrc.

voir man bash et recherchez PROMPTING pour plus de détails et une liste de caractères spéciaux avec barre oblique inverse.

3
cas

Ceci est portable pour tous les shells sh.

Attribuez à PS1 Dans l'un de vos fichiers de démarrage Shell:

PS1='${PWD##*/} $ '

L'invite ressemblera

dir $

dir est le nom de base du répertoire courant.

La variable $PWD Contient le chemin du répertoire actuel et ${PWD##*/} Supprimera tout jusqu'au dernier / Inclus dans ce chemin.

Les guillemets simples empêchent le formulaire Shell d'évaluer la substitution de variable au moment de l'affectation (la valeur de $PS1 Sera évaluée chaque fois que l'invite est affichée).

La variable PS1 Ne doit pas être exportée car elle est uniquement utilisée par le shell actuel.

1
Kusalananda

dans ce cas, vous devrez modifier PS1,

au lieu de \w, vous aurez une commande ou une variable qui affiche le chemin raccourci:

pS1 d'origine

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

le changer en

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]${PWD##*/}\[\033[00m\]\$'

Notez que cela mettra le nom d'utilisateur insteed de ~ si vous êtes dans votre répertoire personnel!

pour éviter cela, vous aurez besoin de quelques commandes insteed de $ {PWD ## * /} par exemple.

if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi

la nouvelle PS1 ressemblera à ce qui suit

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]`if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi`\[\033[00m\]\$'

oOps alors que j'essaie de sauver le monde, je n'ai eu aucune idée | oublié le \ W

1
Jonah

https://github.com/chrissound/SodiumSierraStrawberry

Vous permet de tronquer un chemin comme:

À partir de:/accueil/sodium/Projets/Personnel/Sierra/Super/Long/Chemin/HolyAvacado

À: "Projets/Sie…/Sup…/Lon…/Pat…/HolyAvacado /

0
Chris Stryczynski