내가 하나 만들었어
cd /folder/ && find . -not \( -path ./exclude_folder -prune \) > /log.log
그리고 얻다
find: â<80><98>./qs/www/ergebnisse/validitaet/0df21b8a-e227-47b2-aaa5-9f54d1f9b8fd.txtâ<80><99>: No such file or directory
내부 로그 파일. 사실이지만:
이것은 무엇 â<80><98>
입니까 â<80><99>
? 이게 색상 코드인가요? 그것들을 피하는 방법( find
아무것도 없음 --no-color
)?
기다리다. cat log.log
대신 이 작업을 수행하면 다음과 같은 vi log.log
결과를 얻습니다.
find: ‘./qs/www/ergebnisse/validitaet/0df21b8a-e227-47b2-aaa5-9f54d1f9b8fd.txt’: No such file or directory
답변1
배포판에서는 UTF-8 문자 인코딩을 사용합니다. 이는 대부분의 최신 배포판에서 정상입니다.
당신이 보는 것은 UTF-8로 인코딩된 문자가 다른 인코딩에 나타나는 효과입니다.
많은 GNU 유틸리티는 여는 따옴표와 닫는 따옴표를 나타내기 위해 서로 다른 따옴표를 사용하려고 합니다. 이는 일부 글꼴에는 좋아 보이지만 다른 글꼴에는 좋지 않습니다.
생성된 출력을 살펴보겠습니다 find
.
$ find /x 2>&1 | hexdump -C
00000000 66 69 6e 64 3a 20 e2 80 98 2f 78 e2 80 99 3a 20 |find: .../x...: |
전후에 /x
시퀀스 e2 80 98
합계가 있습니다 e2 80 99
.
콘솔은 UTF-8로 구성되어 있으며 UTF-8 시퀀스를 올바르게 표시합니다. 프로그램은 cat
이 순서를 인식하거나 신경쓰지 않으므로 문제가 되지 않습니다.
반면에 vi
파일을 latin1로 해석합니다. 이것은 적어도 현대 배포판에서는 드문 일입니다. latin1에서 첫 번째 바이트 는 while e2
으로 해석되고 , latin1에서는 유효하지 않으며 다음과 같이 표시됩니다 . 그 결과는 다음과 같습니다.â
80
98
99
<80>
â<80><98>
â<80><99>
이 상황을 피하는 방법은 무엇입니까? vi
파일을 UTF-8로 표시하거나 출력에서 UTF-8 시퀀스를 사용하지 않도록 파일을 구성할 수 있습니다 .
$ LC_CTYPE=C find /x 2>&1 | hexdump -C
00000000 66 69 6e 64 3a 20 27 2f 78 27 3a 20 |find: '/x': |
UTF-8 시퀀스를 생성하는 대신 작은따옴표가 여는 따옴표와 닫는 따옴표로 find
사용됩니다 .'
UTF8을 비활성화하면 프로그램이 입력을 처리하는 방식이 변경될 수 있지만 귀하의 예에서는 이것이 중요하지 않습니다.
답변2
시작코드와 종료코드입니다.
â<80><98> = ‘
â<80><99> = ’