tag: 개발 잡동사니

터미널에서 메시지 재미있게 출력하기 cowsay

2016년 4월 6일

터미널을 사용하다보면 사소하지만 유용한 스크립트를 작성할 때가 종종 있다. 스크립트로 작성한 코드로 결과를 그냥 출력할 수 있지만 다소 밋밋하게 느껴본 적은 없었는지 생각해보자. 빌드가 완료되거나 업스트림에 머지하는 스크립트가 Done.만 출력하면 실용적이긴 하지만 아쉬움이 있다. 그 부족함을 느꼈다면 cowsay를 사용해서 더 터미널 힙스터답게 메시지를 출력할 수 있다!

cowsay는 아스키아트와 함께 원하는 메시지를 출력할 수 있게 해주는 프로그램이다. 1999년부터 있던 프로그램이라서 터미널을 쓴다면 한번쯤은 어디선가 이미 봤을지도 모른다. perl로 작성되었다.

설치는 apt-get, homebrew 등 대부분의 패키지 관리자에서 제공한다.

$ apt-get install cowsay
$ brew install cowsay

사용 방법은 간단하다.

$ cowsay Hello World
 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsay는 fortune이랑 자주 나온다. fortune은 포춘 쿠키에 들어있는 쪽지와 같은 내용을 출력하는 프로그램이다. fortune도 apt-get, brew 등으로 설치할 수 있다.

$ fortune | cowsay

-f 플래그를 사용하면 소 이외에도 다른 그림으로 사용할 수 있다. 사용할 수 있는 그림 목록은 -l 플래그로 확인할 수 있다.

$ fortune | cowsay -f sheep
 _________________________________________
/ This night methinks is but the daylight \
| sick.                                   |
|                                         |
| -- William Shakespeare, "The Merchant   |
\ of Venice"                              /
 -----------------------------------------
  \
   \
       __     
      UooU\.'@@@@@@`.
      \__/(@@@@@@@@@@)
           (@@@@@@@@)
           `YY~~~~YY'
            ||    ||

cow 파일을 COWDIR에 추가하면 자신이 직접 만든 메시지로도 사용할 수 있다. cowsay를 검색해보면 이 프로그램 이후에도 정말 다양한 언어로 작성되었다. 포니를 좋아한다면 ponysay도 살펴보자.

점점 각박하게 변해가는(?) GUI의 세계에서, 이 작은 메시지 출력까지도 아름답게 아스키아트로 표현하고야 마는 선현들의 낭만을 배워야 할 필요가 있다. 😀

OS X에서 백스페이스 키 빠르게 동작하도록 설정하기

2016년 4월 4일

Linux나 windows 환경을 사용하다가 OS X 환경을 사용했을 때 가장 답답하게 느끼는 부분 중 하나가 backspace 키 속도가 상당히 느리다는 점이다. OS X는 backspace 키를 다른 기능 키와 조합해서 행 단위, 단어 단위 제거 등 더 많은 영역을 한 번에 지울 수 있는 기능을 제공하고 있어서 그런지 초기 지연 값이 상당히 크게 잡혀 있는 것 같다. 반복키 설정을 변경하는 것으로 그나마 다른 OS와 비슷하게 설정할 수 있다.

반복 키 설정은 시스템 환경설정 > 키보드(System Preferences > Keyboard) 에서 느린 키 반응(Key Repeat)과 반응 지연 시간(Delay Until Repeat) 설정을 최대한 빠르게 변경할 수 있지만 최대한 빠르게 설정해도 다른 OS 만큼 빠르게 반응하지 않는다.

터미널을 이용해서 이 반응값을 더 빠르게 조정할 수 있다. 먼저 현재 설정된 값을 확인하기 위해 다음 명령을 사용할 수 있다.

$ defaults read NSGlobalDomain InitialKeyRepeat
$ defaults read NSGlobalDomain KeyRepeat

첫 번째 명령어가 반응 지연 시간을 반환하고 두 번째 명령어는 느린 키 반응을 반환한다. 반응 지연 시간 값을 가장 빠르게 설정했을 때 15, 느린 키 반응 값은 2에 해당한다. 이 값을 변경하기 위해서 다음처럼 입력할 수 있다.

$ defaults write NSGlobalDomain InitialKeyRepeat -int 11
$ defaults write NSGlobalDomain KeyRepeat -int 2

이렇게 값을 입력한 후에 다시 시스템 환경설정에서 해당 슬라이더를 움직이면 값이 다시 초기화 된다. 너무 작은 수치 또는 0을 입력하면 지나치게 민감하게 입력되니 그런 경우에는 위 명령어로 다시 값을 변경하거나 초기화를 위해 시스템 환경설정에서 값을 변경하자.

터미널에서 GitHub 이슈 관리하기 ghi

2016년 4월 4일

조금은 생산적인 도구를 소개하는 것도 좋을 것 같아 GitHub 서비스를 위한 도구를 소개한다. GitHub API를 이용한 ghi가 꽤 많은데 API v3에 맞춰 현재까지 관리되고 있는 도구로 ghi가 있다. Github 리포지터리에 등록된 issue를 CLI에서 관리할 수 있도록 기능을 제공한다.

brew로 설치하거나 Ruby로 작성되어 있어서 gem으로도 설치 가능하다.

$ brew install ghi
$ gem install ghi

curl로도 설치할 수 있다.

$ curl -sL https://raw.githubusercontent.com/stephencelis/ghi/master/ghi > ghi && \
$ chmod 755 ghi && mv ghi /usr/local/bin

설치 후에 토큰을 발급 받기 위해서는 다음 명령이 필요하다.

$ ghi config --auth <GitHub 사용자ID>

맥에서는 키체인을 이용해서 토큰과 사용자 정보를 저장하는데 키체인의 문제인지 제대로 동작하지 않는다.1 그래서 내 경우는 수동으로 입력했는데 token을 위 방법으로 발급 받은 다음, GitHub access tokens 페이지에서 생성된 토큰을 Edit > Regenerate token 해서 다음과 같이 환경변수를 지정해줬다.

$ export GHI_TOKEN=<재생성한 access token>

이제 ghi를 입력하면 현재 배정된 이슈 목록이 출력되며 전체 목록은 필터 플래그를 이용해 ghi list -f 'all'로 확인할 수 있다. ghi helpghi help <명령어>로 도움말을 확인하자.

이제 웹브라우저 없이도 GitHub 이슈를 추적할 수 있다!

다른 도구도 많이 있는데 대부분 v2이 deprecated 된 이후로 업데이트 되지 않거나 전혀 관리되지 않고 있어서 아쉽다.

  • 리포지터리에 가도 관련 이슈가 넘쳐 나는데 해결책이 뚜렷하지 않다. 
  • 터미널에서 백그라운드 작업 관리하기 job-control

    2016년 4월 2일

    bash나 zsh에서는 작업 제어(job control)을 기본적으로 제공하고 있다. 현재 동작하고 있는 프로그램을 백그라운드로 보내거나 백그라운드에 있는 프로그램을 다시 꺼내서 사용하는 것도 가능하다.

    평소에 다음과 같이, 끝에 &을 붙여 명령어를 사용해본 적이 있다면 자신도 모르는 사이에 이미 사용하고 있다는 뜻이다.

    $ npm start &
    [1] + running    npm start

    먼저 간단하게 예제를 보자. 다음 예시는 간단하게 sleep을 사용하고 있다. &와 함께 실행하면 백그라운드로 구동한다는 의미다.

    $ sleep 10 &
    [1] 3901
    $ sleep 20 &
    [2] 3902
    $ sleep 30 &
    [3] 3903

    현재 실행하고 있는 작업 목록은 jobs로 확인할 수 있다.

    $ jobs
    [1]   running    sleep 10
    [2] - running    sleep 20
    [3] + running    sleep 30

    현재 실행하고 있는 프로세스를 일시 정지하고 백그라운드로 보내는 키는 Ctrl + z다. (tmux를 사용하고 있다면 이 키로는 동작하지 않을 수 있다.)

    $ vim hello
    # <Ctrl + z>을 누름
    [1] + 4049 suspended   vim hello

    다시 해당 프로세스를 포그라운드로 부르기 위해서는 fg 명령을 사용할 수 있다. fg 뒤 인자는 직접 입력해도 되지만 tab 키를 누르면 알아서 자동완성 해준다.

    $ fg %1
    $ fg %vim\ hello

    만약 백그라운드에서 일시 정지가 아니라 계속 구동하려고 한다면 어떻게 해야 할까? 그때는 백그라운드 명령인 bg를 사용할 수 있다.

    $ sleep 30
    # <Ctrl + z>을 누름
    [1] + 4050 suspended  sleep 30
    $ bg %sleep
    # 아래처럼 간단하게 가능
    $ %sleep &
    [1] - 4050 continued  sleep 30
    $ jobs
    [1] - 4050 running    sleep 30
    $
    [1] - 4050 done       sleep 30

    알고 나니 별 내용은 아니지만 지금까지 전혀 모르고 사용했다는 점에 반성하는 마음에서, 그리고 매번 백그라운드를 끌 줄 몰라서 kill을 당해야만 했던 수많은 프로세스를 추모하며 작성했다. 지금까지 몰랐다는데 참 억울하지만 앞으로는 프로세스 번호 찾으려고 애쓸 일이 없다는 점이 참 감사하다.

    터미널에서 트위터하기 rainbowstream

    2016년 3월 30일

    터미널에서 사용할 수 있는 트위터 클라이언트는 상당히 많은 편이다. 이전까지 node-tweet-cli를 사용하고 있었는데 스트림도 지원하고 간단하게 트윗을 하기엔 편했지만 멘션에 답하는 기능이 없어서 여간 불편했었다. 그러던 중에 rainbowstream을 보고 나서 한 눈에 반해 바로 옮겨타게 되었다.

    이 클라이언트는 현존하는 어떤 클라이언트보다 가장 힙스터스러운 트위터 환경을 구축해준다. 쇼케이스 보면 반하지 않을 수 없다.

    이 툴은 pip를 통해서 설치할 수 있다. 전역 설치를 하고 싶다면 그냥 설치하면 된다.

    # 그냥... 설치
    $ sudo pip install rainbowstream

    설치 가이드에서는 venv를 사용하길 권장하고 있다.

    # venv 설치
    $ virtualenv venv
    $ source venv/bin/activate
    $ pip install rainbowstream

    파이썬이 없거나 환경이 필요한 경우라면 리포지터리를 참고해서 설치하자.

    처음으로 실행하면 트위터의 토큰을 발행하기 위한 로그인 창이 뜬다. 토큰을 발행해서 숫자를 집어 넣으면 그때부터 사용 가능하다.

    트윗 작성은 t <내용>으로 할 수 있으며 h를 입력하면 도움말 전체를 확인할 수 있다. 가장 마음에 드는 부분은 아예 쉘처럼 동작한다는 점인데 실행하는 순간부터 스트림을 시작하고 매 스트림되는 메시지마다 id를 부여해서 rep <id> <내용> 식으로 멘션에 대한 응답도 쉽게 작성할 수 있다. 스트림은 p, r로 멈추고 다시 시작하는 것도 가능하다. 쉘 종료는 q로 가능하다.

    이렇게까지 트위터 해야하냐고 그만 물어보세요…

    심지어 테마도 지원하니 취향에 맞게 컬러 스킴도 지정해보자. theme으로 사용 가능한 테마 목록을 확인하고 theme <테마명>으로 변경할 수 있다.

    tmux와 함께 사용한다면 타임라인과의 분리불안을 해소하는 것과 동시에 본업(?)을 지속할 수 있는 환경을 구성할 수 있으니 tmux를 필히 사용하자.

    터미널에서 구글 검색하기 googler

    2016년 3월 27일

    구글 검색을 위해서 파이어폭스를 켜며 문득, ‘그냥 터미널에서 구글 검색할 수 있는 방법은 없을까?’ 라는 생각이 들어서 검색해봤더니 역시 멋진 분이 googler라는 도구를 멋지게 만들어서 공유하고 있었다.

    googler는 파이썬으로 작성되어 있어서 파이썬이 기본적으로 필요하다. OS X나 Linux 환경 대부분은 기본적으로 설치되어 있는 버전과 함께 잘 구동된다.

    OS X 환경에서 Homebrew를 사용하고 있다면 brew로 쉽게 설치할 수 있다. 최근에 추가된 패키지라서 brew update가 필요할 수도 있다.

    $ brew install googler

    Linux 환경에서는 Homebrew Folk인 Linuxbrew를 사용해서 설치할 수 있다. 하지만 내 lubuntu 환경은 그렇게 공간이 넉넉한 편이 아니라서 git 리포지터리를 통해 바로 설치했다.

    $ git clone https://github.com/jarun/googler/
    $ cd googler
    $ sudo make install

    검색은 간단하다. googler <검색어>로 검색할 수 있는데 그 외 플래그 등 옵션은 googler를 입력하면 확인할 수 있다. 검색 결과에서 다음 검색 결과를 확인하는 것도 가능하며 열고 싶은 페이지의 숫자를 입력하면 웹브라우저로 열어준다.

    how to use googler

    구글 검색 결과를 아름답게 확인할 수 있다.

    이제 구글 검색도 힙하게 터미널에서 하자!