bash 명령의 출력이 명령과 다른 색상이 되도록 $PS1 변수를 편집하려면 어떻게 해야 합니까?

bash 명령의 출력이 명령과 다른 색상이 되도록 $PS1 변수를 편집하려면 어떻게 해야 합니까?

$PS1bash 명령의 출력이 명령과 다른 색상이 되도록 변수를 편집하려면 어떻게 해야 합니까 ? 예를 들어, 명령은 검은색으로, 출력은 녹색으로 표시하고 싶습니다.

username$ seq 1 3
1
2
3

위의 예에서는 seq 1 3출력 번호를 검정색과 녹색으로 표시하고 싶습니다.

이것은 나의 현재 $PS1 변수입니다:

\[\e[1;0:31m\]\u \[\e[m\] \[\e[1;0:36m\] \@ \[\e[m\] \[\e[1;0:32m\]\W $ \[\e[m\]

답변1

trap "changesColorHere" DEBUG및 를 활용해야 합니다 PS1. 변수 에서 PS1값 끝에 색상을 지정할 수 있습니다. 이는 trap "" DEBUG다른 명령을 실행하기 직전에 하나의 명령을 실행하는 효과가 있습니다. 따라서 df이전에 지정된 명령을 실행하면 .trap "" DEBUGdf

PS1변수를 다음과 같이 설정할 수 있습니다 .

PS1="\[\e[1;0:31m\]\u \[\e[m\] \[\e[1;0:36m\] \@ \[\e[m\] \[\e[1;0:32m\]\W $ \[\e[1;35m\]"

이 설정을 사용하면 프롬프트 다음에 입력하는 모든 입력이 색상으로 표시됩니다.

trap "" DEBUG다음과 같이 설정할 수 있습니다 :

trap "echo -ne '\e[1;33m'"  DEBUG

이 설정을 사용하면 출력은 다음과 같습니다.거의입력하는 모든 명령에는 색상이 지정됩니다.

일부 명령(예: ls, dmesg, journcaltcl등)은 구성된 색상을 사용하여 출력을 표시합니다. 따라서 다음을 사용하여 비활성화해야 합니다.

  1. 이 명령을 사용하는 경우 ls일반적으로 options 가 포함된 별칭입니다 --color=tty. 따라서 사용자 정의 색상으로 ls 출력을 인쇄하려면 다음을 사용할 수 있습니다.
\ls #Add `\` before the ls command
ls --color=never ... # Add the option --color=never
  1. dmesg명령은 사용자 정의 색상을 사용하여 출력을 인쇄하지만 해당 색상의 사용을 방지하고 대신 색상을 사용할 수 있습니다.
dmesg --color=never #Add --color=never
  1. journalctl출력물은 사용자 정의 색상을 사용하여 인쇄할 수도 있습니다. 이 기능은 내보내기를 통해 비활성화할 수 있지만 출력 export SYSTEMD_COLORS=false만 사용하는 경우에는 journalctlless명령이 사용됩니다. 따라서 다음을 사용하는 것이 좋습니다.
export SYSTEMD_COLORS=false
journalctl  --no-pager
#Alternatively you can use:
journalctl | cat #This should be useful if there were commands whose page their
# output through `less` and they do not have an option like `--no-pager`

위의 설정을 사용하면 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

관련 정보