Oculta o diretório de trabalho atual no terminal

109

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

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

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

>

Quero dizer, posso digitar pwd para mostrar onde estou. ;)

    
por Theodor 09.12.2010 / 10:16

4 respostas

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

Isso resulta em oli@bert: para o meu prompt.

Se você realmente quer algo tão minimalista quanto você pede, tente isto:

export PS1='> '

Você pode anexar isso ao final do seu arquivo ~/.bashrc para que ele persista entre os logins.

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

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

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

Glossário de caracteres aceitáveis no PS1

    
por Oli 09.12.2010 / 10:22
85

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

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

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

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

    echo $PS1

    Isso lhe dará algo parecido com

    \[\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 assim:

    stefano > 
    
  • PS2 : é o seu prompt secundário. Isso é mostrado quando um comando não está concluído. Digite echo "asd e aperte enter, o prompt secundário permitirá que você digite mais linhas até fechar as vírgulas invertidas.

  • PS3 é o prompt usado para select (2)

  • PS4 é o prompt usado para stackstaces (padrão: + )

Para tornar as alterações permanentes, você as anexa ao final de .bash_profile (ou .bashrc , consulte esta questão ) em seu diretório inicial.

Aqui está uma lista mais ou menos completa de taquigrafia que você pode usar ao redigir estas:

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

Você pode inserir qualquer string literal e qualquer comando:

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

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

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

Se você quiser que seu prompt mostre cores, você pode usar os códigos de cores do bash para fazê-lo. 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 = inverter
    • 08 = escondido
  • A segunda e a terceira parte são a cor e a cor de fundo:

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

Cada parte pode ser omitida, partindo do princípio à esquerda. isto é, "1" significa negrito, "1; 31" significa negrito e vermelho. E você pegaria seu terminal para imprimir em cores, escapando da instrução com [ e finalizando com m . 33, ou 1B em hexadecimal, é o sinal ASCII "ESCAPE" (um caractere especial no conjunto de caracteres ASCII). Exemplo:

"[1;31mHello World[m"

Imprime "Hello World" em vermelho brilhante.

    
por Stefano Palazzo 21.12.2010 / 22:57
6
Outra alternativa é encurtar o caminho do diretório de trabalho quando ele ficar muito longo: aparar o diretório de trabalho do prompt de comando do terminal

  

Crie um pequeno script python que implemente a lógica de aparagem 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ê está bem com o resultado, basta anexar o comando ao seu ~ / .bashrc

    
por Olivier Lalonde 22.12.2010 / 01:26
3

Eu geralmente 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.

    
por Joe Codeswell user601770 27.03.2013 / 23:33

Tags