Bash 억제 출력
이 기사에서는 Bash를 사용하여 명령 출력을 억제하는 방법을 설명합니다. 또한 나중에 사용할 수 있도록 출력을 파일로 리디렉션하는 방법도 살펴보겠습니다.
쉘 및 스크립팅 소개
Shell은 Linux에서 명령줄 인터페이스를 실행하는 프로그램입니다. Linux에서는 모든 사용자가 다양한 쉘을 사용할 수 있습니다.
일반적으로 기본 GNU의 Bourne-Again Shell(Bash)은 많은 Linux 배포판에서 사용됩니다.
일련의 명령을 포함하는 파일을 스크립트라고 합니다. 이 파일은 Bash 프로그램을 사용하여 읽고 실행합니다.
예를 들어 First.sh
라는 이름의 파일에 다음과 같은 내용이 있다고 가정합니다.
#!/bin/bash
echo "Hello"
echo "World"
위의 예에서 First.sh
는 스크립트가 실행될 때 터미널에 Hello World
를 표시하는 두 개의 echo
명령이 포함된 스크립트 파일입니다. 첫 번째 줄 #!/bin/bash
는 스크립트 실행에 사용할 인터프리터의 위치를 표시합니다.
두 가지 방법으로 Linux 터미널에서 Bash 스크립트를 실행할 수 있습니다.
bash First.sh
출력:
Hello
World
./First.sh
출력:
Hello
World
Bash 스크립트에서 명령 출력 억제
Bash 스크립트를 실행하는 동안 Bash 스크립트로 작성된 명령의 출력을 억제할 수 있습니다. 출력을 null
장치로 리디렉션할 수 있습니다.
예를 들어 First.sh
스크립트의 출력을 억제하려면 다음 명령을 사용할 수 있습니다.
./First.sh > /dev/null
이 명령은 First.sh
스크립트의 출력을 억제하고 터미널에 아무 것도 표시하지 않습니다. 그러나 First.sh
스크립트에 오류가 포함되어 있으면 여전히 터미널에 표시됩니다.
First.sh
스크립트에서 다음 명령을 고려하십시오.
#!/bin/bash
echo "Hello
echo "World"
스크립트에서 첫 번째 echo
명령에 "
가 없습니다. ./First.sh
를 사용하여 실행한 다음 스크립트의 출력은 다음과 같습니다.
./First.sh: line 3: unexpected EOF while looking for matching `"'
./First.sh: line 4: syntax error: unexpected end of file
./First.sh > /dev/null
명령을 사용하여 이 스크립트를 실행하면 동일한 출력이 표시됩니다.
./First.sh: line 3: unexpected EOF while looking for matching `"'
./First.sh: line 4: syntax error: unexpected end of file
Bash 스크립트의 오류 억제
Bash 스크립트에 오류가 포함된 경우 ./scriptname > dev/null
명령은 오류를 억제하지 않고 위에서 설명한 대로 터미널에 오류를 표시합니다.
터미널에서도 오류를 억제할 수 있습니다. 다음 명령은 First.sh
Bash 스크립트를 실행하는 동안 터미널의 출력 및 오류를 억제할 수 있습니다.
./First.sh &>/dev/null
./First.sh >/dev/null 2>&1
./First.sh >/dev/null 2>/dev/null
첫 번째 명령 ./First.sh &>/dev/null
은 모든 Linux 셸에서 작동하지 않을 수 있습니다.
Bash 스크립트의 출력 기록 또는 저장
Bash 스크립트 실행 중에 /dev/null
을 사용하면 출력이 억제됩니다. 그러나 사용자 지정 파일에 출력을 저장하거나 기록할 수 있습니다.
다음 First.sh
스크립트를 고려하십시오.
#!/bin/bash
echo "Hello"
echo "World"
다음 명령을 사용하여 First.sh
스크립트를 실행하여 Bash 출력을 저장하거나 기록할 수 있습니다.
./First.sh > outputfile.out
위의 명령을 실행하면 터미널에 아무 것도 표시되지 않습니다. 그러나 outputfile.out
이라는 이름의 새 파일이 생성되고(아직 없는 경우) 파일 내용은 다음과 같습니다.
Hello
World
outputfile.out
이 이미 존재하는 경우 기존 콘텐츠가 광택 처리되고 스크립트의 새 출력이 파일에 저장됩니다.