답변:
정말로 하나의 명령이되기를 원한다면 다음과 같이 추가하는 것이 좋습니다 .bashrc
.
md () { mkdir -p "$@" && cd "$1"; }
입력 md foo
명령 행은 다음라는 디렉토리를 생성합니다 foo
및 cd
즉시 나중에 그것으로합니다. .bashrc
변경 사항을 적용하려면 (예 : 새 콘솔을 열거 나 실행 source ~/.bashrc
) 변경 사항을 다시로드해야 합니다 .
Cf. 가능한 대안도 http://www.commandlinefu.com/commands/view/3613/create-a-directory-and-change-into-it-at-the-same-time 입니다.
mkdir "NewDirectory" && cd "NewDirectory"
&&
은 첫 번째 명령이 성공한 경우에만 실행됩니다.속기 버전도 있습니다 :
mkdir "NewDirectory" && cd "$_"
명령 행의 예 :
$ false && echo "yes"
$ true && echo "yes"
yes
(편집) 디렉토리에 공백이있을 수 있으므로 "를 명령에 추가하십시오.
mkdir
생성 된 새 디렉토리로 변경하기 위해 스위치를 연결할 수 있다면 매우 편리 할 것 입니다.
.bashrc
내장 함수는 없지만 쉘 기능을 사용하면 cd
실행 후 명령 인수를 다시 입력하지 않아도됩니다 mkdir
.
cd
한 다음 Esc .(또는 Alt+ .)를 입력하십시오.cd !$
실행 cd
이전 명령의 마지막 인수에.mkdir
로를 cd
.다음에서 간단한 make-and-change-directory 함수를 정의 할 수 있습니다 ~/.bashrc
.
mkcd () { mkdir "$1" && cd "$1"; }
.bashrc
( . ~/.bashrc
)를 다시로드 하거나 bash를 다시 시작하면 이제 입력 할 수 있습니다 mkcd new-directory
.
이 간단한 버전은 이상한 디렉토리 이름 또는 ..
심볼릭 링크가 포함 된 특별한 경우에는 실패 합니다. 여기 하나가 있습니다. 설명 은이 질문의 Unix & Linux 버전을 참조하십시오 .
mkcd () {
case "$1" in
/*) mkdir -p "$1" && cd "$1";;
*/../*) (cd "./${1%/../*}/.." && mkdir -p "./${1##*/../}") && cd "$1";;
../*) (cd .. && mkdir -p "${1#.}") && cd "$1";;
*) mkdir -p "./$1" && cd "./$1";;
esac
}
mkdir -p "as/many dirs/as you/want" && cd "$_"
위에 나열된 솔루션이 있지만 (내 솔루션과 동일하지만 -p 옵션이 없음) 몇 가지 함정이 있다고 생각합니다.
man mkdir
...
-p, --parents
no error if existing, make parent directories as needed
...
이것은 우리에게 두 가지 이점을 제공합니다.
&& cd "$_"
$_
보유한 값이 my를 리턴 하므로 새로 작성된 디렉토리로 변경됩니다.mkdir
mkdir "NewDir" && cd "$_"
mkdir "NewDir" && cd "NewDir"
자동 완성이 작동하지 않는 것보다 훌륭하게 작동합니다. BTW "$ _"는 무엇입니까?