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.