
$PS1
bash 명령의 출력이 명령과 다른 색상이 되도록 변수를 편집하려면 어떻게 해야 합니까 ? 예를 들어, 명령은 검은색으로, 출력은 녹색으로 표시하고 싶습니다.
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 "" DEBUG
df
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
등)은 구성된 색상을 사용하여 출력을 표시합니다. 따라서 다음을 사용하여 비활성화해야 합니다.
- 이 명령을 사용하는 경우
ls
일반적으로 options 가 포함된 별칭입니다--color=tty
. 따라서 사용자 정의 색상으로 ls 출력을 인쇄하려면 다음을 사용할 수 있습니다.
\ls #Add `\` before the ls command
ls --color=never ... # Add the option --color=never
- 이
dmesg
명령은 사용자 정의 색상을 사용하여 출력을 인쇄하지만 해당 색상의 사용을 방지하고 대신 색상을 사용할 수 있습니다.
dmesg --color=never #Add --color=never
journalctl
출력물은 사용자 정의 색상을 사용하여 인쇄할 수도 있습니다. 이 기능은 내보내기를 통해 비활성화할 수 있지만 출력export SYSTEMD_COLORS=false
만 사용하는 경우에는journalctl
이less
명령이 사용됩니다. 따라서 다음을 사용하는 것이 좋습니다.
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`
위의 설정을 사용하면 다음과 같습니다.