bashrc/bash_profile을 사용하지 않고 명령 출력에 색상을 지정하는 방법이 있습니까?

bashrc/bash_profile을 사용하지 않고 명령 출력에 색상을 지정하는 방법이 있습니까?

저는 다양한 프로그램에서 여러 로그를 읽는 프로그램을 만들었고 더 흥미로운 부분을 찾을 수 있도록 출력에서 ​​특정 용어에 색상을 지정하고 싶습니다. ( grep나는 여전히 전체 로그를 읽어야 하기 때문에 그런 것을 사용하지 않을 것입니다. 단지 특정 흥미로운 용어를 다른 색상으로 설정하여 빨리 찾을 수 있기를 바랍니다.)

나는 이것을 찾았다, 하지만 다시 말씀드리지만 제가 찾는 것은 그게 아닙니다. 텍스트를 파이프하는 방법을 찾고 있습니다.

답변1

grep을 꼭 사용하세요. Have ^는 검색어 중 하나이므로 여전히 모든 행을 얻을 수 있습니다(그러나 눈에 보이는 일치 항목이 포함되지 않으면 무색이 됩니다).

예:

grep -e '[[:upper:]][[:alnum:]]*' -e ^ <<EOF
This Is An
example file.
All lines 
in it will be printed, and all
words that start 
with a Capital
letter will be Colorized.
EOF

(이것은 heredoc를 사용합니다(쉘 매뉴얼에서 "Here Documents"를 검색하십시오). stdin 또는 실제 파일을 파이핑하는 것도 작동합니다).

답변2

명령의 출력이나 파일의 내용을 색상화하기 위해 잘 작동할 수 있는 두 가지 간단한 방법을 생각할 수 있습니다.

  • grep- 일부 고급 옵션을 사용하여 파일의 나머지 부분을 표시하고 여러 일치 항목을 만드는 것도 가능합니다. 예:

    grep --color -iE 'log|kernel' -C 999
    grep --color -iE 'log|kernel|$'
    

    첫 번째 검색에서는 대소문자 log를 구분하지 않으며 kernel주변 999개 행을 표시합니다. 두 번째 검색 logkernel각 줄에 있는 문자(제안된 대로)여기) 대소문자를 구분하지 않습니다. 자세한 내용은 가용성에 대해 문의 man grep하거나 설명서를 참조하세요.GNU grep또는OSX grep.

  • python-pygments- 통과해야 한다pip. 구문 강조에 사용할 수 있습니다.어휘 분석기처리하려는 항목에 사용할 수 있습니다.

또는 일반적인 형식의 출력에 대해 다음을 사용할 수 있습니다.ANSI 이스케이프 코드- 예를 들어:

echo -e "\033[31mred\033[0m"
echo -e "\033[34mblue\033[0m"

이는 \033이스케이프 문자이며, 그 후에는 다양한 작업을 수행하기 위한 코드를 지정할 수 있습니다. 여러 코드를 지정할 수도 있습니다.

echo -e "\033[1;31mbold red\033[0m"
echo -e "\033[4;34mblue underlined\033[0m"

OSX에 대한 지원이 확실하지 않습니다. 다른 방법을 시도해야 할 수도 있습니다.이스케이프 문자- 터미널의 색상도 필요할 수 있습니다.사용 가능.

답변3

텍스트 색상을 임의로 변경하려면 ANSI 이스케이프 시퀀스를 사용하면 됩니다. 예를 들어,ESC[31분텍스트 색상이 빨간색으로 변경됩니다.ESC[37분흰색 등을 생산합니다.

sed를 사용하여 스트림의 특정 위치에 특정 색상에 대한 이스케이프 코드를 삽입할 수 있습니다.여기 누군가가 이것을 하고 있는 예가 있습니다.

색상 변경 외에도 다양한 화면 출력 작업을 수행할 수 있습니다.이것은 참고자료입니다.

관련 정보