GNU/Linux >> Znalost Linux >  >> Linux

Na příkazovém řádku bash zobrazit pouze název aktuálního adresáře (ne úplnou cestu).

Změňte \w (malá písmena) na \W (velká písmena):

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
                                                                                       ^^
           this one waaaaaay over here ------------------------------------------------+    

Podívejte se na Bash Prompt HOWTO, kde najdete spoustu zábavných detailů. příklad:

[email protected]:/usr/local/bin$ echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ 

[email protected]:/usr/local/bin$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]\$ '

[email protected]:bin$

PROMPT_COMMAND proměnná, pokud je nastavena, je příkaz, který se spustí před zobrazením výzvy specifikované v PS1 . Ve vašem případě PROMPT_COMMAND spustí echo příkaz s určitými sekvencemi escape ANSI, které manipulují s titulkem Xtermu.

Pokud máte podezření na váš PROMPT_COMMAND přepisuje vaše PS1 můžete unset to a vyzkoušet věci:

$ unset PROMPT_COMMAND

Nakonec se ujistěte, že měníte PS1 definice, která se skutečně používá. Běžná umístění jsou /etc/bash.bashrc , /etc/profile , ~/.bashrc , ~/.bash_profile , ~/.profile . Systémové soubory jsou obecně (ale ne vždy) spouštěny před uživatelskými soubory.


Jednoduchý příkaz nahrazení bash je

${VAR/pattern_to_find/pattern_to_replace}

Pro zobrazení posledního adresáře stačí udělat ${PWD/*\//} , tj. najít jakoukoli věc před a včetně posledního '/ “ a nahraďte jej ničím.

Na svém počítači s ubuntu používám:

export PS1='$(whoami):${PWD/*\//}#'. 

Moje řešení je zobrazit tři horní a dva spodní adresáře, když jich je více než 5

Takže moje výzva (která má i jiné informace) vypadá takto:

08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote

když moje pwd je ve skutečnosti

/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote

Moje výzva PS1 je nastavena následovně:

HOST='\[\033[02;36m\]\h'; HOST=' '$HOST
TIME='\[\033[01;31m\]\t \[\033[01;32m\]'
LOCATION=' \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH

git_branch je funkce, která ukazuje aktuální větev git, uchovávám ji ve svých dotfiles, je to:

git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
  }

Linux
  1. Získat úplnou cestu ze skriptu Bash?

  2. Získání úplného názvu cesty daného adresáře?

  3. Jak zobrazit úplnou cestu k souboru nebo adresáři v terminálu?

  1. Jak spustit příkaz „najít“ pouze v aktuálním adresáři a ne v podadresářích

  2. Odstraňte pouze soubory v adresáři v adresářích linux NOT

  3. Přidejte bash skript do cesty

  1. Jak nakonfigurovat příkazový řádek v Linuxu tak, aby zobrazoval aktuální adresář?

  2. Příkaz Conda pracuje v příkazovém řádku, ale ne ve skriptu bash

  3. Nastavte výzvu terminálu v Ubuntu tak, aby zobrazovala pouze název pracovního adresáře namísto jeho úplné cesty