Quais são essas linhas de saída extras no bash?

9

É por algum tempo que essas linhas podem ser vistas após a execução de um comando (aleatoriamente):

[1]-  Done                    wget -c http://downloads.sourceforge.net/project/zorin-os/9/zorin-os-9-core-32.iso?r=http%3A%2F%2Fzorinos.com%2Fdownload9.html
[2]+  Done                    ts=1460659842

A primeira linha é o próprio comando e nem sempre está acontecendo. Mas, de tempos em tempos, um aplicativo de linha de comando para sem retornar à linha de comando, até eu pressionar enter; que mostra essas linhas.

Meu sistema não se comportou assim até uma semana atrás. Isso é um problema?

Kaveh Shahbazian
fonte

Respostas:

20

Você provavelmente emitiu um comando como este:

wget -c http://downloads.sourceforge.net/project/zorin-os/9/zorin-os-9-core-32.iso?r=http%3A%2F%2Fzorinos.com%2Fdownload9.html&ts=1460659842&something-else

Esse comando contém o caractere especial &, que é usado para executar vários processos simultaneamente . Esse comando está sendo interpretado como três (ou mais) comandos:

# First command (the one that you see after [1]):
wget -c http://downloads.sourceforge.net/project/zorin-os/9/zorin-os-9-core-32.iso?r=http%3A%2F%2Fzorinos.com%2Fdownload9.html
# Second command (the one that you see after [2]):
ts=1460659842
# Third command (the one which output should be above the "Done" lines):
something-else

Aqui está um exemplo que pode ajudá-lo a entender melhor:

# Here I'm launching three 'echo' commands, the first two in background, the third in foreground
andrea@andrea-laptop:~$ echo first & echo second & echo third
[1] 5033    # This is bash telling me that the first process was started with job number 1 and PID 5033
first       # This is the output from the first process
[2] 5034    # This is bash telling me that the second process was started with job number 2 and PID 5034
third       # This is the output from the third process
second      # This is the output from the second process
andrea@andrea-laptop:~$ 
[1]-  Done                    echo first    # This is bash telling me that the first background job has quit
[2]+  Done                    echo second   # This is bash telling me that the second background job has quit

Você deve citar corretamente os URLs para evitar este e outros efeitos desagradáveis:

wget -c 'http://downloads.sourceforge.net/project/zorin-os/9/zorin-os-9-core-32.iso?r=http%3A%2F%2Fzorinos.com%2Fdownload9.html&ts=1460659842&something-else'
Andrea Corbellini
fonte
6
Outra razão pela qual você nunca deve copiar cegamente os comandos do terminal ... Alguém pode criar um URL em someurl.com/index.php&malicious-comand-here e as pessoas simplesmente o executam e quebram o sistema.
Nzall #