"ls –alR /"과 "ls –alR / &"의 차이점은 무엇입니까? [복사]

"ls –alR /"과 "ls –alR / &"의 차이점은 무엇입니까? [복사]

"ls –alR /"과 "ls –alR / &"의 차이점은 무엇입니까? 나는 같은 결과를 얻는 것 같습니다. 그런데 & 기호가 백그라운드에서 실행되어야 한다고 생각했나요?

답변1

여전히 백그라운드에서 실행된다는 것은 기본적으로 출력이 터미널로 전송된다는 의미입니다. 차이점은 프로그램이 실행되는 동안 추가 명령을 입력한다는 것입니다. 분명히 ls이것은 많은 출력을 생성하는 이와 같은 프로그램에서는 어려울 것입니다. 이 시도:

ls -alR / >ls_files &

ls달리는 동안 할 수 있는 다른 일들이 있습니다. 완료 후 처음 Enter 키를 누르면 ls다음과 같은 메시지가 표시됩니다.

[1]+  Done                    ls -alR / >ls_files

ls_files이제 모든 출력이 파일에 저장됩니다 .

답변2

차이점은 간단합니다. 앰퍼샌드( &)를 사용하면 프로그램 실행이 백그라운드로 전송되고 실행 중에 다른 명령을 실행할 수 있습니다.

명령을 실행하는 데 짧은 시간만 걸리기 때문에 ls실제로 눈치채지 못할 것입니다. sleep이는 명령과 bash 스크립트를 사용하여 설명하기가 더 쉽습니다.

sleep이 예에서는 (대기) 5초로 설정했습니다 . 이는 BASH 스크립트에서와 마찬가지로 터미널에서도 동일한 방식으로 작동합니다.

테스트 파일

#!/bin/sh
sleep 5s
echo hello

echo hello줄은 5초 안에 실행됩니다.

이제 이렇게 하면:

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

echo hello줄은 완료될 때까지 5초를 기다리지 않고 즉시 실행됩니다 sleep.

관련 정보