나는 다양한 요구를 충족시키기 위해 많은 bash 스크립트를 작성합니다. 최근에는 그 위에 다양한 지표를 구현하고 싶은 충동을 느끼기 시작했습니다.
자동화된 무인 설치 스크립트에서 어떤 작업이 수행되고 있는지 아는 것이 좋을 것입니다.
또한..실제 진행률을 보여주는 상태 표시줄이 있으면 좋을 것 같습니다.
터미널 출력을 조작하기 위한 Linux(Debian 권장) 모델과 같은 라이브러리와 명령이 있습니까?
(다음 명령은 독자가 이해할 수 있도록 가짜 모델입니다.)
txtoverlay -k head -c azure "모든 명령 위에 MyString 표시"
또는
txtovelay -k tail -c green -a right "[완전성: 57%]"
또는
txtovelay -k 캔버스-c 하늘색-b 진한 파란색-l 2 -t 5 -w 68 -h 50
다음 그래픽 모델과 같은 것을 생성하고 싶으십니까?
아니면 좀 더 복잡한 오버레이..
기본적으로 개념은 HTML에서도 동일할 수 있습니다. 기본 웹페이지에는 위치가 고정된 일부 DIV가 있습니다.
<div id="MyDiv1" style="position:fixed; color: #00ffff; top: 0px; left: 0px; padding: 10px"></div>
<div id="MyDiv2" style="position:fixed; color: #00ff00; bottom: 0px; right: 0px; padding: 10px; text-align: right"></div>
그리고 스크립트 실행 중에 때때로 다음과 같은 다양한 명령을 실행합니다.
document.getElementById("MyDiv1").innerHTML = "Step 5: Installing NET-TOOLS package in progress..<br>-------------------------"
document.getElementById("MyDiv2").innerHTML = "[Completition: 57 % ]"
답변1
예, 이러한 일을 할 수 있습니다.특정 위치에 컬러 텍스트를 배치하는 방법에 대한 질문에만 집중하세요.간단하지만 다소 낮은 수준의 접근 방식은 이 tput
유틸리티를 사용하는 것입니다. tput
데이터베이스의 도움으로 터미널 화면을 조작하는 명령이 많이 있습니다 terminfo
. 예를 들어 tput cup 23 4
커서를 터미널의 23행과 4열로 이동합니다. 다른 예:
tput ed # clear to end of screen
tput setaf 2 # set foreground color to bright green
tput cubl # move cursor left one space
tput rev # turn on reverse video mode
tput sc # save the cursor position
tput rc # restore the cursor position
stty
이 유틸리티의 용도를 찾을 수도 있습니다 . 예를 들어, 현재 화면의 크기를 확인하려는 경우 다음과 같이 할 수 있습니다 stty size
.
나는 이전에 일부 유틸리티에 대한 대략적인 "GUI"를 구축하여 화면을 두 부분으로 나눴습니다.상단에는 고정 높이 헤더가 있습니다. 하단에는 (스크롤링) 명령 출력이 포함되어 있습니다.저는 Bash 스크립트와 +만을 사용하여 tput
이 작업을 수행했습니다 stty
. 시행착오를 통해 많은 것을 찾았지만 온라인에는 다음과 같은 좋은 리소스가 있습니다.http://linuxcommand.org/lc3_adv_tput.php
man tput
및 을 참조하십시오 man 5 terminfo
. 후자의 경우 아래로 스크롤해야 합니다.사전 정의된 함수특히 부분.
더 높은 수준의 추상화가 있을 수 있습니다.용어 정보화면 기반 작업이지만 비교적 간단한 요구 사항이 있는 경우 tput
좋은 선택입니다 . (나는 tput
이것이라고 믿는다저주다른 답변에 언급된 패키지입니다. )
편집하다:모든 화면에서 이러한 기능을 원하는 것처럼 들리므로 tput
위에서 설명한 방법을 사용하고 PROMPT_COMMAND
메시지가 표시될 때마다 호출을 새로 고칠 때마다 해당 스크립트에 환경 변수를 지정하는 쉘 스크립트를 작성하여 이 작업을 수행할 수 있다는 점을 덧붙여야 합니다. 더 자주 새로고침하려면 화면에 연결되어 있는 동안 백그라운드에서 일부 프로세스가 실행되어야 합니다. 이것은 내가 이 답변에서 물고자 하는 것 이상입니다.