Git Bash 팁 두 가지

류광, 2019/11/05 12:18
Git 자체와는 관련이 없는 Git Bash 팁 두 가지입니다.

저번 달 중순부터 오라일리의 Cybersecurity Ops with bash라는 책을 번역하고 있습니다. 책의 예제 중에 Git Bash를 기준으로 하는 것들이 많은데요. 예전에는 Git Bash를 주로 git을 실행하는 용도로만 사용했는데, 이 책을 번역하면서 좀 더 본격적으로 사용하다 보니 여러모로 감탄을 자아내는 측면도 있고 좀 불편한 부분도 있더군요. 다음은 특히 불편했던 점 두 가지에 대한 간단한 해결책입니다.

한글화된 Windows 고유 명령의 출력이 깨져 나오는 문제의 해결책

Git Bash 창의 문자들은 기본적으로 UTF-8이지만, 안타깝게도 Windows 한국어판의 경우 명령 프롬프트의 기본 문자 집합은 EUC-KR 또는 UHC에 해당하는 CP949입니다. 그래서 Git Bash 창에서 한글화된 Windows 명령을 실행하면 출력 메시지들이 깨져 나옵니다.

예를 들어 다음을 실행하면

$ netstat --help

다음과 같이 전혀 도움이 안 되는 도움말이 나옵니다.

Imgur

환경 변수 또는 Git Bash 창의 설정 메뉴를 이용해서 로캘을 아예 CP949나 EUC-KR 등으로 바꾸는 방법도 있지만, 요즘은 웹페이지든 프로그램 소스 코드이든 대부분의 텍스트 파일이 UTF-8이니 로캘은 아무래도 UTF-8로 두고, 대신 필요에 따라 다음처럼 출력을 iconv로 변환하는 게 나을 것입니다.

$ netstat --help 2>&1 | iconv -f CP949 -t UTF-8

Imgur

2>&1netstat이 도움말을 표준 출력이 아니라 표준 오류로 출력하기 때문에 넣은 것입니다. 모든 명령이 그렇지는 않지만, 어차피 오류 메시지도 봐야 할 것이므로 다른 명령들도 그냥 이렇게 하는 것이 좋겠죠.

참고로 iconv는 Git Bash와 함께 설치되므로 따로 설치할 필요가 없습니다.

매번 iconv -f CP949 -t UTF-8를 입력하기가 번거롭다면 다음처럼 별칭 설정을 ~/.bashrc~/.bash_profile에 넣으면 됩니다.1

alias tou8="iconv -f CP949 -t UTF-8"

다시 로그인(또는 source 적용)한 후에는 다음처럼 좀 더 간결하게 사용할 수 있습니다.

$ netstat --help 2>&1 | tou8

커스텀 man 명령

Git Bash에는 유닉스류 운영체제의 기본 매뉴얼 시스템인 man이 없습니다. Git Bash에 man 명령과 man 페이지들을 설치하는 게 불가능하지는 않겠지만, 좀 더 간단한 해결책은 그냥 웹에서 man 페이지를 찾아 보는 것입니다. 개인적으로는 터미널 창에서 man 페이지를 읽는 것보다 브라우저로 보는 게 더 편합니다.

다음은 주어진 명령의 man 페이지를 브라우저로 띄워주는 셸 함수입니다.

man()
{
  start "http://man.he.net/?topic=$1&section=all"
}

이 함수 정의를 ~/.bashrc./bash_profile에 추가하고 다시 로그인한 후 예를 들어

$ man ls

를 실행하면 기본 브라우저에 ls의 온라인 man 페이지(http://man.he.net/?topic=ls&section=all)가 표시됩니다.

man 페이지들을 제공하는 웹사이트는 많이 있으므로, http://man.he.net보다 나은 사이트가 있다면 man() 본문의 URL을 그 사이트의 것으로 대체하면 됩니다. 단, 명령 이름(함수의 $1)만으로 원하는 man 페이지에 접근할 수 있는 형태의 URL을 제공하는 곳이어야 합니다. 예를 들어 man7.org를 사용하려면 함수 본문을

start "http://man7.org/linux/man-pages/man1/$1.1.html"

으로 바꾸면 됩니다.

top
트랙백 0 : 의견 # + 0

Trackback Address :: http://occamsrazr.net/tt/trackback/358

comments powered by Disqus

(2013년 11월 10일자로 블로그에도 DISQUS 시스템을 도입했습니다. 기존 의견의 수정, 삭제, 댓글 추가는 여전히 가능합니다.)


◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [330] : NEXT ▶