diferença entre “ls –alR /” e “ls –alR / &”? [duplicado]

1

Qual é a diferença entre "ls - alR /" e "ls - alR / &"? Eu pareço ter o mesmo resultado. mas o & sinal eu acho que deve executá-lo em segundo plano?

    
por RR_ 24.03.2014 / 11:57

2 respostas

3

A execução no segundo plano ainda significa que a saída vai para o terminal por padrão. A diferença é que você digita outros comandos enquanto o programa está em execução. Obviamente, isso será difícil com programas como ls que produzem muitos resultados. Tente isto:

ls -alR / >ls_files &

Você poderá fazer outras coisas enquanto ls estiver em execução. A primeira vez que você pressionar enter depois que ls terminar, você receberá uma mensagem como:

[1]+  Done                    ls -alR / >ls_files

Toda a saída agora estará no arquivo ls_files .

    
por 24.03.2014 / 12:20
2

A diferença é simples: com o e comercial ( & ), a execução do seu programa é enviada para o segundo plano e, enquanto estiver acontecendo, você pode executar outros comandos.

Como o comando ls leva pouco tempo para ser executado, você realmente não percebe isso. Poderia ser mais fácil ilustrado com o comando sleep e o script bash.

No exemplo, eu o defino como sleep (wait) por 5 segundos. Isso também funciona da mesma maneira no terminal como nos scripts BASH.

test.sh

#!/bin/sh
sleep 5s
echo hello

A linha echo hello será executada somente após 5 segundos.

Agora, se você fizer isso:

#!/bin/sh
sleep 5s &
echo hello

A linha echo hello será executada imediatamente, sem esperar 5 segundos para que sleep termine.

    
por 24.03.2014 / 12:30

Tags