Qual é a função do comando “fg% N”?

1

Eu aprendi que fg %N significa "ir para a tarefa N "

Eu não entendo este comando ou como usá-lo. Eu tentei ver a entrada manual deste comando no terminal, mas isso não funcionou:

$ man fg
No manual entry for fg.
    
por coding_ninza 12.01.2018 / 14:18

2 respostas

8
  1. fg é um comando incorporado do bash:

    $ type fg
    fg is a shell builtin
    

    Para obter informações sobre comandos bash individuais, use help :

    $ 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.
    
  2. Como mencionado na primeira versão da pergunta, 1>&2 é um exemplo de redirecionamento . Para ler sobre redirecionamento , execute man bash e vá para a seção intitulada REDIRECTION .

por John1024 12.01.2018 / 14:28
9

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

    
por steeldriver 12.01.2018 / 14:34