터미널에서 많이 쓰이는 명령으로 특정 디렉터리를 만든 후 해당 디렉터리로 바로 이동하려고 할 때 다음과 같은 명령을 자주 쓴다.

$ mkdir foo
cd foo

하지만 이 mkdir와 cd 작업을 명령어 하나로 한꺼번에 수행해주는 방법이 있는데, ~/.bashrc 파일에 다음과 같은 함수를 저장한 후 사용할 수 있다.

function mkcd {
  if [ ! -n "$1" ]; then
    echo "Enter a directory name"
  elif [ -d $1 ]; then
    echo "\`$1' already exists"
  else
    mkdir $1 && cd $1
  fi
}

그러면, 터미널에서 다음과 같은 명령어 하나로 두 작업을 동시에 처리해준다.

$ mkcd foo

덤으로, cd 명령을 좀 더 유연하게 사용할 수 있는 것으로 다음과 같은 fuzzy cd 명령어를 등록해 놓으면, 이동하고자 하는 디렉터리의 이름 중 일부분만을 입력해도 자동으로 인식해서 해당 디렉터리로 이동시켜주므로 타이핑의 수고를 아주 약간 더 줄일 수 있다.

function cf {
  shopt -q nocasematch || resetcase=1
  shopt -s nocasematch
  for i in *; do [ -d "$i" ] && [[ "$i" == *"$1"* ]] && cd "$i" && break; done
  [ $resetcase ] && shopt -u nocasematch
}