mkdir foo에 대한 바로 가기가 있습니까?


89

이것은 내가 자주하는 일이다

$ mkdir foo
$ cd foo

이것은 단일 명령으로 작동하지만 더 많은 키 입력으로 시간을 절약 할 수 있습니다.

$ mkdir foo && cd foo

이것에 대한 지름길이 있습니까?

편집하다

아래 도움말을 사용하면 가장 우아한 답변 인 것 같습니다.

# ~/.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
}

1
함수 본문 에서만 mkdir사용하는 command mkdir $1대신 함수 이름을 바꿀 수 있습니다 mkdir $1.
Andy

2
(1) 왜 단순히 "&&"대신 "mkdir $ 1; cd $ 1"이 아닌가? 그렇게하면 "mkdir"이 실패하더라도 "cd"는 성공하며 이미 존재하는 스캐 폴딩이 필요하지 않습니다. (2) 작성된대로 기능이 작동하지 않습니다 (디렉토리 이름을 묻습니다). 존재 테스트와는 별도의 "if"절 (현재 "elif")에이를 넣어야합니다.
quack quixote

답변:


45

나는 Linux / bash 전문가가 아니지만 이것을에 넣으십시오 .bashrc.

function mkdir
{
  command mkdir $1 && cd $1
}

PS를 사용해 주신 Dennis에게 감사합니다 command mkdir.


2
대신을 `which mkdir`사용하십시오 command mkdir.
Dennis Williamson

1
고마워 데니스 아래에 아무것도 없습니다. man command저를 참조로 안내해 주시겠습니까? (내가하는 일을 할 수는 있지만 철저한
Andy

2
command의 설명서에bash 설명되어 있습니다 (내장되어 있으며 별도의 명령이 아닙니다). 시도해 볼 수도 있습니다 help command.
grawity

그것은 또한 BTW zsh을 작동
플로리안 네스에게

93

bash, zsh

다른 기능을 기억하고 bashism을 신경 쓰지 않으려면 :

$ mkdir /home/foo/doc/bar && cd $_

$_(달러 밑줄) bash는 명령 변수는 가장 최근의 매개 변수가 포함되어 있습니다. 따라서 사용자가 명령 행에 다음을 입력 echo foo bar && echo $_ baz하면 출력은 다음과 같습니다.

foo bar
bar baz

fish

생선 껍질에는 다음을 입력합니다.

> mkdir / home / foo / doc / bar
> cd alt + ↑

위쪽 또는 아래쪽 화살표 키와 결합 된 Alt 키는 명령 매개 변수 히스토리를 순환합니다.


4
이것도 작동합니다 zsh.
Nabil Kadimi

3
$ _가 무엇인지 설명 할 수 있습니까? 여기 초보자
arg20 2016 년

@NabilKadimi <kbd> Alt <kbd> + <kbd> ⬆ <kbd>가 Zsh에서 제대로 작동한다는 의미입니까? 실제로 zsh 5.4.2 및 on-my-zsh에서 Alt + ⬆은 문자 'A'를 제공합니다.
주말

$ _-바보 섹시 플랑드르에 +1!
cig0


10

는 어때:

$ mkdir newdirname; cd $_

quack quixote와 kzh의 답변을 결합하여 &&를 사용하는 것보다 조금 쉽습니다.


26
요점은 명령이 실패하면 실행되지 &&않는다는 cd것입니다.mkdir
slhck

1
@slhck은 실제로 quixote의 핵심이었습니다. mkdir이 실패하더라도 cd (예를 들어 이미 존재하는 경우 실제로 경로에 cd하는 두 번째 명령을 작성하도록 강요). 그러나이 답변의 말과 반대로, 그것은 쉽지 않습니다. &&는;보다 복잡하지 않습니다.
moala

7

다음과 같이 시도해보십시오.

#!/bin/sh
mkdir $1 && cd $1

이 스크립트를 경로에있는 위치 (예 : / usr / local / bin 또는 ~ / bin)에 저장하십시오 (이 마지막 스크립트는 ~ / .profile 파일의 경로에 넣어야합니다). 그런 다음 간단히 전화하면됩니다.


4
이게 어떻게 작동할까요? 스크립트의 호출자가 아닌 스크립트 cd실행 컨텍스트 내 에서만 보입니다 ~/bin/mkcd.
Erik Allik

5
$echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc
$mkcd < pathtofolder/foldername >

2

~/.config/fish/config.fish이 작업을 수행하는 파일에 넣은 간단한 함수는 다음과 같습니다 .

function mkcd
    mkdir -pv $argv;
    cd $argv;
end

-pv태그를 사용하면 하위 디렉토리가있는 디렉토리를 만들 수 있습니다.


0

디렉토리가 이미 존재하는 경우 원하는 결과에 따라.

디렉토리가 이미 존재하면 실패

mkcd() {
    mkdir $1 && cd $1
}

디렉토리에 관계없이 변경

mkcd() {
    mkdir $1 ; cd $1
}

mkcd some / path / to / my / dir 사용법


0

하위 디렉토리를 만들고 싶다면 아래 함수가 하나의 디렉토리 만 만들 수 있다는 것을 알았습니다.

function mkdir
{
  command mkdir $1 && cd $1
}

그래서 나는 그것을 바꾸었고 지금은 훌륭하게 작동합니다!

function mkcd
{
  command mkdir -pv $1 && cd $1 && echo "Now in `pwd`"
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.