단일 명령을 사용하여 디렉토리를 만들고 현재 작업 디렉토리를 새로 만든 디렉토리로 변경하는 방법을 찾고 있습니다. 어떻게해야합니까?
즉, 대신에
user@Computer:~$ mkdir NewDirectory
user@Computer:~$ cd NewDirectory
user@Computer:~/NewDirectory$
나하고 싶어
user@computer:~$ **command** NewDirectory
user@Computer:~/NewDirectory$
명령 은 무엇입니까 ?
답변
정말로 하나의 명령이되기를 원한다면 다음과 같이 추가하는 것이 좋습니다 .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"
- 뒤에있는 부분
&&
은 첫 번째 명령이 성공한 경우에만 실행됩니다. - Bash 매뉴얼에서 명령 목록 이라고합니다 .
-
속기 버전도 있습니다 :
mkdir "NewDirectory" && cd "$_"
-
명령 행의 예 :
$ false && echo "yes" $ true && echo "yes" yes
-
(편집) 디렉토리에 공백이있을 수 있으므로 “를 명령에 추가하십시오.
답변
내장 함수는 없지만 쉘 기능을 사용하면 cd
실행 후 명령 인수를 다시 입력하지 않아도됩니다 mkdir
.
- 이전 명령에서 마지막 인수를 삽입하려면을 입력
cd
한 다음 Esc .(또는 Alt+ .)를 입력하십시오. cd !$
실행cd
이전 명령의 마지막 인수에.- 눌러 Up, 그것은 변경 후 편집 이전의 명령 행을 불러
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