저는 현재 C++ 프로젝트를 진행하고 있습니다. 저는 CMake를 빌드 시스템으로 사용하고 있으며 명령 출력 CMakeLists.txt
에서 모든 CMake 관련 파일(예: )의 색상을 다르게 지정하고 싶습니다 ls
. 이렇게 하면 소스 코드 파일과 쉽게 구별할 수 있습니다.
dircolors
나는 env var를 직접 사용하고 편집 하려고했습니다 $LS_COLORS
. 저는 두 경우 모두 실패했습니다. 이러한 솔루션은 일부 Linux 특정 파일(예: 링크) 또는 선택한 확장에 색상을 지정하는 방법만 제공하는 것 같습니다.
정리하자면 제가 한 일은 다음과 같습니다.
OLD_LS_COLORS=$LS_COLORS # Backup
export LS_COLORS="${LS_COLORS}CMakeLists.txt=00;36:" # Adding it at the beginning of the list also fails
ls # No colors at all
export LS_COLORS=$OLD_LS_COLORS # Cleanup
dircolors -p > ~/.dir_colors
echo "CMakeLists.txt 01;33" >> ~/.dir_colors
eval `dircolors ~/.dir_colors` # Throws "unrecognized keyword CMakeLists.txt"
내 문제에 대한 해결 방법은 대신 소스 파일( .hxx
, .cxx
)에 색상을 지정하는 것이지만 CMake 파일에만 색상을 지정하고 싶습니다. 반면에 색상 .txt
과 .cmake
파일만 지정할 수 있지만 모든 텍스트 파일은 이러한 방식으로 색상이 지정됩니다.
출력 에서 Makefile(확장자가 없는 파일)을 색칠하는 것은 ls
좋은 보너스가 될 것입니다.
bash
저는 4.4.12 및 8.26 과 함께 Debian 9를 사용하고 있습니다 ls
.
미리 감사드립니다.
답변1
ls로 그렇게 할 수 있습니다.
*Makefile 38;5;155
*CMakeLists.txt 48;5;89;38;5;197;1;3;4;7
보다https://github.com/trapd00r/LS_COLORS/blob/master/LS_COLORS
답변2
직접적 으로 할 수 있는지는 모르겠습니다 ls
. (근데 그럴수도...)
ls
내 아이디어는 정규식 일치 항목에 색상을 지정할 수 있는 sed로 출력을 파이프하는 것입니다 .
이를 수행하는 멋진 스니펫이 있습니다.https://github.com/kepkin/dev-shell-essentials/blob/master/highlight.sh
모든 cmake 파일과 일치하는 파이프 체인을 작성할 수 있습니다.
ls | highlight blue CMakeLists.txt | highlight blue foobar.baz ...
(그리고 이에 대한 별칭을 만듭니다)
그러나 이것은 물론 해결 방법입니다.
내 개인적인 선택은 소스 외부 빌드를 사용하고 cmake 파일을 어느 정도 분리된 상태로 유지하는 것입니다. 하지만 이는 귀하의 질문에 대한 답변이 아니며 프로젝트 구조에서는 불가능할 수도 있습니다.