O segundo primeiro: fg
é um comando interno do shell bash e, como tal, você precisa consultar a página do manual para bash
. Em particular, a seção JOB CONTROL
diz
Simply naming a job can be used to bring it into the foreground: %1 is
a synonym for ''fg %1'', bringing job 1 from the background into the
foreground. Similarly, ''%1 &'' resumes job 1 in the background,
equivalent to ''bg %1''.
Como alternativa, você pode usar o sistema help
interativo do shell:
$ help fg
fg: fg [job_spec]
Move job to the foreground.
Place the job identified by JOB_SPEC in the foreground, making it the
current job. If JOB_SPEC is not present, the shell's notion of the
current job is used.
Exit Status:
Status of command placed in foreground, or failure if an error occurs.
Agora, para a primeira parte. O comando real que você declarou não não redireciona de fato stdout
para stderr
: ele redireciona o stdout para um arquivo chamado 2 e coloca todo o comando no plano de fundo do shell . Daí
$ man 1>2&
[1] 4662
executa man
em segundo plano (como job [1]
, com ID de processo 4662
) - se você procurar no diretório atual, provavelmente encontrará um arquivo chamado 2
com conteúdo
What manual page do you want?
O comando que você deveria ter usado é 1>&2
-
&2
: descritor de arquivo # 2
-
2&
: arquivo chamado 2
, comando executado em segundo plano
Para mais informações, consulte a seção REDIRECTION
de man bash