Cos'è il prompt del segno di percentuale in una shell?


16

Durante la visione di un video, ho visto quanto segue:

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

Cos'è questo %segno prima del morecomando?


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

@ RomanGräf, che cos'è?
Maxim Koretskyi,

1
È possibile modificare il $segno normale utilizzando export PS1=...dove si ...trova la sostituzione.
Roman Gräf,

@ RomanGräf, vedo, grazie per il suggerimento
Maxim Koretskyi,

@Roman Gräf: puoi davvero fare molto di più con il prompt oltre a cambiare il personaggio. Il mio include il nome della macchina (dato che spesso ho finestre xterm in altre macchine) e le ultime directory nel percorso corrente. E se sono root, diventa rosso vivo.
jamesqf,

Risposte:


29

Questo è il prompt della shell, o più precisamente, è il prompt principale della shell ( ce ne sono diversi ). È il modo della shell di dire " vai avanti, sono pronto per l'input ora ".

Il %prompt è comune nelle cshshell di tipo mentre sh-shells (like bashe ksh93) usa normalmente a $come prompt.

Il prompt di solito cambia in #per l'utente root poiché un utente sufficientemente potente dovrebbe essere ricordato di quel potere avendo un prompt alternativo (come dice lo standard POSIX).

Il prompt primario nelle shshell di tipo è determinato dal valore della variabile shell PS1.


Riepilogo dei commenti seguenti, con aggiunte:

Il #carattere del prompt di root (usato da entrambe she le cshshell) coincide con il carattere di commento della shell comune. Copiare e incollare un comando come root renderebbe inutilizzabile il comando incollato, se anche il prompt della shell fosse copiato. Si noti che è #stato adottato come prompt di root prima che la shell avesse una convenzione di commento (riferimento: e-mail da Doug McIlroy ).

Le shell ese rcdi Plan 9 usano il ;carattere come prompt predefinito. Una conseguenza di ciò è che copiare e incollare un comando, incluso il prompt, significherà comunque che il comando incollato è valido (e verrà eseguito).

Un modo per consentire uno per avere un costume, ma ancora copia-pastable, guscio pronta, sarebbe quella di utilizzare : something ;, dove somethingpotrebbe essere la directory corrente, il nome host o il tempo, per esempio.


2
Anche in zsh(una shell in stile Bourne, ma con molte funzionalità da tcsh). Si noti che le shell tipo Bourne e csh sono in genere utilizzate #per gli utenti di uid 0.
Stéphane Chazelas,

1
Nota anche che le rcshell simili usano ;lì (si può copiare e incollare l'intera riga e questo è un codice shell valido, la stessa idea del #prompt di root è un commento).
Stéphane Chazelas,

2
una scelta molto importante di # per root è che se copi un comando includendolo non causerai danni (poiché # inizia un commento, quindi commenterai il tuo comando (beh, la sua prima riga)). Alcune persone usano ">" e se lo copi anche, può bloccare (svuotare completamente) i binari se il comando ha un percorso completo o relativo o se sei nella directory giusta (e hai diritti sufficienti, ad esempio se sei radice). L'ho visto succedere.
Olivier Dulac

1
@ StéphaneChazelas: la convenzione # -for-root non ha avuto origine molto tempo prima che i terminali in cui tagliare e incollare un'intera linea fosse facilmente possibile diventassero comuni?
Hmakholm lasciò Monica

@HenningMakholm, sì. Ha avuto origine anche prima che csh presentasse # come leader dei commenti. Tuttavia, è vero che le #...righe sono commenti quando vengono incollate, anche se non era intenzione. Non so se sia stata l'intenzione dietro ;in rcentrambi, anche se osservo che è una conseguenza conveniente.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.