Como encurtar o caminho do diretório atual mostrado no terminal?

7

Se eu estiver em um diretório profundo, digamos:

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

então quando eu abro o terminal, ele diz

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

e depois escrevo meu comando. Isso é muito longo, e toda linha que escrevo no terminal vai para a próxima linha. Eu quero saber se há uma maneira de exibir apenas meu diretório atual. Eu quero mostrar:

bob@bob-ubuntu: A3/$

Desta forma, é muito claro, e sempre posso fazer pwd para ver o meu diretório inteiro. Eu simplesmente não quero o diretório inteiro visível no terminal porque ele ocupa muito espaço.

    
por K Split X 22.07.2017 / 15:34

5 respostas

2

Você precisa modificar PS1 no seu arquivo de inicialização do shell (provavelmente .bashrc ).

Se já estiver lá, sua configuração conterá \w , que é o que dá ao seu diretório de trabalho. Mude para \W (maiúsculas). Faça logout e novamente, ou faça:

. .bashrc

(ou qualquer que seja o seu arquivo).

Se não estiver lá, adicione algo como:

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

para .bashrc ou o que for. Pesquise PS1 na página de manual bash para obter mais ideias.

Tenha cuidado; bash pode usar vários mais de um arquivo de inicialização, por exemplo, .bashrc e .bash_profile ; pode ser que PS1 esteja definido em um sistema inteiro. Mas você pode substituir isso em um dos seus próprios arquivos.

    
por 22.07.2017 / 15:52
5

Desde o bash 4, a maneira direta de encurtar a profundidade do diretório na linha de comando é usar o comando abaixo em seu arquivo bashrc. Apenas lembre-se de reabrir o seu terminal e também o número (ou seja, 1) especifica a profundidade do diretório a ser mostrado.

PROMPT_DIRTRIM=1

    
por 22.09.2017 / 16:44
2

Supondo que você esteja usando o bash, altere a string do prompt (variável PS1) para que ele tenha \W em vez de \w .

por exemplo. Se o seu PS1 for atualmente \u@\h:\w\$ , defina-o como \u@\h:\W\$

Para tornar isso permanente, você precisará alterá-lo nos arquivos de inicialização do bash - por exemplo, ~/.bash_profile ou ~/.bashrc .

veja man bash e procure por PROMPTING para detalhes completos e uma lista de caracteres especiais com escape de barra invertida.

    
por 22.07.2017 / 15:44
1

neste caso, você terá que editar PS1 ,

insted de \w , você terá um comando ou uma variável que mostra o caminho abreviado:

PS1 original

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

altere para

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

Observe que isso colocará o nome de usuário insteed de ~ se você estiver no seu diretório home!

Para evitar que você precise de alguns comandos, instale $ {PWD ## * /}, por exemplo

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

o novo PS1 será parecido com o seguinte

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

oOps enquanto eu estou tentando salvar o mundo eu tive noIdea | esqueci o \ W

    
por 22.07.2017 / 15:42
0

Isso é portável para todos os sh shells.

Atribua a PS1 em um de seus arquivos de inicialização do shell:

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

O prompt será parecido com

dir $

Onde dir é o nome base do diretório atual.

A variável $PWD contém o caminho do diretório atual e ${PWD##*/} removerá tudo até e incluindo o último / nesse caminho.

As aspas simples impedem que o formulário de shell avalie a substituição da variável no momento da atribuição (o valor de $PS1 será avaliado toda vez que o prompt for exibido).

A variável PS1 não deve ser exportada, pois é usada apenas pelo shell atual.

    
por 22.09.2017 / 18:05