Ocultar o diretório de trabalho atual no terminal


133

Por padrão, o prompt do terminal mostra algo como:

user@system:/folder1/folder2/folder3/folder4$

quanto mais você entra no sistema de arquivos, menos espaço resta para digitar comandos. Posso mudar isso para mostrar apenas algo como:

>

Quero dizer, posso apenas digitar pwdpara mostrar onde estou. ;)


1
Isso deve ser um comentário, mas não posso comentar, desculpe. Além de ocultar o diretório atual, o seguinte valor do PS1 separará visualmente os comandos do bash:export PS1="\n___"
Hello World

experimentou as soluções de Oli. As fontes coloridas funcionam bem no terminal: export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:'
linbianxiaocao

Respostas:


153
export PS1='\u@\h: '

Isso resulta em oli@bert:minha solicitação.

Se você realmente deseja algo tão minimalista quanto pede, tente o seguinte:

export PS1='> '

Você pode anexá-lo ao final do seu ~/.bashrcarquivo para que ele persista entre os logins.

Você também pode ser criativo com algumas cores. Aqui está o que eu uso nos meus servidores:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

Doação (é mais fácil ver em fundo preto completo):

Meus terminais

Glossário de caracteres aceitáveis ​​no PS1


2
Você também pode ter novas linhas (\ n) como parte do prompt, para poder colocar todas as informações e o '>' em linhas separadas.
Ak2

Eu encontrei esse tipo de personalização de shell "extrema" no msysGit, acredite ou não. Fui imediatamente convertido ao mundo do bash. Ter todas as informações (meu diretório atual, o ramo atual retirado do repositório Git, o estado do índice Git ...) ali era tão incrível. Pretendo fazer algo semelhante com a instalação do Ubuntu que coloquei recentemente em um laptop antigo (ao lado do Windows XP).
Dgw

3
qual é o formato usado para configurar as cores?
Rakib 01/04

1
@SyedRakibAlHasan Tente echo -e "\e[31mHello World\e[0m"ou echo -e "\033[31mHello\e[0m World"em um terminal, isso deve lhe dar uma pista. fonte
daka

103

Apenas para expandir a resposta de Oli (e para que eu tenha um marcador para esses símbolos abreviados):

O prompt do bash ( stefano@linux:~$) é apenas o primeiro de alguns prompts que você pode ver:

  • PS1 : o prompt padrão que você vê quando abre um shell

    Seu valor é armazenado em uma variável de ambiente chamada PS1. Para ver seu valor, digite

    echo $PS1

    Isso lhe dará algo como

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    Para alterá-lo, você pode definir um novo valor para a variável:

    export PS1="\u > "

    Isso resultará em um prompt como este:

    stefano > 
  • PS2 : é o seu prompt secundário. Isso é mostrado quando um comando não é concluído. Digite echo "asde pressione Enter, o prompt secundário permitirá que você insira mais linhas até fechar as vírgulas invertidas.

  • PS3 é o prompt usado para select(2)

  • PS4 é o prompt usado para texto alternativo rastreamentos de pilha (padrão +:)

Para tornar as alterações permanentes, você as anexa ao final de .bash_profile(ou .bashrcveja esta pergunta ) em seu diretório pessoal.

Aqui está uma lista mais ou menos completa de atalhos que você pode usar ao compor estes:

  • \a     O caractere 'sino'
  • \A     Horário 24h
  • \d     Data (por exemplo, terça-feira, 21 de dezembro)
  • \e     O personagem 'escape'
  • \h     Nome do host (até o primeiro ".")
  • \H     nome de anfitrião
  • \j     Nº de trabalhos atualmente em execução (ps)
  • \l     Tty atual
  • \n     Alimentação de linha
  • \t     Tempo (hh: mm: ss)
  • \T     Hora (hh: mm: ss, formato de 12h)
  • \r     Retorno de carro
  • \s     Shell (ou seja, bash, zsh, ksh ..)
  • \u     Nome de usuário
  • \v     Versão Bash
  • \V     Cadeia completa de liberação do Bash
  • \w     Diretório de trabalho atual
  • \W     Última parte do diretório de trabalho atual
  • \!     Índice atual no histórico
  • \#     Índice de comando
  • \$     Um "#" se você é root, senão "$"
  • \\     Barra invertida literal
  • \@     Hora (formato de 12h com am / pm)

Obviamente, você pode inserir qualquer string literal e qualquer comando:

export PS1="\u \$(pwd) > "

Onde $(pwd)fica no lugar de "a saída de" pwd.

  • Se a substituição do comando for escapada, como em \$(pwd), ela é avaliada toda vez que o prompt é exibido, caso contrário, como em $(pwd), é avaliada apenas uma vez quando o bash é iniciado.

Se você deseja que o seu prompt contenha cores, use os códigos de cores do bash para fazer isso. O código consiste em três partes:

40;33;01
  • A primeira parte antes do ponto e vírgula representa o estilo do texto.

    • 00 = nenhum
    • 01 = negrito
    • 04 = sublinhado
    • 05 = piscar
    • 07 = reverso
    • 08 = oculto
  • A segunda e a terceira parte são a cor e a cor do plano de fundo:

    • 30 = preto
    • 31 = vermelho
    • 32 = verde
    • 33 = amarelo
    • 34 = azul
    • 35 = magenta
    • 36 = ciano
    • 37 = branco

Cada parte pode ser omitida, assumindo o início à esquerda. ie "1" significa negrito, "1; 31" significa negrito e vermelho. E você faria com que seu terminal imprima em cores escapando da instrução \33[e finalizando-o com um m. 33 ou 1B em hexadecimal, é o sinal ASCII "ESCAPE" (um caractere especial no conjunto de caracteres ASCII). Exemplo:

"\33[1;31mHello World\33[m"

Imprime "Hello World" em vermelho brilhante.


Anexei export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> 'a, /etc/bash.bashrcmas nada parecia mudar ... ele funciona em uma por sessão, mas não consigo torná-lo permanente.
precisa

8

Outra alternativa é reduzir o caminho do diretório de trabalho quando ele fica muito longo: apare o diretório de trabalho do prompt de comando do terminal

Crie um pequeno script python que implemente a lógica de corte desejada.

Exemplo: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

Agora teste-o, a partir de um terminal:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

Se você estiver de acordo com o resultado, basta anexar o comando no seu ~ / .bashrc


Exa ... ~ / short.pwd.py, exporte ... ~ / .short.pwd.py Acho que os dois devem ser iguais. Ou você coloca um comando extra nos dois lugares ou não faz nada disso. Mas esta é uma excelente resposta ..
MycrofD 19/04/19

7

Muitas vezes quero fazer isso temporariamente. Aqui está o que eu faço:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

Espero que isso ajude alguém.


1

para usuários do macOS:

open ~/.bash_profile

no final do arquivo, adicione a seguinte linha e salve-a

export PS1='\u:\w\$ '

resultado no diretório inicial:

user: ~$

aqui u para o usuário w do diretório de trabalho atual $ é solicitar a exibição

você pode tentar os seguintes estilos:

export PS1='$ '

apenas $ como pronto, nada mais. Assim como:

$ 

0

O que me ajudou foi: exportar PS1 = '$'

Para ter isso sempre que você abrir o terminal, escreva o comando no final do arquivo .bashrc, que você pode abrir com 'cd' seguido de 'gedit .bashrc'.

Espero que isto ajude. Funcionou para mim.

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.