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


17

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

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

então quando eu abro o terminal, diz

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

e então escrevo meu comando. Isso é muito longo, e todas as linhas que escrevo no terminal vão para a próxima linha. Quero saber se existe uma maneira de exibir apenas meu diretório atual. Quero que ele seja exibido:

bob@bob-ubuntu: A3/$

Dessa forma, é muito claro, e sempre posso fazer pwdpara ver meu diretório inteiro. Eu só não quero o diretório inteiro visível no terminal, porque ocupa muito espaço.

Respostas:


12

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

Se já estiver lá, sua configuração conterá o \wque fornece o seu diretório de trabalho. Mude isso para \W(maiúsculas). Efetue logout e logon 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 .bashrcou o que quer. Consulte PS1a bashpágina do manual para obter mais idéias.

Seja cuidadoso; bashpode usar vários mais de um arquivo de inicialização, por exemplo, .bashrce .bash_profile; pode ser que PS1esteja definido em todo o sistema. Mas você pode substituir isso em um de seus próprios arquivos.


23

Desde o bash 4, a maneira direta de diminuir a profundidade do diretório na linha de comando é usando o comando abaixo em seu arquivo bashrc. Lembre-se de reabrir o seu terminal e também o número (ie 1) especifica a profundidade do diretório a ser exibido.

PROMPT_DIRTRIM = 1


4
Isto é EXATAMENTE o que eu estava procurando. Definir algo como export PROMPT_DIRTRIM=3no seu .bashrcé o meio termo perfeito entre \We \w. Veja: gnu.org/software/bash/manual/html_node/Bash-Variables.html
spkane

3

Supondo que você esteja usando o bash, altere a sequência de caracteres do prompt (variável PS1) para que ela tenha, em \Wvez de \w.

por exemplo, se o seu PS1 estiver 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_profileou ~/.bashrc.

veja man bashe procure por PROMPTINGdetalhes completos e uma lista de caracteres especiais com escape de barra invertida.


Tenho 4 menções ao PS1. Altero todos os 4?
K Dividir X

4 menciona onde? em ~ / .bash_profile? não deve fazer mal alterar todas as instâncias do \wPS1 para \W. ou você pode simplesmente definir o prompt como desejar na parte inferior do script.
cas

1

Nesse caso, você terá que editar o PS1 ,

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

PS1 original

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

mude para

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

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

para evitar que você precise de alguns comandos inseridos em $ {PWD ## * /}, por exemplo

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

o novo PS1 terá a seguinte aparência

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 enquanto estou tentando salvar o mundo, não esqueci o \ W


1

Isso é portátil para todas as shconchas.

Atribua a PS1um dos seus arquivos de inicialização do shell:

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

O prompt parecerá

dir $

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

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

As aspas simples evitam que o formulário do shell avalie a substituição da variável no momento da atribuição (o valor de $PS1será avaliado sempre que o prompt for exibido).

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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.