입력된 명령이 시각적으로 "눈에 띄는" 터미널의 스크린샷을 캡처해야 합니다. 지금은 이것을 사용하여 "red"를 입력하는 명령을 만들고 있습니다.
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[0;31m\]'
문제는 내가 입력한 텍스트뿐만 아니라 프롬프트 뒤의 모든 내용이 빨간색이라는 것입니다.
이 문제를 어떻게 해결할 수 있나요?
저는 bash(CentOS 7)를 사용하고 있습니다.
답변1
이를 달성하기 위해 트랩을 사용할 수 있습니다.
trap 'echo -ne "\e[0m"' DEBUG
DEBUG
bash man에 따르면: 실행 트랩
모든 단순 명령 전, for 명령, case 명령, select 명령, 명령의 모든 산술 연산 전, 쉘 함수에서 첫 번째 명령을 실행하기 전
따라서 명령이 실행될 때마다 셸은 \e[0m
비활성화된 이전 색상 코드를 삽입합니다. 명령을 실행한 후에 프롬프트를 통해서만 재설정하십시오.
여기에서 허용되는 해킹을 찾았습니다.https://wiki.archlinux.org/index.php/Color_Bash_Prompt#Different_colors_for_text_entry_and_console_output
답변2
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[1;31m\]'
아래 예는 출력 색상을 변경하여 이 문제를 해결할 수 있습니다.
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[1;32m\]'
위 명령은 다음 출력을 녹색으로 표시합니다.