제목 종류는 모든 것을 말한다 : 나는 같은 출력의 그 깔끔한 색상의 열을 좀하고 싶습니다 ls -al
같이 말을 10basetom의 대답 에 이 질문에 .
제목 종류는 모든 것을 말한다 : 나는 같은 출력의 그 깔끔한 색상의 열을 좀하고 싶습니다 ls -al
같이 말을 10basetom의 대답 에 이 질문에 .
답변:
이것은로 할 수 있습니다 awk
. 불행히도의 형식 ls -l
이 지정되어 있지 않기 때문에 모든 시스템에서 작동하는 솔루션을 만들 수 없으므로 일부 시스템에서 어떤 열에 어떤 색상을 사용해야 할지를 조정할 수 있습니다.
먼저에 사용 된 원래 공간을 유지하려고합니다 ls -l
. 그렇지 않으면 열 정렬이 올바르지 않습니다. 이 SO 답변FPAT
덕분에 옵션 으로이 작업을 수행 할 수 있습니다 .
ls -la | awk '
BEGIN {
FPAT = "([[:space:]]*[^[:space:]]+)";
OFS = "";
}
에서는 awk
, 각각의 위치는 PARAM ( $1
, $2
등)을 하나 개의 필드, 즉 현재 행에 하나의 컬럼을 의미한다. FPAT
위 의 옵션은 이전의 모든 공백을 포함하도록 각 필드를 재정의하므로 공백 print
을 유지하면 열이 동일한 위치를 유지하도록 공백을 유지합니다.
이제 각 필드를 편집하여 색상 코드 를 삽입 한 다음 편집 된 출력을 인쇄 할 수 있습니다.
{
$2 = "\033[31m" $2 "\033[0m";
$3 = "\033[36m" $3 "\033[0m";
$4 = "\033[36m" $4 "\033[0m";
$5 = "\033[31m" $5 "\033[0m";
$6 = "\033[36m" $6 "\033[0m";
$7 = "\033[36m" $7 "\033[0m";
$8 = "\033[31m" $8 "\033[0m";
print
}
'
공지 사항 각 열은 기본적으로 다시 돌아합니다 (이다 0
사이 [
및 m
그 이후가). 여러 열에서 색상을 실행하려는 경우 해당 코드를 생략 할 수 있습니다. 개인적으로 각 열을 독립적으로 지정하는 것을 선호합니다.
에서 재사용 가능한 명령을 정의 할 수 있습니다 .bashrc
. 예를 들면 다음과 같습니다.
lsc() {
ls -la | awk '
BEGIN {
FPAT = "([[:space:]]*[^[:space:]]+)";
OFS = "";
}
{
$2 = "\033[31m" $2 "\033[0m";
$3 = "\033[36m" $3 "\033[0m";
$4 = "\033[36m" $4 "\033[0m";
$5 = "\033[31m" $5 "\033[0m";
$6 = "\033[36m" $6 "\033[0m";
$7 = "\033[36m" $7 "\033[0m";
$8 = "\033[31m" $8 "\033[0m";
print
}
'
}
이 함수 정의를 실행 bash
하려면 세션 을 다시 시작 하거나 실행 해야 할 수도 source ~/.bashrc
있습니다.
여기에서을 호출 lsc
하면 원하는 결과를 얻을 수 있습니다.
--color=always
. 파일 이름 열에 다른 색상을 적용하지 않는 한 ( $9
내 예에서는) awk
통과시켜야합니다.
그러면 두 번째 열은 ls -alF
빨간색으로, 세 번째에서 여덟 번째는 파란색으로, 아홉 번째는 검은 색으로 인쇄됩니다.
ls -alF | awk -v black=$(tput setaf 0) -v red=$(tput setaf 1) -v blue=$(tput setaf 4) '{$2=red $2; $3= blue $3; $9=black $9} 1'
이것은 단지 예를위한 것입니다. 당신은 당신의 마음의 내용에 맞게 사용자 정의 할 수 있습니다.
코드를 선호하는 사람들은 여러 줄로 퍼져 있습니다.
ls -alF | awk -v black=$(tput setaf 0) \
-v red=$(tput setaf 1) \
-v blue=$(tput setaf 4) \
'{
$2=red $2
$3= blue $3
$9=black $9
}
1'
tput
터미널에 대한 다양한 제어 코드를 생성하는 유틸리티입니다. 예를 들어, tput setaf n
전경색 을 0에서 7까지의 범위 n
로 n
설정할 수 있습니다.
0 – Black
1 – Red
2 – Green
3 – Yellow
4 – Blue
5 – Magenta
6 – Cyan
7 – White
자세한 내용 tput
과 색상 기능은 여기를 참조하십시오 .
AWK 코드를 정의하는 변수 black
, red
및 blue
그 블랙, 적색, 청색 각각에 대한 단말기 번호를 포함한다. 이 코드는 채색하려는 열의 시작 부분에 배치됩니다.
한 가지 트릭은 색상 코드가 자체적으로 재설정되지 않는다는 것입니다. 따라서 다른 색상 명령을 지정하지 않으면 한 줄에 마지막으로 지정한 색상이 다음 줄의 기본 색상이됩니다.
awk
! 열 정렬을 유지하기 위해 패턴을 포함하는 것이 좋습니다. :)
FPAT
간격을 올바르게 유지하는 트릭을 좋아한다 .