"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
.