Segno di percentuale (%) davanti al comando shell


9

Ho appena incollato un sacco di codice nella mia shell, ma ho dimenticato di rimuovere %il comando prima di eseguire il comando. Sembra che non abbia fatto nulla. Perché questo non fa nulla nella mia shell ( zsh )?

> % echo foo

A bash , ottengo quanto segue

> % echo foo
bash: fg: %: no such job

Voglio solo essere sicuro che l'esecuzione del mio comando non abbia avuto alcun effetto collaterale.

Risposte:


9

%fa riferimento a un 'jobid' che viene utilizzato come parte delle funzionalità "controllo lavoro e controllo processo" di zsh. Per citare dalla guida per l'utente:

'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.

Esempio:

$> man zshall &
[1]  + 31392 suspended (tty output)  man zshall
$> jobs
[1]  + suspended (tty output)  man zshall
$> %
<manpage-opens-for-zshall>

Maggiori informazioni qui: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Per rispondere alla tua vera domanda: se il tuo zsh non inserisce un avviso lì ("fg: nessun lavoro corrente" o simili), allora c'è un lavoro. Esempio:

$> sleep 60 &
$> % echo foo
[1]  + 411 running    sleep 60
fg: job not found: echo

Il %processo di background è appena tornato e lo esegue. Dopo 60 secondi ottenne il successivo "jobid" che non fu trovato.

Quindi: il comportamento che hai riscontrato è un po 'strano. Senza il tuo pieno zshrc è difficile dire esattamente cosa sta succedendo. Sembra che tu sia riuscito a dire al tuo zsh che il carattere '%' sta iniziando un commento. Vorrei controllare il histcharsparametro per il suo terzo valore:

$> echo $histchars

Fantastico, grazie. Sono stato in grado di replicare i tuoi test e di mettere in primo piano un lavoro in corso %. Buona anche la cattura $histchars, ma il mio è un segno di hash ( !^#). Immagino che la risposta al mio caso particolare sia che c'erano alcuni processi in background che si comportavano in modo strano in zsh. Grazie ancora per la lezione di shell!
— Dave,
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.