phpunit
컬러 출력이 있는 명령( )이 있습니다 . watch
명령 에 따르면 이 --color
플래그를 사용하여 색상 렌더링을 통과할 수 있어야 합니다. 그러나 이것은 작동하지 않습니다. 이 문제를 해결할 다른 방법이 있나요?
답변1
phpunit | cat
작동하지 않습니다(명령에 문제가 없음을 나타냄 watch
) phpunit
.
대안으로 다음 bash 스크립트 방법이 나에게 적합합니다.
#!/bin/bash
while true; do
(echo -en '\033[H'
CMD="$@"
bash -c "$CMD" | while read LINE; do
echo -n "$LINE"
echo -e '\033[0K'
done
echo -en '\033[J') | tac | tac
sleep 2
done
용법:
$ botch my-command
답변2
이것은 나에게 효과적입니다.
watch --color phpunit9 --colors=always
색상 표시가 있으니 참고하세요.둘 다보다그리고PHP 단위
phpunit이 파이프 상황에 있음을 감지하면 강제로 사용하지 않는 한 터미널 색상 시퀀스를 비활성화합니다 --colours=always
. 그렇지 않은 경우 시계는 색상을 렌더링할 수 없으므로 --color
둘 다 필요합니다.
(이것은 Robert Waelder의 답변과 동일하지만 OP의 명령 phpunit을 구체적으로 다루기 때문에 여기에 내 답변을 남겨 둡니다)
답변3
여기에 내 구현이 있습니다. bash 스크립트이지만 함수로 변환하는 것은 쉽습니다("exit"를 "return"으로 변경).
#!/bin/bash
trap ctrl_c INT
function ctrl_c()
{
echo -en "\033[?7h" #Enable line wrap
echo -e "\033[?25h" #Enable cursor
exit 0
}
function print_usage()
{
echo
echo ' Usage: cwatch [sleep time] "command"'
echo ' Example: cwatch "ls -la"'
echo
}
if [ $# -eq 0 ] || [ $# -gt 2 ]
then
print_usage
exit 1
fi
SLEEPTIME=1
if [ $# -eq 2 ]
then
SLEEPTIME=${1}
if [[ $SLEEPTIME = *[[:digit:]]* ]]
then
shift
else
print_usage
exit 1
fi
fi
CMD="${1}"
echo -en "\033[?7l" #Disable line wrap
echo -en "\033[?25l" #Disable cursor
while (true)
do
(echo -en "\033[H" #Sets the cursor position where subsequent text will begin
echo -e "Every ${SLEEPTIME},0s: '\033[1;36m${CMD}\033[0m'\033[0K"
echo -e "\033[0K" #Erases from the current cursor position to the end of the current line
BASH_ENV=~/.bashrc bash -O expand_aliases -c "${CMD}" | while IFS='' read -r LINE
do
echo -n "${LINE}"
echo -e "\033[0K" #Erases from the current cursor position to the end of the current line
done
#echo -en "\033[J") | tac | tac #Erases the screen from the current line down to the bottom of the screen
echo -en "\033[J") #Erases the screen from the current line down to the bottom of the screen
sleep ${SLEEPTIME}
done
답변4
나는 같은 문제에 직면하여 잠시 놀다가 사용했습니다.
watch --color dmesg --color=always
예상대로 dmesg를 풀 컬러로 출력합니다. 따라서 시계에 입력된 모든 명령에 대해 보다 명확한 색상 매개변수를 사용하는 것이 도움이 될 수 있습니다.