Bash Shell에서 Echo 명령: 다양한 사용법 알아보기

관리자로서 리눅스 시스템을 관리할 때, 일반적으로 에코 커맨드를 Bash에서 실행할 수 있습니다. 그러나 에코 커맨드가 제공하는 것은 텍스트를 출력하는 것 뿐인가요?

이 자습서에서는 에코 커맨드를 자세히 살펴보고 가장 유용한 실제 예제를 배우게 됩니다.

준비되셨나요? 계속해서 에코 커맨드에 대한 생각을 다시 조정해보세요!

전제 조건

이 자습서는 실습을 포함하고 있습니다. 따라하기 위해서는 Ubuntu 기반의 컴퓨터만 있으면 됩니다. 이 자습서에서는 Ubuntu 20.04를 사용하지만 다른 리눅스 배포판도 작동할 것입니다.

에코 커맨드를 사용하여 문자열 출력하기

에코 커맨드를 생각해보면, 가장 먼저 떠오르는 것은 콘솔에 문자열 값을 출력하는 것입니다. 네, 에코 커맨드는 명령어나 스크립트에서 문자열을 직접 반환합니다.

하지만 이 자습서의 뒷부분에서는 에코 커맨드를 다른 관점에서 볼 수 있을 것입니다. 지금은 이 커맨드가 어떻게 문자열을 콘솔에 출력하는지 살펴보세요.

에코 커맨드의 구문은 다음과 같습니다. 여기서:

  • string – 출력할 텍스트입니다.
  • options – 출력을 수정하기 위해 지정할 수 있는 선택적 인수입니다.
echo string options

아래의 에코 커맨드를 추가 옵션 없이 실행하여 간단한 텍스트를 콘솔에 출력해보세요. 이 커맨드는 문자열을 에코 커맨드의 인수로 전달합니다.

echo "Echo command bash"
Printing a string to the console

문자열에서 후행 개행 문자 억제하기

echo 명령은 기본적으로 각 문자열 뒤에 개행 문자를 추가합니다. 따라서 여러 문자열을 출력할 때, 아마도 하나를 다른 문자열에 연결할 때마다 각 문자열이 새로운 줄에 출력됩니다.

-n 옵션은 echo 명령이 여러 문자열을 한 줄에 출력하도록 하면서, 줄 끝에 개행 문자를 제거하는 역할을 합니다. 이 옵션은 콘솔에 진행 막대를 출력할 때 유용할 수 있습니다.

아래 명령을 실행하여 Progress:와 50%를 출력합니다.

echo -n "Progress: " && echo "50%"

아래에서는 개행 문자가 두 문자열을 구분합니다.

echo command bash : newlines separate the two strings

이제 다음 명령을 실행하여 -n 옵션을 추가하여 Progress:와 50%를 출력합니다.

echo -n "Progress: " && echo "50%"

아래에서 보듯이, -n 옵션을 사용하여 개행 문자를 제거했기 때문에 두 문자열이 한 줄에 출력됩니다.

Suppressing trailing newlines

변수 값 출력

스크립트를 작성할 때 일반적으로 값을 변수에 임시로 저장하고, 그 값을 echo 명령으로 출력할 수 있습니다. 이 기능은 셸 스크립트를 디버깅할 때 변수의 값을 확인하는 데 도움이 될 수 있습니다.

아래 명령을 실행하여 number 변수의 값을 10으로 설정하고, 해당 값을 콘솔에 출력합니다.

# number 변수에 10의 값을 저장합니다
number=10
# number 변수에 저장된 현재 값 출력
echo The number is $number
Printing the Value of a Variable

이스케이프 시퀀스 해석

이스케이프 시퀀스는 특수 문자를 나타내는 문자열의 연속입니다. -e 옵션을 사용하여 이스케이프 시퀀스를 해석할 수 있습니다.

예를 들어, \t 이스케이프 시퀀스는 탭 문자를 나타냅니다. -e 옵션을 사용하여 콘솔에 \t을 출력하면 \t이 탭 문자로 해석되어 문자 그대로 출력되지 않습니다.

가장 일반적인 이스케이프 시퀀스 몇 가지는 다음과 같습니다.

Escape Sequence Function
\b backspace
\t tab
\n new line
\\ backslash
\$ dollar sign

다음 명령을 실행하여 Hello\tWorld를 콘솔에 출력하세요.

echo "Hello\tWorld"

아래에서 echo 명령이 문자열 Hello\tWorld를 그대로 출력한 것을 볼 수 있습니다.

Printing a string without an escape sequence

이제 아래 명령을 실행하여 Hello\tWorld를 출력하되, -e 옵션을 추가하여 \t을 탭 문자로 해석하도록 하세요.

echo -e "Hello\tWorld"

아래에서 Hello와 World 사이에 큰 간격이 있음을 알 수 있습니다.

Interpreting an escape sequence

새 줄에 문자열 삽입하기

긴 단일 문자열을 한 줄에 출력하면 사용자는 전체 내용을 읽기 어려워집니다. 다행히 \n 옵션을 사용하면 문자열 중간에 새 줄 문자를 추가할 수 있습니다. 이 옵션은 일반적으로 콘솔에 여러 줄 텍스트를 출력할 때 실제 텍스트를 명확하게 해줍니다.

아래 명령을 실행하여 문자열 Echo command bash\nAnother line을 출력하세요. 여기서 \n 옵션이 문자열을 두 줄로 나누도록 합니다.

echo -e "Echo command bash\nAnother line"

아래에서 \n 옵션이 Another line 문자열을 새 줄로 옮겼음을 볼 수 있습니다.

Inserting a string into a new line

문자열 사이에 수직 탭 삽입하기

\t 이스케이프 시퀀스가 문자열 사이에 수평 탭 문자를 넣는 방법을 보았습니다. 하지만 수직 탭은 어떻게 할까요? \v 옵션을 사용하면 문자열을 수직 탭으로 분리할 수 있습니다. 이는 텍스트 배너를 만들 때 적합합니다.

이 옵션은 일반적으로 콘솔에 여러 열의 텍스트를 출력할 때 사용되며, 각 열은 새 줄에 새 탭 공간으로 시작됩니다.

아래 명령을 실행하여 “Echo command bash demo”라는 텍스트를 출력하되, 각 단어 사이에 수직 탭(\v)을 넣어 출력하세요.

echo -e "Echo \vcommand \vbash \vdemo
Inserting vertical tabs in between strings

확장자를 기반으로 파일 이름 출력하기

특정 파일 유형의 파일을 찾는 방법을 찾고 있다면, 이 echo 명령어의 기능은 동일하게 작동합니다. echo 명령어는 와일드카드 문자(*)를 사용하여 특정 확장자를 가진 디렉토리 내의 파일을 나열하는 기능을 지원합니다.

1. 현재 디렉토리에서 .txt 확장자로 끝나는 모든 파일을 출력하려면 아래 명령을 실행하세요.

echo *.txt
Printing all .txt files in the current directory

2. 다음으로, 현재 디렉토리에서 .deb 파일 확장자로 끝나는 모든 파일을 출력하려면 아래 명령을 실행하세요.

echo *.deb
Printing all .deb files in the current directory

3. 마지막으로, ~/Downloads 디렉토리에서 .txt 확장자를 가진 파일을 출력하려면 아래 명령을 실행하세요. ~/Downloads/ 부분을 실제 파일 디렉토리 경로로 대체할 수 있습니다.

echo ~/Downloads/*.txt

아래에서 볼 수 있듯이, echo 명령어는 파일이 위치한 디렉토리 경로를 지정할 수 있습니다.

Finding .txt files in the specific directory

출력을 파일로 작성하기

당신의 명령이 많은 출력을 반환할 때 콘솔에서 모든 것을 거의 읽을 수 없을 때도 있습니다. 대신 출력을 파일로 작성하는 것은 좋은 아이디어입니다. 그러나 어떻게 해야 할까요? echo 명령은 텍스트를 콘솔에 출력하는 것뿐만 아니라 출력을 직접 파일로 작성하는 것도 지원합니다.

아래 명령을 실행하면 출력이 파일(echo-bash.txt)에 쓰여지므로 출력이 제공되지 않습니다.

참고로, echo-bash.txt 파일이 이미 존재한다면 새로운 내용으로 덮어씁니다.

echo "echo command bash" > echo-bash.txt

이제 아래 cat 명령을 실행하여 echo-bash.txt 파일의 내용을 확인해보세요.

cat echo-bash.txt

아래에서 볼 수 있듯이, echo 명령의 출력이 echo-bash.txt 파일에 작성되었습니다.

Verifying the output written to file

기존 파일에 출력 추가하기

이전에 언급한 대로, > 연산자는 기존 파일을 새로운 내용으로 덮어씁니다. 그러나 덮어쓰기 대신 기존 파일에 출력을 추가하고 싶을 때는 어떻게 해야 할까요?

> 연산자 대신 두 개의 >> 연산자를 사용합니다. 이 기능을 사용하면 기존 내용을 유지하고 파일의 끝에 새 항목을 추가할 수 있습니다.

아래 명령을 실행하여 기존의 echo-bash.txt 파일에 새로운 텍스트(추가 텍스트)를 추가하세요.

echo "Appending text" >> echo-bash.txt

이제 아래 cat 명령을 실행하여 echo-bash.txt 파일의 내용을 확인해보세요.

cat echo-bash.txt

아래에서 볼 수 있듯이, echo 명령의 출력이 파일에 덮어쓰지 않고 추가되었습니다.

Appending output to an existing file

결론

배시 쉘에서의 echo 명령은 많은 방식으로 사용할 수 있는 간단하지만 강력한 도구입니다. 이 자습서에서는 echo 명령의 인기있는 옵션 중 일부를 사용하여 echo 명령의 잠재력을 최대한 활용하는 방법을 배웠습니다.

콘솔에 텍스트를 출력하는 것은 더 이상 ‘텍스트 출력’만을 의미하지 않습니다. 출력을 파일에 작성하거나 출력을 추가하고 출력되는 텍스트의 모양을 변경하는 방법을 배웠습니다.

왜 echo 명령을 사용하는 몇 가지 방법을 선택하고 스크립트에 작성해보시는건 어떨까요? 어떤 창의적인 방법이 떠오르는지 확인해보세요!

Source:
https://adamtheautomator.com/echo-command-in-bash/