Linux에서 Echo 명령을 사용하는 방법

echo명령은 형식화 된 텍스트를 터미널 창에 쓰는 데 적합합니다. 그리고 정적 텍스트 일 ​​필요는 없습니다. 쉘 변수, 파일 이름 및 디렉토리를 포함 할 수 있습니다. echo를 리디렉션하여 텍스트 파일과 로그 파일을 만들 수도 있습니다. 방법을 알아 보려면이 간단한 가이드를 따르십시오.

Echo는 반복하라는 말을 반복합니다.

제우스는 올림푸스 산을 떠나 아름다운 님프들과 어울리는 것을 좋아했습니다. 한 번의 여행에서 그는 Echo라는 산의 요정에게 아내 헤라가 그를 따라 오면 길을 잃게하라고 말했습니다. Hera는 Zeus를 찾아 왔고 Echo는 Hera가 대화를 계속할 수 있도록 최선을 다했습니다. 마침내 헤라는 성질을 잃고 불쌍한 에코를 저주하여 다른 사람이 한 마지막 말만 반복했습니다. 헤라가 제우스를 따라 잡았을 때 한 일은 누구나 추측 할 수 있습니다.

그리고 그것은 거의 echo인생에서 많은 것입니다. 반복하라는 말을 반복합니다. 이것은 간단한 기능이지만 중요한 기능입니다. 를 사용하지 않으면 echo예를 들어 쉘 스크립트에서 가시적 인 출력을 얻을 수 없습니다.

수많은 종소리와 호루라기로 가득 차 있지는 않지만, echo당신이 몰랐거나 잊었을 능력이 있는 좋은 기회가 있습니다.

에코? 에코!

대부분의 Linux 시스템은 두 가지 버전의 echo. Bash 셸에는 자체적으로 echo내장되어 있으며 바이너리 실행 가능 버전 echo도 있습니다.

다음 명령을 사용하여 두 가지 다른 버전을 볼 수 있습니다.

유형 에코
어디에 에코

type명령은 인수로 전달하는 명령이 쉘 내장, 바이너리 실행 파일, 별칭 또는 함수인지 여부를 알려줍니다. echo쉘 내장 이라고보고합니다 .

답을 찾으면 type더 이상 일치 하는 항목을 찾지 않습니다. 따라서 시스템에 같은 이름을 가진 다른 명령이 있는지 알려주지 않습니다. 그러나 어느 것이 먼저 발견되었는지 알려줍니다. 그리고 그것은 우리가 그 명령을 내릴 때 기본적으로 사용되는 것입니다.

whereis명령은 이진 실행 파일, 소스 코드 및 명령 줄 매개 변수로 전달하는 명령에 대한 man 페이지를 찾습니다. 별도의 바이너리 실행 파일이 없기 때문에 쉘 내장 기능을 찾지 않습니다. 그것들은 Bash 실행 파일의 필수적인 부분입니다.

whereis명령 보고서 echo에있는 바이너리 실행 파일입니다 /bin디렉토리.

해당 버전을 사용하려면 echo명령 줄에서 실행 파일에 대한 경로를 제공하여 명시 적으로 호출해야합니다.

/ bin / echo-버전

쉘 내장은 --version명령 줄 인수가 무엇인지 알지 못하며 터미널 창에서 반복합니다.

echo-버전

여기에 표시된 예제는 모두 echoBash 셸에서의 기본 버전을 사용합니다 .

터미널에 텍스트 쓰기

터미널 창에 간단한 텍스트 문자열을 쓰려면 echo표시 할 문자열과 입력 합니다.

echo 제 이름은 Dave입니다.

텍스트는 우리를 위해 반복됩니다. 그러나 실험을하면서 곧 상황이 약간 더 복잡해질 수 있음을 알게 될 것입니다. 이 예를보십시오 :

echo 제 이름은 Dave이고 괴짜입니다.

터미널 창에   > 표지판이 표시되고 거기에 앉아 기다리고 있습니다. Ctrl + C를 누르면 명령 프롬프트로 돌아갑니다. 거기서 무슨 일이 있었 니?

"I 'm"이라는 단어의 작은 따옴표 또는 아포스트로피가 혼동 echo됩니다. 작은 따옴표를 텍스트의 따옴표로 묶은 부분의 시작으로 해석했습니다. 닫는 작은 따옴표를 감지하지 못했기 때문에  echo더 많은 입력을 기다리고있었습니다. 기다리고 있던 누락 된 작은 따옴표가 추가 입력에 포함될 것으로 예상했습니다.

문자열에 작은 따옴표를 포함하려면 가장 간단한 해결책은 전체 문자열을 큰 따옴표로 묶는 것입니다.

echo "내 이름은 Dave이고 괴짜입니다."

텍스트를 큰 따옴표로 묶는 것은 좋은 일반적인 조언입니다. 스크립트에서 전달하는 매개 변수를 명확하게 구분합니다 echo. 이렇게하면 스크립트를 훨씬 쉽게 읽고 디버깅 할 수 있습니다.

텍스트 문자열에 큰 따옴표 문자를 포함하려면 어떻게해야합니까? 간단 \합니다. 큰 따옴표 앞에 백 슬래시 를 넣으면됩니다 (사이에 공백 없음).

echo "제 이름은 데이브이고 \"괴짜입니다. \ ""

이것은 "geek"라는 단어를 큰 따옴표로 묶습니다. 곧 이러한 백 슬래시 이스케이프 문자를 더 많이 보게 될 것입니다.

에코와 함께 변수 사용

지금까지 터미널 창에 미리 정의 된 텍스트를 작성했습니다. 와 함께 변수를 사용 echo하여보다 동적 인 출력을 생성하고 셸에서 값을 삽입 할 수 있습니다. 다음 명령으로 간단한 변수를 정의 할 수 있습니다.

my_name = "데이브"

라는 변수 my_name가 생성되었습니다. "Dave"라는 텍스트의 값이 지정되었습니다. 전달한 문자열에 변수 이름을 사용할 수 있으며 변수 echo 값은 터미널 창에 기록됩니다. $변수 echo임을 알리려면 변수 이름 앞에 달러 기호 를 넣어야 합니다.

주의 사항이 있습니다. 문자열을 작은 따옴표로 echo 감싸면 모든 것을 문자 그대로 취급 합니다 . 변수 이름 이 아닌 변수 값을 표시 하려면 큰 따옴표를 사용하십시오.

echo '내 이름은 $ my_name입니다'
echo "내 이름은 $ my_name입니다."

반복 할 가치가 있습니다.

  • 작은 따옴표를 사용 하면 텍스트가 문자 그대로 터미널 창에 기록됩니다 .
  • 따옴표를 사용  하면 변수가 해석되고 (변수 확장이라고도 함) 이 터미널 창에 기록됩니다.

관련 : Bash에서 변수로 작업하는 방법

echo와 함께 명령 사용

명령을 사용 echo하여 터미널 창에 기록 된 문자열에 출력을 통합 할 수 있습니다 . $명령이 변수 인 것처럼 달러 기호 를 사용하고 전체 명령을 괄호로 묶어야합니다.

date 명령을 사용하겠습니다. 한 가지 팁은에서 명령을 사용하기 전에 자체적으로 명령을 사용하는 것입니다 echo. 이렇게하면 명령 구문에 문제가있는 경우 명령에 포함하기 전에이를 식별하고 수정합니다 echo. 그런 다음 echo명령이 예상 한 작업을 수행하지 않는 echo경우 명령의 구문을 이미 증명 했으므로 구문에 문제가 있음을 알 수 있습니다 .

따라서 터미널 창에서 다음을 시도하십시오.

날짜 + % D

그리고 우리가 date 명령에서 기대하는 바를 얻는 것에 만족하면이를 명령에 통합 할 것입니다 echo.

echo "오늘 날짜 : $ (date + % D)"

명령은 괄호 안에 있고 달러 기호 $ 는 첫 번째 괄호 바로 앞에 있습니다.

에코로 텍스트 서식 지정

-e(백 슬래시 탈출을 가능) 옵션은 우리가 텍스트의 레이아웃을 변경하려면 몇 백 슬래시 이스케이프 문자를 사용할 수 있습니다. 사용할 수있는 백 슬래시 이스케이프 문자는 다음과 같습니다.

  • \ a : 경고 (역사적으로 BEL로 알려짐). 이것은 기본 경고음을 생성합니다.
  • \ b : 백 스페이스 문자를 씁니다.
  • \ c : 추가 출력을 중단합니다.
  • \ e : 이스케이프 문자를 씁니다.
  • \ f : 용지 공급 문자를 씁니다.
  • \ n : 새 줄을 씁니다.
  • \ r : 캐리지 리턴을 씁니다.
  • \ t : 가로 탭을 씁니다.
  • \ v : 세로 탭을 씁니다.
  • \\ : 백 슬래시 문자를 씁니다.

그들 중 일부를 사용하고 그들이 무엇을하는지 보자.

echo -e "이것은 긴 줄의 텍스트입니다. \ n3 줄에 걸쳐 \ n \ n \ n \ tthe \ tthird \ tline"

텍스트는 문자를 사용한 새 줄로 분할되고 \n문자를 사용한 곳에 탭이 삽입됩니다 \t.

echo -e "여기 \ vare \ vvertical \ vtabs"

\n새 줄 문자 와 마찬가지로 세로 탭 \v은 텍스트를 아래 줄로 이동합니다. 그러나 \n 새 줄 문자 와 달리  \v세로 탭은 열 0에서 새 줄을 시작하지 않습니다. 현재 열을 사용합니다.

\b백 스페이스 문자가 커서 다시 하나 개의 문자를 이동합니다. 터미널에 쓸 텍스트가 더 있으면 해당 텍스트가 이전 문자를 덮어 씁니다.

echo -e "123 \ b4"

"3"은 "4"로 덮어 씁니다.

\r캐리지 리턴 문자가 원인이  echo현재 라인의 시작으로 돌아가과 열 0에서 더 이상 텍스트를 작성 할 수 있습니다.

echo -e "123 \ r456"

"123"문자는 "456"문자로 덮어 씁니다.

\a경고 문자는 소리 "삐를."생성합니다 현재 테마에 대한 기본 경고음을 사용합니다.

echo -e "삑삑 \ a"

-n(아무 줄 바꿈) 옵션은 백 슬래시 이스케이프 순서 아니지만, 텍스트 레이아웃의 화장품에 영향을 미치지 않는, 그래서 우리는 여기에서 논의 할 것이다. echo텍스트 끝에 개행을 추가하는 것을 방지 합니다. 명령 프롬프트는 터미널 창에 기록 된 텍스트 바로 뒤에 나타납니다.

echo -n "마지막 줄 바꿈 없음"

파일 및 디렉토리에 echo 사용

echo일종의 가난한 사람의 버전으로 사용할 수 있습니다 ls. echo이와 같이 사용할 때 옵션은 거의 없습니다. 어떤 종류의 충실도 또는 미세 제어가 필요한 경우 ls및 다양한 옵션을 사용하는 것이 좋습니다 .

이 명령은 현재 디렉토리에있는 모든 파일과 디렉토리를 나열합니다.

에코 *

이 명령은 이름이 "D"로 시작하는 현재 디렉토리의 모든 파일 및 디렉토리를 나열합니다.

에코 D *

이 명령은 현재 디렉토리에있는 모든 ".desktop"파일을 나열합니다.

echo * .desktop

네. 이것은 echo의 장점을 발휘 하지 않습니다 . 사용 ls.

에코를 사용하여 파일에 쓰기

출력을 리디렉션하고 echo텍스트 파일을 만들거나 기존 텍스트 파일에 쓸 수 있습니다.

>리디렉션 연산자를 사용하는 경우 파일이 없으면 생성됩니다. 파일이 존재하면의 출력 echo이 파일 시작 부분에 추가되어 이전 내용을 덮어 씁니다.

>>리디렉션 연산자를 사용하는 경우 파일이 없으면 생성됩니다. 의 출력 echo은 파일 끝에 추가되며 파일의 기존 내용을 덮어 쓰지 않습니다.

echo "새 파일 생성." > sample.txt
echo "파일에 추가." >> sample.txt
고양이 sample.txt

첫 번째 명령으로 새 파일이 생성되고 여기에 텍스트가 삽입됩니다. 두 번째 명령은 파일 맨 아래에 텍스트 행을 추가합니다. 이 cat명령은 파일의 내용을 터미널 창에 표시합니다.

물론 파일에 유용한 정보를 추가하기 위해 변수를 포함 할 수 있습니다. 파일이 로그 파일 인 경우 타임 스탬프를 추가 할 수 있습니다. 다음 명령으로이를 수행 할 수 있습니다.

date명령 매개 변수 주위의 작은 따옴표에 유의하십시오 . 매개 변수 목록의 끝으로 해석되는 매개 변수 사이의 공백을 방지합니다. 매개 변수가 date 올바르게 전달되도록  합니다.

echo "시작된 로그 파일 : $ (date + '% D % T')"> logfile.txt
고양이 logfile.txt

로그 파일이 생성 cat되어 날짜 스탬프와 타임 스탬프가 모두 추가되었음을 보여줍니다.

관련 : Linux에서 stdin, stdout 및 stderr은 무엇입니까?

그것이 에코의 레퍼토리입니다.

간단한 명령이지만 필수 불가결합니다. 그것이 존재하지 않았다면 우리는 그것을 발명해야 할 것입니다.

제우스의 헛소리는 결국 좋은 일을했습니다.