터미널 및 SSH에서 색상 비활성화


11

내 로컬 Linux 시스템은 다음과 같이 컬러 터미널 출력을 가지고 있습니다.

여기에 이미지 설명을 입력하십시오

pfSense / BSD 상자에 SSH를 연결하면 다음과 같이 색상이 변경됩니다.

여기에 이미지 설명을 입력하십시오

유색 로컬 터미널 출력이없는 시스템으로 SSH를 연결하고이 pfSense / FreeBSD 상자로 SSH를 실행하면 유색 출력을 활성화하고 원하지 않는 유색 출력 /

로컬 시스템이나 중개 시스템을 통해 pfSense 상자에 SSH로 연결할 때 클라이언트가 원격 색상 설정을 무시하도록 로컬로 변경할 수있는 것이 있습니까? 이상적으로는 흑백, 2 톤 표준 배경 및 텍스트 색상만으로 유지하고 싶습니까?


어떤 터미널 응용 프로그램을 사용하고 있습니까?
— gertvdijk

1
Mint Linux 13을 실행 중이므로 Xfce Terminal Emulator 0.4.8입니다.
— jwbensley

나는 이것이 당신이 요구하는 것이 아니라는 것을 알고 있지만 검정색 배경에서 터미널 설정을 흰색 (또는 밝은 회색) 텍스트로 변경하는 것을 고려 했습니까? 그것이 대부분의 것들과 함께 작동하도록 설계된 기본 색 구성표입니다. 또는 원격 시스템 (아마 .bash_profile)의 프롬프트 설정을 변경하여 색상이 더 좋거나 전혀 표시되지 않을 수 있습니다.
— Random832

1
일반적으로 TERM=xterm-mono ssh user@host원격 환경에서 해당 설정을 얻는 것과 같은 작업을 수행 합니다.
— ott--

답변:


7

tty는 터미널이 색상을 변경하도록 알리기 위해 ANSI 인코딩 된 제어 시퀀스를 전송하기 때문에 터미널의 색상이 나타납니다. 대부분의 터미널 응용 프로그램이 아닌 경우 일부는이를 무시하고 모든 텍스트를 한 가지 색상으로 표시하도록 구성 할 수 있습니다.

에서가 xterm, 당신은 사용할 수있는 -cm옵션을 선택합니다. Konsole의 경우 모든 색상의 매핑을 동일하게 변경할 수 있습니다. XFCE 터미널 응용 프로그램에는 비슷한 옵션이있을 수 있습니다.


이 답변은 경우에 따라 도움이 될 수 있지만 실제로는 답변이 아닙니다. 언급 한대로 "터미널의 색상은 tty가 ANSI로 인코딩 된 제어 시퀀스를 전송하여 터미널에 색상을 변경하도록 지시하기 때문에 나타납니다." SSH가 TTY를 제공 할 수 있으므로 SSH가 색상을 무시할 수도 있습니다. 이것이 어떻게 수행되는지 아십니까?
— patrik

SSH는 실제로 tty의 데이터를 방해하도록 설계되지 않았습니다. SSH는 그것을 실행할 수있는 채널을 설정합니다. 채널을 통해 데이터를 변경하는 데 관여 해서는 안된다고 생각합니다 . 그러나 해당 채널의 설정 시간 동안 클라이언트에서 서버로 전달되는 환경 변수와 같은 컨텍스트 및 메타 데이터를 제공합니다.
— gertvdijk 2016 년

7

TERM호환되지만 색상 지원이없는 일부 항목으로 변수를 변경하면 작동 할 수 있습니다. 처럼:

TERM=xterm-old

기본적으로 TERMFreeBSD 시스템 termcap 또는 terminfo 데이터베이스 TERM=the-term tput colors는 양수를 반환하지 않으며 GNU ls dircolors -p | grep -x 'TERM the-term'는 아무것도 반환하지 않는 것으로 알려져 있습니다. 단말기가이를 지원한다고 주장하는지 여부에 관계없이 색상 이스케이프 시퀀스를 출력하는 응용 프로그램에서는 여전히 작동하지 않을 수 있습니다.

또는 GNU screen를 사용하여 (zsh 구문)과 같은 색상을 비활성화 할 수 있습니다 .

screen -c =(printf %s\\n "termcapinfo * 'AF=\E[1m:AB=\E[7m'") ssh ...

이렇게 하면 전경색을 설정하려고 할 때마다 굵게 표시 되고 배경을 설정하려고 할 때마다 반전 됩니다.

필자는 FreeBSD가 터미널 배경이 검은 색 (또는 적어도 어두운)이라고 가정한다는 사실로 요약됩니다. xterm대신 을 사용 하는 xfce-terminal경우 배경색 및 전경색 및 / 또는 개별 색상을 동적으로 변경하여 다른 색상 프로파일을 설정할 수 있습니다. 이는 이스케이프 시퀀스를 통해 수행되지만 xtermcontrol더 쉬운 명령을 사용할 수도 있습니다 .


그것을 시도-나를 위해 작동하지 않습니다. export TERM=vt100앞의 ls --color그림은 여전히 ​​컬러 출력을 보여줍니다.
— gertvdijk

@gertvdijk 좋은 지적입니다. GNU ls에는 기본적으로 하드 코드 vt100가 색상을 지원하는 터미널 인 버그가있는 것 같습니다 . xterm-old그 문제가 없지만 FreeBSD에 terminfo 항목이 없을 수도있는 것을 변경했습니다 .
— Stéphane Chazelas

다른 프로그램이 색상을 출력하는 것을 막지는 못합니다 byobu. 우분투 12.04 btw에 있습니다.
— gertvdijk

1
@gertvdijk. 내가 말했듯이 $TERM이스케이프 시퀀스를 하드 코딩하는 대신 curcap 또는 다른 터미널 API를 통해 termcap / terminfo 데이터베이스 를 사용하는 잘 작동하는 프로그램에서만 작동합니다 .
— Stéphane Chazelas

EOF 후 터미널 상태를 변경할 수있는 모든 이스케이프 시퀀스를 제거하는 데 무엇을 사용할 수 있습니까?
— 야누스 트롤 슨

2

다음 명령을 입력하여 제거하십시오.

$ ls --color=none

또는 unalias그것을 제거하는 데 사용 하십시오 :

$ unalias ls

1
ls그러나 그것은 단지 코 마드를 위한 것이 아닙니까?
— jwbensley

ls는 "ls --color = tty"로 별칭이 지정됨
— Len

예. 알아. 그러나 모든 내 터미널 출력은 ls명령 뿐만 아니라 컬러 출력 이므로 이전 주석에 따라 : ls컬러 출력 생성 을 중단하지 않습니까?
— jwbensley

네 ls 부분 만
— Len

1
xterm을 사용하고 있습니까? xterm -cm
— Len

1

~ / .bashrc를 수정하고 싶지 않은 경우 다음과 같은 내용이 포함되어 있습니다 export PS2=.....+colors.......

리눅스 콘솔에서 하나 시도 TERM=linux-m1b또는 TERM=linux-m2"회색 / 흰색 / 검은 색과 희미한"리눅스-M1B 또는 "그린 / 화이트 / 블랙과 블루"(빈티지!) 리눅스 m2에 관해서는 흑백를 얻을 수 ...

퍼티 (Mac 사용자를위한 포트가 있음)를 사용 TERM=putty-m1b하고 TERM=putty-m2대신 ...

이것은 당신이 필요로하는 것을 정확하게 수행 할 것입니다 : 당신은 그것에 대한 최신 terminfo 데이터베이스가 필요하거나 필요할 경우 거기에서 얻을 것입니다 : wget http://canal.chez.com/linux.ti ; tic -x linux.ti

알렉스 추신 : xterm-mono는 더 이상 존재하지 않는 것 같습니다.


-1

먼저 기본 별칭을 확인하십시오.

alias

alias ls-'ls --color=auto

작동하지 않고 빠른 해결 방법이 필요한 경우. 이것을 시도 ls하고 awk파이프 :

vi /usr/local/bin/list
#!/bin/bash
ls $1
exit

perms를 설정하십시오 744.
이를위한 안전한 장소는 /usr/local/bin PATH에 포함되어 있는지 확인하십시오 /usr/local/bin.

다시 신중을 사용하십시오.

한가지… 색상은 디렉토리에 플래그 를 붙이기위한 것입니다 . ls="ls --color=auto"잎만 이름을 끄 ls -aF거나 … 또는 ls -F디렉토리 이름을 추가합니다 /. 그래서 나는 당신이 알고 있다고 제안합니다. 당신이 수 alias ls="ls -aF"또는 alias ls="ls -F".


2
이 답변은 원래 질문에 대한 답변을 어떻게 제공합니까?
— jwbensley 2012 년

스택 오버플로에 오신 것을 환영합니다! 나는 당신 이 여행을하는 것이 좋습니다 .
— Stephen Rauch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.