서버가 매우 느리게 응답하는 문제가 발생하여 SSH를 통해 강제로 다시 시작했습니다. 다시 연결했을 때 시스템이 더 이상 특정 문자를 올바르게 출력하지 않는다는 것을 발견했습니다.
예: 나는 tree
디렉토리의 구조와 그 내용을 빠르게 확인하기 위해 이 명령을 자주 사용하며, 다른 시스템에서 이 명령을 사용할 때 다음과 같은 출력을 얻습니다.
root@hostname:/tmp# tree
.
└── test
├── bar
│ ├── bar
│ ├── baz
│ └── foo
└── foo
2 directories, 4 files
그러나 지금 내 시스템에서 이 작업을 수행하면 다음과 같은 결과가 나타납니다.
root@hostname:/tmp# tree
.
ΓööΓöÇΓöÇ test
Γö£ΓöÇΓöÇ bar
│   ├── bar
│   ├── baz
│   └── foo
ΓööΓöÇΓöÇ foo
2 directories, 4 files
어떻게 이런 일이 일어났는지 알 수 있는 방법이 있나요? 어떻게 복원할 수 있나요?
편집하다
출력 LC_ALL=C tree
은 다음과 같습니다.
root@hostname:/tmp# LC_ALL=C tree
.
`-- test
|-- bar
| |-- bar
| |-- baz
| `-- foo
`-- foo
2 directories, 4 files
출력 locale
은 다음과 같습니다.
root@hostname:/tmp# locale
LANG=en_GB.utf8
LANGUAGE=
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=en_GB.utf8
답변1
질문의 정보는 개략적입니다. 그러나 샘플 출력에는 인코딩 트리에 예상보다 많은 문자가 있다는 오류가 표시됩니다. tree
UTF-8이 전송될 수 있는 환경에서 실행 중일 수 있습니다 . 사용된 그래픽 문자의 경우 각 특수 문자는 3바이트를 차지합니다. 한편으로는 (로컬이든 원격이든 상관 없음) OP는 다음과 같은 것을 사용하고 있습니다.녹음이를 UTF-8로 변환하여 바이트 수를 늘립니다(출력의 각 바이트 tree
범위는 128-255이므로).
예를 들어 OP가 실행 중인 경우xterm(사용루잇), 그리고 (실제로) luit에게 실제 인코딩이 이라고 말하여 혼란을 주기 위해 en_GB
, 128-255 값 각각을 2-3바이트로 변환합니다("UTF-8로 "반환").
그런데,세게 때리다질문과 관련이 없기 때문에나무(고유한 유틸리티) 텍스트 작성을 위한 것입니다.
답변2
LC_ALL=en_US.UTF-8을 사용하면 트리 문자는 정확하지만 정렬이 엉망이 됩니다.
정렬이 제대로 작동하도록 LC_ALL=C로 다시 변경합니다.
Mint Mate 20.1 이전에는 정렬 및 문자 문제가 없었으며 모두 잘 작동합니다.