본문 바로가기
코딩 공부/Terminal

맥 터미널 기본 명령어 - echo

by JH-M 2021. 6. 27.

문자 출력하기

echo "문자"

변수 출력하기

echo $변수

명령 결과 출력

echo $(터미널 명령)

모든 파일 및 디렉토리 출력

echo *

경고음

echo "\a"

이전 d 글자삭제

echo abcd"\b "
echo abcd"\b"efg

# 위와 같은 표현, \b 만 따옴표 안에 들어가면 됩니다
echo "abcd\b "
echo "abcd\befg"

\b 로 끝나면 \b " 와 같이 공백을 추가하지 않으면 글자삭제가 되지 않습니다

\b 뒤에 글자가 이어지면 글자가 삭제됩니다

중단, 이어지는 문자 출력 안함

echo abc"\c"def

다음줄

echo a"\n"b

echo a"\t"a

다음줄 들여쓰기

echo a"\v"b
echo a"\f"b

덮어쓰기

echo "oooooo\raa"
echo "oooooo\r       \raa"

문자로 출력

echo -E text"\ "text
echo -E "text\text"

첫번째 줄 \ " 와 같이 중간에 공백은 \" 가 따옴표로 인식되기 때문입니다

두번째 줄과 같이 \ 뒤에 텍스트가 이어지면 정상적으로 출력됩니다

개행 없이 출력

echo -n te; echo xt

연산하기

echo $(( 1 + 2 ))
echo $[ 1 + 2 ]

16진수 10진수 출력

echo $[ 0x11 ]
echo $[ 16#11 ]

# 10진수 -> 16진수
echo "obase=16;11" | bc
printf '%x\n' 11

 

bc : 수식을 연산해줍니다

obase : 진수 출력을 설정합니다

8진수 10진수 출력

echo $[ 8#11 ]

# 10진수 -> 8진수
echo "obase=8;11" | bc
printf '%o\n' 11

2진수 10진수 출력

echo $[ 2#11 ]

# 10진수 -> 2진수
echo "obase=2;11" | bc

ASCII Code (8진수, 0~3자리 입력)

echo "\0141"

ASCII Code (16진수, 1~2자리 입력)

echo "\x61"

Unicode (16진수, 1~8자리 입력)

echo "\U1F431"

Unicode (16진수, 1~4자리 입력)

echo "\u1100"

범위 지정

# 숫자 범위지정
echo {1..10}
# 숫자 2씩 증가 범위지정
echo {1..10..2}
# 알파벳 범위지정
echo {a..z}
# 한글 범위지정
echo {가..하}

텍스트 파일 만들기

# > 왼쪽 표준출력을 > 오른쪽 파일에 입력 
echo "텍스트" > file.txt
# 이어붙이기
echo "텍스트" >> file.txt

ANSI escape code

터미널 텍스트 포맷제어 코드로 터미널 프롬프트와 echo, printf 등의 명령을 통해 확인할 수 있습니다

더보기
더보기
더보기

a [;+ ...] + b

a 에는 보통 8진수 넘버나 \e 와 같은 표현이 들어갑니다
\033 과 \e 는 아스키코드 ESC 키와 같은 표현입니다
b 에는 ANSI escape sequence 명령이 들어갑니다

echo "\e[33m"text
echo "\e[33m"text"\e[m"next

 

\e[33m 으로 시작해서 \e[m 으로 끝마칩니다
\e[m 는 \e[0m 과 같습니다
여기서 0 은 리셋 명령입니다
m 은 텍스트 칼라를 설정하는 명령이고, 뒤에 33은 노란색 칼라 값입니다
33과 같이 숫자마다 다양한 기능을 가지고 있습니다

 

텍스트 그래픽 설정

# 0 : Normal or Reset 
echo "\e[0mtext"
# 1 : Bold (increased intensity)
echo "\e[1mtext"
# 2 : Faint (decreased intensity)
echo "\e[2mtext"
# 3 : Italic
echo "\e[3mtext"
# 4 : Underline
echo "\e[4mtext"
# 5 : Slow blink
echo "\e[5mtext"
# 7 : Invert (전경색, 배경색 반전)
echo "\e[7mtext"
# 8 : Hide
echo "\e[8mtext"
# 22 : Normal intensity
echo "\e[1mtext\e[22mtext"
# 23 : Neither italic
echo "\e[3mtext\e[23mtext"
# 24 : Not underlined (4 밑줄긋기 취소)
echo "\e[4mtext\e[24mtext"
# 25 : Not blinking
echo "\e[5mtext\e[25mtext"
# 27 : Not reversed
echo "\e[7mtext\e[7mtext"
# 28 : Not hide
echo "\e[8mtext\e[28mtext"
# 30 ~ 37 : Set foreground color
echo "\e[30mtext" # Black
echo "\e[31mtext" # Red
echo "\e[32mtext" # Green
echo "\e[33mtext" # Yellow
echo "\e[34mtext" # Blue
echo "\e[35mtext" # Magenta
echo "\e[36mtext" # Cyan
echo "\e[37mtext" # White
# 38 : Set foreground color (뒤에 211 숫자 자리에 256 색상 값 입력)
echo "\e[38;5;211mHello"
# 39 : Default foreground color
echo "\e[31mtext\e[39mtext"
# 40 ~ 47 : Set background color
echo "\e[40mtext" # Black
echo "\e[41mtext" # Red
echo "\e[42mtext" # Green
echo "\e[43mtext" # Yellow
echo "\e[44mtext" # Blue
echo "\e[45mtext" # Magenta
echo "\e[46mtext" # Cyan
echo "\e[47mtext" # White
# 48 : Set foreground color (뒤에 211 숫자 자리에 256 색상 값 입력)
echo "\e[48;5;211mHello"
# 49 : Default foreground color
echo "\e[41mtext\e[49mtext"
# 90 ~ 97 : Set bright foreground color
echo "\e[90mtext" # Bright Black
echo "\e[91mtext" # Bright Red
echo "\e[92mtext" # Bright Green
echo "\e[93mtext" # Bright Yellow
echo "\e[94mtext" # Bright Blue
echo "\e[95mtext" # Bright Magenta
echo "\e[96mtext" # Bright Cyan
echo "\e[97mtext" # Bright White
# 100 ~ 107 : Set bright background color
echo "\e[100mtext" # Bright Black
echo "\e[101mtext" # Bright Red
echo "\e[102mtext" # Bright Green
echo "\e[103mtext" # Bright Yellow
echo "\e[104mtext" # Bright Blue
echo "\e[105mtext" # Bright Magenta
echo "\e[106mtext" # Bright Cyan
echo "\e[107mtext" # Bright White

 

기타 코드

# 터미널 화면 정리
echo "\e[2J"
# 줄 삭제
echo abcd"\e[1K"efg

 

ANSI escape code 참고: https://en.wikipedia.org/wiki/ANSI_escape_code 

 

ANSI escape code - Wikipedia

Method using in-band signaling to control the formatting, color, and other output options on video text terminals ANSI escape sequences are a standard for in-band signaling to control cursor location, color, font styling, and other options on video text te

en.wikipedia.org

 

댓글