터미널에서 폴더 이동하는 6가지 방법

터미널에서 자주 사용하는 디렉터리를 모두 외워서 이동하기는 힘들다. 경로가 긴 경우 더욱 그렇다. 아래 6가지 방법을 사용하여 더 빠르게 이동할 수 있다.

Bashmarks

Bashmarks를 사용하면 [s] 명렁어로 디렉터리에 이름을 붙이고 [l] 명령어로 저장된 모든 이름을 확인하고 [g] 명령어를 사용하여 이동할 수 있다. 명령어 목록은 텍스트 파일로 저장됨으로 이 파일을 직접 수정하거나 백업할 수 있다.

    $ cd /tmp
    $ pwd
    /tmp
    $ cd apple/banana
    $ s project_dir
    $ cd /tmp
    $ g project_dir
    $ pwd
    /tmp/apple/banana

Autojump

Autojump를 사용하면 cd 명령어로 방문한 디렉터리 이력이 자동으로 저장된다. 그 후 디렉터리의 일부 문자열을 제공하면 가중치를 적용하여 가장 일치하는 디렉터리로 이동한다.

    $ cd /tmp/apple/banana
    $ cd /tmp
    $ j banana
    /tmp/apple/banana

Bash

쉘에서 cd - 명령어로 이전 디렉터리로 이동할 수 있다. 또한 pushd와 popd 명령어를 사용하면 디렉터리를 스택에 넣었다가 다시 꺼내서 사용할 수 있다.

    $ cd /tmp
    $ pwd
    /tmp
    $ cd apple/banana
    $ pushd .
    /tmp/apple/banana /tmp/apple/banana
    $ cd /tmp
    $ popd
    /tmp/apple/banana

Zsh

만약에 oh-my-zsh를 사용한다면 d 명령어로 이전 디렉터리 목록을 확인하고 번호를 입력하여 이동할 수 있다. 이 기능을 사용하려고 oh-my-zsh를 설치하는 것은 배보다 배꼽에 큰 일이지만 많은 플러그인을 제공하니 설치해서 사용해 보는 것을 권한다.

% cd /tmp
% cd /etc
% d
0	/etc
1	/tmp
%

Fzf

하위 디렉터리로 편하게 이동하려 한다면 fzf를 사용하는 것도 방법이다. cd 명령어를 입력하고 한 칸 띄운 다음에 [C-t] 키를 입력하면 하위 디렉터리의 목록을 보여주는데 키를 입력하면 점진적으로 목록을 줄여준다. 엔터를 입력하여 디렉터리를 선택할 수 있다. 파일과 디렉터리가 함께 목록으로 나오는 것이 불편하다면 fzf example에서 설명하는 아래 함수를 사용해도 된다.

fd() {
  local dir
  dir=$(find ${1:-.} -path '*/\.*' -prune \
                  -o -type d -print 2> /dev/null | fzf +m) &&
  cd "$dir"
}

fzf는 이와 같이 디렉터리 이동이나 파일 찾기 관련된 여럿 스크립트를 제공하며 [C-r]을 입력하여 이전 명령어를 쉽게 재사용하는 등의 많은 기능이 있으니 살펴보길 바란다. Bash와 zsh를 모두 지원한다.

Fasd

Fasd를 설치하면 zz 명령어로 이전 방문한 디렉터리 목록을 확인하고 해당 번호를 입력해서 디렉터리를 이동할 수 있다. 대상 디렉터리가 많아서 목록을 더 추리고 싶다면 인자를 주면 된다. 이전 디렉터리 목록을 보면서 이동하기는 이 툴이 가장 편리했다.

$ zz www

이 툴을 이런 용도만으로 사용하기에는 너무 아깝다. 예를 들면 사용했던 파일 목록을 이용하여 확장하는 기능이 있다.

$ vim f,blog

이렇게 입력한 후 확장을 위해서 마지막에 탭 키를 누르면 이전에 파일 목록에 /src/blog.js 파일이 있을 경우 아래 처럼 확장해 준다.

$ vim /src/blog.js

더 많은 기능이 있으니 좀 더 자세히 살펴보기 바란다. Fasd와 fzf를 둘 다 사용하고 있다면 같이 사용하는 방법도 좋다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.