O que é o prompt de sinal de porcentagem em um shell?


16

Enquanto assistia a um vídeo, vi o seguinte:

% more tinyUF.txt
10
4 3
3 8
6 5

O que é esse %sinal antes do morecomando?


2
export PS1=%??
— Roman Gräf

@ RomanGräf, o que é isso?
— Maxim Koretskyi

11
Você pode alterar o $sinal normal usando export PS1=...onde ...está a substituição.
— Roman Gräf

@ RomanGräf, eu vejo, obrigado pela sugestão
— Maxim Koretskyi

@ Roman Gräf: Você pode realmente fazer muito mais com o prompt do que apenas mudar de personagem. O meu inclui o nome da máquina (já que muitas vezes tenho janelas xterm em outras máquinas) e os últimos diretórios no caminho atual. E se eu sou root, fica vermelho brilhante.
— Jamesqf #

Respostas:


29

Esse é o prompt do shell, ou mais precisamente, é o prompt principal do shell ( existem vários ). É a maneira do shell de dizer " vá em frente, estou pronto para entrar agora ".

O %prompt é comum em cshshells -type, enquanto sh-shells (like bashe ksh93) normalmente usa a $como prompt.

O prompt geralmente muda para #para o usuário root, pois um usuário suficientemente poderoso deve ser lembrado desse poder por ter um prompt alternativo (como o padrão POSIX coloca).

O prompt primário nos shshells do tipo é determinado pelo valor da variável do shell PS1.


Resumo dos comentários abaixo, com acréscimos:

O #caractere do prompt raiz (usado por ambos she cshshells) coincide com o caractere comum de comentário do shell. Copiar e colar um comando como root tornaria o comando colado inoperante, se o prompt do shell também fosse copiado. Observe que #foi adotado como o prompt raiz antes do shell ter uma convenção de comentários (referência: email de Doug McIlroy ).

As conchas ese rcdo Plano 9 usam o ;caractere como o prompt padrão. Uma conseqüência disso é que copiar e colar um comando, incluindo o prompt, ainda significa que o comando colado é válido (e será executado).

Uma maneira de permitir que alguém tenha um prompt de shell personalizado, mas ainda passível de copiar, seria usar : something ;, onde somethingpoderia ser o diretório atual, nome do host ou hora, por exemplo.


2
Também em zsh(um shell no estilo Bourne, mas com muitos recursos tcsh). Note-se que Bourne-like e CSH-como conchas normalmente usam #para usuários de uid 0.
— Stéphane Chazelas

11
Observe também que os rcshells semelhantes a eles usam ;lá (pode-se copiar e colar a linha completa e isso é código de shell válido, a mesma idéia que o #prompt do root é um comentário).
— Stéphane Chazelas 3/17/17

2
uma escolha muito importante de # para root é que, se você copiar um comando incluindo ele, não causará danos (como # inicia um comentário, também comentará seu comando (bem, sua primeira linha)). Algumas pessoas usam ">" e, se você também copiá-lo, pode bloquear (esvaziar completamente) os binários se o comando tiver um caminho completo ou relativo ou se você estiver no diretório certo (e tiver direitos suficientes, por exemplo, se você estiver raiz). Eu já vi isso acontecer.
— Olivier Dulac

11
@ StéphaneChazelas: A convenção #-for-root não se originou muito tempo antes que os terminais onde é possível cortar e colar uma linha inteira facilmente se tornassem comuns?
— hmakholm deixou Monica

@HenningMakholm, sim. Ele se originou antes mesmo de o csh apresentar o # como líder de comentários. Ainda assim, é verdade que as #...linhas são comentários quando copiadas, mesmo que não fosse essa a intenção. Eu não sei se era a intenção por trás ;de rcqualquer um, embora eu observo é uma consequência conveniente.
— Stéphane Chazelas 3/17/17
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.