Como modificar a linha de prompt do console do linux (por um tempo)

5

Por exemplo, digitei esses comandos:

user@my-machine:~$ cd ABC
user@my-machine:~/ABC$ cd long-name
user@my-machine:~/ABC/long-name$ cd another-long-name
user@my-machine:~/ABC/long-name/another-long-name$ ls

Então, escolhi o diretório que preciso e preciso trabalhar nele (muitos comandos). Mas metade da minha linha de console é a linha de prompt. Não é muito confortável. Posso encurtá-lo por um tempo? Por exemplo, eu faço user@my-machine:~foo$ e, quando terminar de trabalhar nesse diretório, desativarei essa falta.

Existe uma maneira de fazer isso?

    
por Larry Cinnabar 11.11.2011 / 16:48

2 respostas

5

O formato do prompt está na variável de ambiente PS1 ; Veja a seção bash manpage, prompting para os especificadores de formato.

10:50:39 user@host:1996 ~$ echo $PS1
\t \u@\h:\! \W$

O \W apenas imprime o diretório principal como você (?) deseja. ( \w imprime tudo como você tem agora).

10:50:45 user@host:1997 ~$ PS1='\u@\h:\W$ '
user@host:~$ cd test
user@host:test$ cd testdir/
user@host:testdir$ 

Você provavelmente desejará salvar o antigo PS1 em uma variável (digamos, $ export OLDPS1=$PS1 ) primeiro para poder restaurá-lo quando terminar ( $ PS1=$OLDPS1 ).

    
por 11.11.2011 / 16:59
4

Acabei de colocar o prompt em uma segunda linha e as informações do usuário / diretório são colocadas no primeiro.

Exemplo do meu prompt bash:

birryree@momohime:/usr/bin
$ command-here

Se você estiver usando bourne-shell ou bash, a variável de ambiente PS1 determinará a formatação do prompt.

Eu tenho isso no meu ~/.bash_profile (você pode usar .bashrc , eu tenho meu .bashrc source my .bash_profile ).

# ~/.bash_profile
PS1="\u@\h:\w\n$ " # \u means user name
                   # \h means hostname
                   # \w is working directory
                   # \n is newline
                   # $ is my prompt

E meu .bashrc

# ~/.bashrc
source ~/.bash_profile

Por diversão, meu prompt do zsh tem esta aparência:

birryree@momohime:~/.oh-my-zsh master* 
λ > 

O master* significa que estou na ramificação principal de um repositório git ( ~/.oh-my-zsh é um diretório controlado pelo git) e o diretório está sujo.

Você pode ficar extremamente chique com seus comandos bash, eu costumava fazer cores e tudo antes de mudar para o zsh.

Esta seção tem todos os escapes:

por 11.11.2011 / 17:00

Tags