쉘에서 포맷으로 화면 하드 상태를 동적으로 변경하는 방법은 무엇입니까?


2

쉘에서 형식으로 화면 하드 상태를 동적으로 변경하는 방법은 무엇입니까? 256 색과 탭 등을 사용하여 화면을 성공적으로 구성했습니다. 여기 내 .screenrc가 있습니다 : http://pastebin.com/g8XbMWBH

탭의 캡션과 hardstatus를 메시징 상태 줄과 같은 방식으로 사용합니다.

내가하고 싶은 것은 간단합니다 : 쉘 스크립트 반환에서 hardstatus에 컬러 메시지를 표시합니다.

이 시점에서 내가 한 일은 다음과 같습니다.

# changing xterm window title:
echo -e '\033k'window_title'\033\\'
echo -ne "\ek window_title\e\\"

# sending non colored messages to hardstatus:
echo -ne "\e! hardstatus_global_message\e\\"
echo -ne "\e^ hardstatus_private_message\e\\"

# reformating the hardstatus string:
echo -ne "\e]0; %{.BW}%{..G}colored hardstatus try\e\\"
echo -ne "\e_ %{.BW}%{..G}colored hardstatus try\e\\"

이스케이프 코드는 http://yz.kiev.ua/www/etc/screen-virt-term.txt에서 확인할 수 있습니다.

나는 hardstatus 문자열을 다시 포맷하는 방법이나 색상 코드를 보내는 방법, 심지어 가능하지 않은지 여전히 보지 못합니까? 몇 시간 동안 여기저기서 검색, 지금 피곤하고 물어, 감사합니다!

답변:


1

당신이 말하는대로 hardstatus 문자열을 채색하는 것이 가능합니다. 색상 코드를 스크립트 출력으로 사용하는 경우 일반적으로 .screenrc 파일에서 사용하는 퍼센트 부호 (%) 대신 특수 ASCII 문자 (005)를 사용하여 색상 코드를 이스케이프해야합니다. 예제 스크립트에서는 다음과 같은 것이 있습니다.

#script.sh
Black="\005{K}"
Red="\005{R}"
Green="\005{G}"
Yellow="\005{Y}"
Blue="\005{B}"
Purple="\005{M}"
Cyan="\005{C}"
White="\005{W}"

echo -ne "Here is$Green Green$White text."

그런 다음 .screenrc 파일에서 이미 알고 있듯이 backtick 명령으로 위 스크립트를 호출하십시오.

# .screenrc
backtick 101 5 5 /path/to/script.sh

hardstatus alwayslastline "%101`"

0

gnil의 솔루션 backtick은 hardstatus가 x 초마다 업데이트되도록하려는 경우 매우 유용합니다. 쉘에서 무언가를 실행할 때 ( Enter 키를 눌렀을 때) hardstatus 만 업데이트 하려면이 단계를 따르는 것이 좋습니다.

  1. 당신의 hardstatus 라인 어딘가에 넣어 %h
  2. 실행하여 테스트 echo -ne '\x1B_Hello World\x1B\표시해야이 Hello World당신의 위치 어디 hardstatus에%h
  3. gnil이 제안한 것과 비슷한 스크립트를 만듭니다. HARDLINE="\005{g}$PWD\005{-}" echo -ne '\x1B_'$HARDLINE'\x1B\'
  4. 이 스크립트를 테스트하면 스크립트를 실행할 때 현재 작업 디렉토리가 하드 상태로 표시됩니다
  5. Enter 키를 누를 때마다이 스크립트를 실행하려면 enter .bashrc를 업데이트하고이 줄을 추가하십시오

    export PROMPT_COMMAND="set_hardline"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.