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.