msys 명령 행 을 괴 롭 히 는 출력 인 코딩

1027 단어 msysshell
msys 에서 ls 와 같은 명령 출력 은 모두 gbk 입 니 다.약간 불편 함 을 느끼 고 utf - 8 로 옮 기기 로 했다.
메모: 우선 utf - 8 을 지원 하 는 터미널 시 뮬 레이 터 가 필요 합 니 다. 예 를 들 어 mintty.
우선 mingw-get 으로 인 코딩 변환 도구 iconv 를 설치한다.
$ mingw-get install msys-iconv

처음에는 alias 로 처리 하려 고 했 으 나 파이프 ls | iconv 를 처리 할 수 없 음 을 발견 하고 포기 alias 하고 생각 했다 function.
코드 의 초기 형 태 는 바로 이렇다.
function ls(){
  /bin/ls "$@" | iconv -f gbk -t utf-8
}

그리고 완벽 + 포장... 코드 완제품:
# convert command output from gbk to utf-8
# usage: convert "command" "base-args" "base-args(for tty only)" "other-args"
function convert(){
  local cmd="$1 $2"
  if [ -t 1 ]; then
    # tty
    cmd="$cmd $3"
  fi
  $cmd "${@:4}" | iconv -f gbk -t utf-8
}

function ls(){
  convert "/bin/ls" "--show-control-chars" "--color -C" "$@"
}

좋은 웹페이지 즐겨찾기