2013-04-28 3 views
3

저는 얼마 전부터 리눅스 콘솔을 사용해 왔습니다. 나를 자극하는 한 가지는 mkdir을 사용하여 새 디렉토리를 만들 때마다 cd으로 변경해야한다는 것입니다. 만들고 작성한 디렉토리로 전환 할 수있는 단일 명령 솔루션이 있습니까?mkdir하고 한 줄로 새 디렉토리로 전환하는 방법

는 지금은 수행

mkdir php5 
cd php5 

내가 할 수있는 :

mkdir -someswitch php5 

내가 뭔가 간단하고 깨끗합니다. 좋은 예가 새 분기를 만드는 git branch somebranch이고 새 분기를 만들고 전환하는 git checkout -b somebranch입니다.

+0

흥미롭지 만 나는 의심 스럽다. 나는'man mkdir' 또는'mkdir --help'에서 아무 것도 볼 수 없습니다. – Rup

+0

그렇게하기위한 간단한 쉘 스크립트를 작성할 수 있습니다. – NPE

답변

5

이식성있는 방법은 쉘 기능으로 - bash 기능이 아님 (function과 같은 bashims 사용). 대화 형 사용 관련 .profile이 넣어 :

mkdir() { 
    case $1 in 
     (-c) command mkdir -p "$2" && cd "$2";; 
     (*) command mkdir "[email protected]";; 
    esac 
} 

이 대화 형 사용 mkdir-c 옵션을 추가합니다. -c이 없으면 유틸리티는 항상 그렇듯이 작동합니다 .- "$2"의 인용 부호에 유의하십시오. 따라서 이름에 공백이있는 디렉토리에서 작동합니다.

+0

하지만 재귀 적으로 _ad infinitum_을 호출하지 않습니까? – rodrigo

+0

@rodrigo 아니요, 'command'로 인해 POSIX에서 "그 이름의 간단한 명령을 실행하고 싶습니다"라고 표현합니다. 동일한 이름의 별칭 또는 함수를 건너 뜁니다 (정의 된 경우). http://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html – Jens

+0

도 알지 못했습니다. 감사! – rodrigo

2

아무것도 자신의 별칭 또는 작은 스크립트를 생성하지 못하도록하지

mkdir $1 && cd $1 
+0

글쎄, 작은 스크립트는 그렇게 쉬운 것처럼 쉽지 않습니다. 스크립트를 종료하면 PWD가 복원됩니다. – choroba

0

이 할 bash는 함수를 정의 할 수 있습니다 :

function mkcd() { 
    mkdir $1 && eval cd $1 
} 
+0

여기서'eval'의 요점은 무엇입니까? – rodrigo

+0

'cd '에 전달되기 전에 인수가 확장되지 않도록합니다. 이렇게하면 이상한 문자가 포함 된 디렉토리 이름으로 작업 할 수 있습니다. –

+0

하지만'$ 1'은 eval이 실행되기 전에 확장됩니다. 이것은 당신이 생각하는대로 할 수 없습니다. – Jens

2

아니면 사용할 수 있습니다 ';' 다음과 같이 명령을 분리하십시오 :

mkdir php5.3; cd php5.3

+5

디렉토리를 만들지 못하면 두 가지 오류가 발생합니다. –

0

가까운 대답을 드리겠습니다. 입력하기 쉽습니다.

 mkdir php7 && cd !$
관련 문제