Linux tput
tput
명령 은 terminfo 데이터 베 이 스 를 통 해 터미널 세 션 을 초기 화하 고 조작 합 니 다.사용 tput
을 통 해 커서 를 이동 하거나 변경 하거나 텍스트 속성 을 변경 하거나 터미널 화면의 특정 영역 을 제거 할 수 있 습 니 다.terminfo 데이터베이스 란 무엇 입 니까?
UNIX 시스템 의 terminfo 데이터 베 이 스 는 터미널 과 프린터 의 속성 과 기능 을 정의 하 는 데 사 용 됩 니 다. 각 장치 (예 를 들 어 터미널 과 프린터) 의 줄 수 와 열 수, 이 장치 에 보 낼 텍스트 의 속성 을 포함 합 니 다.UNIX 의 몇 가지 상용 프로그램 은 terminfo 데이터베이스 에 의존 하여 이러한 속성 과 많은 다른 내용 을 제공 합 니 다. 그 중에서 vi 와 emacs 편집기, curses 와 man 프로그램 을 포함 합 니 다.
tput 명령 행 안내
UNIX 의 대부분의 명령 과 마찬가지 로
tput
명령 은 셸 명령 줄 에서 도 사용 할 수 있 고 셸 스 크 립 트 에서 도 사용 할 수 있 습 니 다.더 잘 이해 할 수 있 도록 tput
본 고 는 먼저 명령 행 에서 말 한 다음 에 셸 스 크 립 트 의 예 시 를 설명 합 니 다.커서 속성
UNIX 셸 스 크 립 트 나 명령 줄 에서 커서 를 이동 하거나 커서 속성 을 변경 하 는 것 이 유용 할 수 있 습 니 다.어떤 경우 에는 민감 한 정보 (예 를 들 어 비밀번호) 를 입력 하거나 화면 에 있 는 두 개의 다른 영역 에 정 보 를 입력 해 야 할 수도 있 습 니 다.이러한 상황 에서 사용
tput
이 도움 이 될 수 있 습 니 다.이동 커서
사용
tput
은 각 장치 에서 커서 를 이동 하 는 위 치 를 편리 하 게 실현 할 수 있다. tput
에서 cup
옵션 이나 커서 위 치 를 사용 하면 장치 의 줄 과 열 에서 임의의 X 또는 Y 좌표 로 커서 를 이동 할 수 있 습 니 다.장치 왼쪽 상단 의 좌 표 는 (0, 0) 입 니 다.장치 에서 커서 를 5 열 (X) 의 첫 줄 (Y) 로 이동 하려 면 실행
tput cup 5 1
만 하면 됩 니 다.또 다른 예 는 tput cup 23 45
입 니 다. 이 명령 은 23 열 에 있 는 45 줄 로 커서 를 이동 시 킵 니 다.커서 를 이동 하고 정 보 를 표시 합 니 다.
또 다른 유용 한 커서 포 지 셔 닝 기술 은 커서 를 이동 하여 정 보 를 표시 하 는 명령 을 실행 한 다음 이전 커서 위치 로 돌아 가 는 것 입 니 다.
(tput sc ; tput cup 23 45 ; echo “Input from tput/echo at 23/45” ; tput rc)
subshell 명령 을 분석 해 보 겠 습 니 다.
tput sc
현재 커서 위 치 를 먼저 저장 해 야 합 니 다.현재 커서 위 치 를 저장 하려 면
sc
옵션 이나 "save cursor position"을 포함 하 십시오.tput cup 23 45
커서 위 치 를 저장 하면 커서 좌 표 는 (23, 45) 로 이동 합 니 다.
echo “Input from tput/echo at 23/45”
stdout 에 정 보 를 표시 합 니 다.
tput rc
이 정 보 를 표시 한 후에 커서 는 사용
tput sc
에 저 장 된 원래 위치 로 돌아 가 야 합 니 다.커서 를 마지막 으로 저 장 된 위치 로 되 돌려 주 려 면 rc
옵션 이나 "restore cursor position"을 포함 하 십시오.주의: 본 고 는 먼저 명령 행 을 통 해 실행
tput
하 는 것 을 상세 하 게 소개 하 였 기 때문에, 당신 은 자신의 subshell 에서 명령 을 실행 하 는 것 이 각 명령 을 단독으로 실행 하 는 것 보다 더 간결 하 다 고 느 낄 수 있 습 니 다.커서 속성 변경
어떤 장치 에 데 이 터 를 표시 할 때 커서 를 보고 싶 지 않 을 때 가 많 습 니 다.커서 를 보이 지 않 는 것 으로 변환 하면 데이터 가 굴 러 갈 때의 화면 을 더욱 깨끗하게 보일 수 있 습 니 다.커서 를 보이 지 않 으 려 면
civis
옵션 (예 를 들 어 tput civis
을 사용 하 십시오.데이터 가 완전히 표 시 된 후에 커서 를 다시 볼 수 있 도록 cnorm
옵션 을 사용 할 수 있 습 니 다.텍스트 속성
텍스트 의 디 스 플레이 방식 을 바 꾸 면 메뉴 의 한 단어 에 주의 하거나 중요 한 내용 에 주의 하 는 것 을 경계 할 수 있 습 니 다.텍스트 속성 을 다음 과 같이 변경 할 수 있 습 니 다. 텍스트 를 굵게 하고 텍스트 아래 에 밑줄 을 추가 하 며 배경 색상 과 전경 색상 을 변경 하고 색상 반전 방안 등 을 추가 할 수 있 습 니 다.
텍스트 의 색상 을 변경 하려 면
setb
옵션 (배경 색상 설정 에 사용) 과 setf
옵션 (전경 색상 설정 에 사용), terminfo 데이터베이스 에 분 배 된 색상 수 치 를 사용 하 십시오.일반적으로 분 배 된 수치 와 색상 의 대응 관 계 는 다음 과 같 지만 유 닉 스 시스템 에 따라 다 를 수 있 습 니 다.tput setb 6
tput setf 4
현재 색상 방안 을 반전 시 키 려 면 실행
tput rev
만 하면 됩 니 다.때로는 텍스트 착색 만 으로 는 부족 합 니 다. 즉, 다른 방식 으로 사용자 의 주 의 를 끌 려 고 합 니 다.두 가지 방식 으로 이 목적 을 달성 할 수 있다. 하 나 는 텍스트 를 굵 은 몸 으로 설정 하 는 것 이 고, 다른 하 나 는 텍스트 에 밑줄 을 추가 하 는 것 이다.
텍스트 를 굵게 바 꾸 려 면
bold
옵션 을 사용 하 십시오.밑줄 을 추가 하려 면 smul
옵션 을 사용 하 십시오.밑줄 친 텍스트 를 표시 한 후 rmul
옵션 을 사용 하 십시오.셸 스 크 립 트 를 다음 단계 로 올 립 니 다.
명령 행 에서 실행
tput
하 는 기본 지식 을 알 게 되 었 습 니 다. 배 운 지식 을 다른 기능 과 함께 셸 스 크 립 트 에 사용 하 는 방법 에 중점 을 두 겠 습 니 다.우선, tput
은 다음 과 같은 추가 기능 을 제공 합 니 다. 단말기 정보 (예 를 들 어 장치, 열, 줄 수) 를 추출 하고 화면의 데 이 터 를 제거 합 니 다.현재 열 수 (즉, 대상 장치 에서 사용 할 수 있 는 너비) 를 확인 하려 면
cols
옵션 을 사용 하 십시오.줄 수 (현재 높이) 를 찾 으 려 면 lines
옵션 을 사용 하 십시오.몇 가지 방법 으로 데 이 터 를 지 울 수 있 습 니 다. 구체 적 으로 필요 한 결과 에 달 려 있 습 니 다.현재 커서 위치 에서 줄 끝 까지 의 데 이 터 를 지 우려 면 사용 할 수 있 습 니 다
tput el
.현재 커서 위치 에서 장치 끝 에 있 는 데 이 터 를 지 우려 면 사용 할 수 있 습 니 다 tput ed
.전체 장 치 를 지 우려 면 사용 하 십시오 tput clear
.모두 스 크 립 트 에 넣 기
아래 코드 는 기본 메뉴 를 만 들 었 습 니 다.이 스 크 립 트 는
tput
에서 본 논문 에서 소개 한 여러 옵션 을 사용 하여 코드 를 강화 하 는 방법 을 소개 합 니 다. #!/bin/bash
trap `get_window_size` WINCH # trap when a user has resized the window
_UNDERLINE_ON=`tput smul` # turn on underline
_UNDERLINE_OFF=`tput rmul` # turn off underline
get_window_size() {
_WINDOW_X=`tput lines`
_WINDOW_Y=`tput cols`
_FULL_SPACES=`echo ""|awk `
{
_SPACES = `${_WINDOW_Y}`
while (_SPACES-- > 0) printf (" ")
}'`
_FULL_UNDERLINE=`echo "${_UNDERLINE_ON}${_FULL_SPACES}${_UNDERLINE_OFF}"`
unset _FULL_SPACES
show_menu
return 0
}
set_color() {
tput clear
PS3="Enter Selection[1-9]:"
select _COLOR in "Black" "Blue" "Green" "Cyan" "Red" "Magenta" "Yellow" "White" "Exit"
do
case ${REPLY} in
[1-8]) _X=`expr ${REPLY} - 1`;;
9) break;;
*) echo "Invalid Color"; continue;;
esac
if [[ ${1} = "b" ]]
then
tput setb ${_X}
else
tput setf ${_X}
fi
done
}
show_menu() {
while [[ -z ${_ANS} ]]
do
tput civis
tput clear
cat <<- EOF
Window Size: ${_WINDOW_X} / ${_WINDOW_Y}
Select => ${_UNDERLINE_ON} ${_UNDERLINE_OFF}
${_FULL_UNDERLINE}
B) Background Text Color
F) Foreground Text Color
X) Exit
EOF
tput rc
tput smul
tput cnorm
read _ANS
tput rmul
case ${_ANS} in
[Bb]) set_color "b";;
[Ff]) set_color "f";;
[Xx]) tput clear; exit;;
*)
echo -e "Invalid Selection: ${_ANS}\c"
sleep 2
;;
esac
unset _ANS
done
}
tput sgr0
tput civis
tput clear
tput cup 3 10
tput sc
tput cup 0 0
[[ -n ${_ANS} ]] && unset _ANS
get_window_size
exit 0
다음은 셸 스 크 립 트 를 분석 해 보 겠 습 니 다.
스 크 립 트 를 설명 하 는 방식 을 설정 합 니 다.이 예 에서 사용 할 셸 은 Bash 입 니 다.
WINCH
신호 에 함정 을 설치 하고 get_window_size
함 수 를 포 획 된 신호 의 트리거 로 지정 합 니 다.함정 을 설정 한 후 나중에 스 크 립 트 에 입력 할 때 사용 할 수 있 도록 두 변 수 를 정의 합 니 다.#!/bin/bash
trap `get_window_size` WINCH # trap when a user has resized the window
_UNDERLINE_ON=`tput smul` # turn on underline
_UNDERLINE_OFF=`tput rmul` # turn off underline
줄 수 와 열 수 를 확인 하기 위해 서
get_widow_size
라 는 함 수 를 만 듭 니 다.그 밖 에 정의 _FULL_UNDERLINE
변수, 장치 의 너비 (밑줄 이 있 음).get_window_size() {
_WINDOW_X=`tput lines`
_WINDOW_Y=`tput cols`
_FULL_SPACES=`echo ""|awk `
{
_SPACES =`${_WINDOW_Y}`
while (_SPACES-- > 0) printf (" ")
}'`
_FULL_UNDERLINE=`echo "${_UNDERLINE_ON}${_FULL_SPACES}${_UNDERLINE_OFF}"`
unset _FULL_SPACES
show_menu
return 0
}
사용자 가 배경 과 전경 텍스트 색상 을 테스트 할 수 있 도록
set_color
라 는 함 수 를 만 듭 니 다.set_color() {
tput clear
PS3="Enter Selection[1-9]:"
select _COLOR in "Black" "Blue" "Green" "Cyan" "Red" "Magenta" "Yellow" "White" "Exit"
do
case ${REPLY} in
[1-8]) _X=`expr ${REPLY} - 1`;;
9) break;;
*) echo "Invalid Color"; continue;;
esac
if [[ ${1} = "b" ]]
then
tput setb ${_X}
else
tput setf ${_X}
fi
done
}
show_menu
이라는 함 수 를 만 들 고 이 함 수 를 통 해 장치 의 크기 를 보 여 줍 니 다.이 함수 에서 보 여 주 는 내용 은 커서 를 보이 지 않 는 것 으로 바 꾸 고 화면 을 지우 고 텍스트 를 인쇄 하 며 저 장 된 커서 위치 로 돌아 가 는 것 입 니 다.show_menu() {
while [[ -z ${_ANS} ]]
do
tput civis
tput clear
cat <<- EOF
Window Size: ${_WINDOW_X} / ${_WINDOW_Y}
Select => ${_UNDERLINE_ON} ${_UNDERLINE_OFF}
${_FULL_UNDERLINE}
B) Background Text Color
F) Foreground Text Color
X) Exit
EOF
tput rc
tput smul
tput cnorm
read _ANS
tput rmul
case ${_ANS} in
[Bb]) set_color "b";;
[Ff]) set_color "f";;
[Xx]) tput clear; exit;;
*)
echo -e "Invalid Selection: ${_ANS}\c"
sleep 2
;;
esac
unset _ANS
done
}
다음은 기본 커서 속성 을 설정 합 니 다.우선
sgr0
을 사용 하여 모든 속성 을 제거 할 수 있 습 니 다.커서 가 보이 지 않 고 화면 이 지 워 집 니 다.보이 지 않 는 커서 는 현재 (3, 10) 로 이동 합 니 다. 이 위 치 는 저장 되 고 커서 는 (0, 0) (왼쪽 상단) 으로 이동 합 니 다.tput sgr0
tput civis
tput clear
tput cup 3 10
tput sc
tput cup 0 0
마지막 으로 호출
get_window_size
함수 로 창 크기 를 가 져 와 function show 메뉴 를 호출 합 니 다.[[ -n ${_ANS} ]] && unset _ANS
get_window_size
exit 0
종결 어
tput
유 닉 스 의 셸 스 크 립 트 를 도입 하면 스 크 립 트 의 외관 을 개선 할 수 있 습 니 다.UNIX 에 서 는 수백 가지 방법 으로 하나의 임 무 를 수행 할 수 있 습 니 다. 왜 당신 의 방법 에 색채 와 개성 화 된 요 소 를 추가 하지 않 습 니까?학습 tput
은 매우 쉽 고 스 크 립 트 에 매우 효과 적일 수 있 습 니 다.사용 자 는 화면의 외관 을 더 많이 제어 하 는 데 도움 이 될 것 이다.당신 이 tput
을 사용 하여 무엇 을 할 수 있 는 지 에 대해 본 고 는 벽돌 을 던 져 옥 을 끌 어 올 리 는 역할 만 했 습 니 다.tput
과 아주 적은 작업량 을 통 해 매우 아름 답 고 전면적 인 메뉴 로 구동 되 는 셸 스 크 립 트 를 만 들 수 있 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.