Linux에서 Echo 명령을 사용하는 방법
- Dave McKay
@TheGurkha
- 2019 년 10 월 29 일 오전 8:00 EDT
echo
명령은 형식화 된 텍스트를 터미널 창에 쓰는 데 적합합니다. 정적 텍스트 일 필요도 없습니다. 쉘 변수, 파일 이름 및 디렉토리를 포함 할 수 있습니다. echo를 리디렉션하여 텍스트 파일과 로그 파일을 만들 수도 있습니다. 이 간단한 가이드를 따라 방법을 알아보십시오.
Echo는 반복하라는 말을 반복합니다
Zeus는 아름다운 님프와 어울리기 위해 올림푸스 산을 떠나는 것을 좋아했습니다. 한 번의 여행에서 그는 Echo라는 산의 요정에게 아내 헤라가 그를 따라 오면 길을 잃게하라고 말했습니다. Hera는 Zeus를 찾아 왔고 Echo는 Hera가 대화를 계속할 수 있도록 최선을 다했습니다. 마침내 헤라는 성질을 잃고 불쌍한 에코를 저주하여 다른 사람이 한 마지막 말만 반복했습니다. Hera가 제우스를 따라 잡았을 때 한 일은 누구나 추측 할 수있는 일입니다.
그것이 echo
의 삶의 많은 부분입니다. 반복하라는 말을 반복합니다. 이것은 간단한 기능이지만 매우 중요한 기능입니다. 예를 들어 echo
가 없으면 쉘 스크립트에서 가시적 인 출력을 얻을 수 없습니다.
수많은 종소리와 휘파람 소리가 들리면 echo
에 사용자가 몰랐거나 잊었을 기능이있을 가능성이 높습니다.
echo? echo!
대부분의 Linux 시스템은 echo
의 두 가지 버전을 제공합니다. Bash 셸에는 자체 echo
가 내장되어 있으며 echo
의 바이너리 실행 가능 버전도 있습니다.
다음 명령을 사용하여 두 가지 다른 버전을 볼 수 있습니다.
type echo
whereis echo
type
명령은 인수로 전달하는 명령이 쉘 내장, 바이너리 실행 파일, 별칭 또는 함수인지 여부를 알려줍니다. echo
가 쉘 내장이라고보고합니다.
답을 찾으면 바로 type
는 더 이상 일치하는 항목을 찾지 않습니다. 따라서 시스템에 같은 이름을 가진 다른 명령이 있는지 알려주지 않습니다. 그러나 어느 것이 먼저 발견되었는지 알려줍니다. 그리고 이것이 우리가 해당 명령을 실행할 때 기본적으로 사용되는 것입니다.
whereis
명령은 바이너리 실행 파일, 소스 코드 및 매뉴얼 페이지를 찾습니다. 명령 줄 매개 변수로 전달하는 명령입니다. 별도의 바이너리 실행 파일이 없기 때문에 셸 내장 기능을 찾지 않습니다. Bash 실행 파일의 필수 부분입니다.
whereis
명령은 echo
가 바이너리 실행 파일이라고보고합니다. /bin
디렉토리에 있습니다.
echo
의 해당 버전을 사용하려면 다음을 제공하여 명시 적으로 호출해야합니다. 명령 줄에서 실행 파일의 경로 :
/bin/echo --version
셸 내장은 --version
명령 줄 인수는 터미널 창에서 반복합니다.
echo --version
여기에 표시된 예제는 모두 기본값을 사용합니다. Bash 셸에서 echo
버전.
터미널에 텍스트 쓰기
단순한 텍스트 문자열을 터미널 창에 쓰기 에서 echo
를 입력하고 표시 할 문자열을 입력합니다.
echo My name is Dave.
텍스트가 반복됩니다. 하지만 실험을하면서 곧 상황이 약간 더 복잡해질 수 있음을 알게 될 것입니다. 다음 예를보십시오.
echo My name is Dave and I"m a geek.
터미널 창에 >
기호가 표시됩니다. 거기 앉아 기다리고 있습니다. Ctrl + C를 누르면 명령 프롬프트로 돌아갑니다. 무슨 일이 있었나요?
“I ‘m”이라는 단어의 작은 따옴표 또는 아포스트로피가 echo
를 혼동했습니다. 작은 따옴표를 인용 된 섹션의 시작으로 해석했습니다. 닫는 작은 따옴표를 감지하지 못했기 때문에 echo
가 더 많은 입력을 기다리고있었습니다. 추가 입력에 기다리는 누락 된 작은 따옴표가 포함될 것으로 예상했습니다. p>
문자열에 작은 따옴표를 포함하려면 가장 간단한 해결책은 전체 문자열을 큰 따옴표로 묶는 것입니다.
echo "My name is Dave and I"m a geek."
텍스트 감싸기 큰 따옴표로 묶는 것은 좋은 일반적인 조언입니다. 스크립트에서 echo
에 전달하는 매개 변수를 명확하게 구분합니다. 이렇게하면 스크립트를 훨씬 쉽게 읽고 디버깅 할 수 있습니다.
텍스트 문자열에 큰 따옴표 문자를 포함하려면 어떻게해야합니까?간단합니다. 큰 따옴표 앞에 백 슬래시 \
를 넣으면됩니다 (사이에 공백 없음).
echo "My name is Dave and I"m a \"geek.\""
이렇게하면 “geek”라는 단어가 큰 따옴표로 묶여 있습니다. 곧 이러한 백 슬래시 이스케이프 문자를 더 많이 보게 될 것입니다.
echo와 함께 변수 사용
지금까지 , 우리는 터미널 창에 미리 정의 된 텍스트를 작성했습니다. echo
와 함께 변수를 사용하여 더 동적이고 셸에서 값을 삽입 한 출력을 생성 할 수 있습니다. 다음 명령으로 간단한 변수를 정의 할 수 있습니다.
my_name="Dave"
my_name
라는 변수가 생성되었습니다. 텍스트 “Dave”의 값을 할당했습니다. echo
에 전달하는 문자열에 변수 이름을 사용할 수 있으며 변수 값은 터미널 창에 기록됩니다. 변수 이름 앞에 달러 기호 $
를 넣어 echo
가 변수임을 알 수 있도록해야합니다.
주의 사항이 있습니다. 문자열을 작은 따옴표로 묶은 경우 echo
는 모든 것을 문자 그대로 처리합니다. 변수 이름이 아닌 변수 값을 표시하려면 큰 따옴표를 사용하십시오.
echo "My name is $my_name"
echo "My name is $my_name"
다소 적절하게 반복 할 가치가 있습니다.
- 작은 따옴표를 사용하면 텍스트가 문자 그대로 터미널 창에 기록됩니다.
- 큰 따옴표를 사용하면 해석되는 변수 (변수 확장이라고도 함)가 터미널 창에 기록됩니다.
관련 : Bash에서 변수로 작업하는 방법
echo
echo
와 함께 명령을 사용하고 출력을 터미널 창에 기록되는 문자열에 통합 할 수 있습니다. 명령이 변수 인 것처럼 달러 기호 $
를 사용하고 전체 명령을 괄호로 묶어야합니다.
날짜 명령을 사용하겠습니다. . 한 가지 팁은 echo
와 함께 사용하기 전에 명령을 단독으로 사용하는 것입니다. 이렇게하면 명령 구문에 문제가있는 경우 echo
명령에 포함하기 전에이를 식별하고 수정합니다. 그런 다음 echo
명령이 예상 한 작업을 수행하지 않으면 문제가 echo
구문에 있어야한다는 것을 알 수 있습니다. 명령의 구문을 이미 검증했습니다.
따라서 터미널 창에서 다음을 시도해보십시오.
date +%D
그리고 우리가 date 명령에서 기대하는 내용을 가져 와서 echo
명령에 통합합니다.
echo "Today"s date is: $(date +%D)"
명령은 괄호 안에 있고 달러 기호 $
는 첫 번째 괄호 바로 앞에 있습니다.
에코로 텍스트 서식 지정 h2>
-e
(백 슬래시 이스케이프 활성화) 옵션을 사용하면 일부 백 슬래시 이스케이프 문자를 사용하여 텍스트 레이아웃을 변경할 수 있습니다. 다음은 사용할 수있는 백 슬래시 이스케이프 문자입니다.
그 중 일부를 사용하고 그 기능을 살펴 보겠습니다.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
텍스트 \n
문자를 사용한 새 줄로 분할되고 \t
문자를 사용한 탭이 삽입됩니다.
echo -e "Here\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 "Make a bleep\a"
-n
(줄 바꿈 없음) 옵션은 백 슬래시 이스케이프 된 시퀀스가 아니지만 텍스트 레이아웃의 외형에 영향을 미치므로 여기서 논의하겠습니다. echo
가 추가되지 않도록합니다. 텍스트 끝에 줄 바꾸기 명령 프롬프트는 터미널 창에 기록 된 텍스트 바로 뒤에 나타납니다.
echo -n "no final newline"
파일 및 디렉토리에 echo 사용
echo
를 정렬로 사용할 수 있습니다. 가난한 사람의 버전 ls
. 이와 같이 echo
를 사용할 때 옵션은 거의 없습니다. 어떤 종류의 충실도 또는 미세 제어가 필요한 경우 ls
및 다양한 옵션을 사용하는 것이 좋습니다.
이 명령은 모든 파일을 나열하고 현재 디렉토리의 디렉토리 :
echo *
이 명령은 이름이 “D”로 시작하는 현재 디렉토리의 모든 파일과 디렉토리를 나열합니다.
echo D*
이 명령은 현재 디렉토리에있는 모든 “.desktop”파일을 나열합니다.
echo *.desktop
예. 이것은 echo
의 강점에 맞지 않습니다. ls
를 사용합니다.
echo를 사용하여 파일에 쓰기
echo
텍스트 파일을 생성하거나 기존 텍스트 파일에 기록합니다.
>
리디렉션 연산자를 사용하는 경우 파일이 존재하지 않으면 생성됩니다. 파일이 존재하는 경우 echo
의 출력이 파일 시작 부분에 추가되어 이전 콘텐츠를 덮어 씁니다.
>>
리디렉션 연산자, 파일이없는 경우 생성됩니다. echo
의 출력은 파일 끝에 추가되며 파일의 기존 내용을 덮어 쓰지 않습니다.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
첫 번째 명령으로 새 파일이 생성되고 텍스트가 삽입됩니다. 그것에. 두 번째 명령은 파일 맨 아래에 텍스트 행을 추가합니다. cat
명령은 파일의 내용을 터미널 창에 표시합니다.
물론 변수를 포함하여 파일에 유용한 정보를 추가 할 수 있습니다. 파일이 로그 파일 인 경우 타임 스탬프를 추가 할 수 있습니다. 다음 명령으로이를 수행 할 수 있습니다.
date
명령의 매개 변수를 작은 따옴표로 묶습니다. 매개 변수 목록의 끝으로 해석되는 매개 변수 사이의 공백을 방지합니다. 매개 변수가 date
에 올바르게 전달되었는지 확인합니다.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
로그 파일이 생성되고 cat
는 날짜 스탬프와 타임 스탬프가 모두 추가되었음을 보여줍니다.
관련 : Linux에서 stdin, stdout 및 stderr은 무엇입니까?
이것은 echo의 레퍼토리입니다.
간단한 명령이지만 필수 불가결합니다. 그것이 존재하지 않았다면 우리는 그것을 발명해야 할 것입니다.
Zeus의 헛소리는 결국 좋은 일이었습니다.
Dave McKay는 천공 종이 테이프가 유행 할 때 컴퓨터를 처음 사용했으며 그 이후로 프로그래밍을 해왔습니다. IT 업계에서 30 년 이상 근무한 후 그는 현재 전임 기술 저널리스트입니다. 경력 기간 동안 그는 프리랜서 프로그래머, 국제 소프트웨어 개발 팀의 관리자, IT 서비스 프로젝트 관리자, 가장 최근에는 데이터 보호 책임자로 일했습니다. Dave는 Linux 전도사이자 오픈 소스 지지자입니다. 전체 약력 읽기 “