it-swarm-ko.tech

디렉토리를 생성하고 동시에 디렉토리로 이동할 수있는 단일 라이너가 있습니까?

나는 많은 것을 반복하는 것을 발견했다.

mkdir longtitleproject
cd longtitleproject

디렉토리 이름을 반복하지 않고 한 줄로 수행하는 방법이 있습니까? 나는 여기 bash에 있습니다.

166
methodofaction

이것은 당신이 필요로하는 하나의 라이너입니다. 다른 구성이 필요하지 않습니다.

mkdir longtitleproject && cd $_

Bash의 $_ 변수는 이전 명령에 제공된 마지막 인수입니다. 이 경우 방금 만든 디렉토리의 이름입니다. man bash에 설명 된대로 :

_         At  Shell  startup,  set to the absolute pathname used to invoke
          the Shell or Shell script being executed as passed in the  envi‐
          ronment  or  argument  list.   Subsequently, expands to the last
          argument to the previous command, after expansion.  Also set  to
          the  full  pathname  used  to  invoke  each command executed and
          placed in the environment exported to that command.  When check‐
          ing  mail,  this  parameter holds the name of the mail file cur‐
          rently being checked."$_" is the last argument of the previous command.

cd $_ 대신 cd !$를 사용하여 이전 명령의 마지막 인수를 검색하십시오. cd !$는 이전 명령의 마지막 인수 Shell history :

cd ~/
mkdir folder && cd !$

당신은 집에 (또는 ~ /)

cd ~/
mkdir newfolder && cd $_

당신은 집에서 새로운 폴더에 결국! (또는 ~/newfolder)

151
Jesús Carrera

거의 매시간마다 다음을 입력하기 때문에이 동작을 스크립트하는 것은 결코 일어나지 않았을 것입니다 ...

$ mkdir someDirectory<ENTER>
$ cd !$

bash는 친절하게 !$ 마지막 줄의 마지막 단어; 즉, 입력 한 긴 디렉토리 이름입니다.

또한 파일 이름 완성은 이러한 상황에서 친구입니다. 새 디렉토리가 폴더의 유일한 파일 인 경우 빠른 이중 TAB 다시 입력하지 않고 새 디렉토리를 제공합니다.

Bash를 사용하면 다른 답변과 같이 일반적인 작업을 스크립팅 할 수 있다는 것이 멋지지만 bash가 제공하는 명령 줄 편집 기능을 배우는 것이 더 좋습니다. 다른 기계에서 작업 할 때 구문이 누락되지 않았습니다 사용자 정의 스크립트가 제공하는 설탕.

30
Rob

생산성을 높이기 위해 셸 프로필에서 어떤 사용자 지정을 수행 했습니까? 에 따라 다음과 같이합니다.

# make a directory and cd to it
mcd()
{
    test -d "$1" || mkdir "$1" && cd "$1"
}

디렉토리가 이미 존재하는 경우에도 작동 함을 의미합니다.

17
Mikel

Oh My Zsh를 사용하는 경우 정확하게 수행하는 take 라는 명령이 있습니다. 이런 식으로 보일 것입니다.

take myfolder

실제로 우연히 발견했습니다. 방금 보았고 Oh My Zsh GitHub 위키의 이 치트 히트 에 나와 있습니다. 그것은 매우 유용한 명령이며, 자신을 만들기가 매우 쉽습니다.

16
Jordan Harris

또는 짧은 변수를 즉석에서 만들어 두 번 사용할 수도 있습니다. x = longproject ; mkdir $x ; cd $x-내가 인정하는 것은 여전히 ​​쉘 스크립트 함수를 사용하는 것보다 깁니다. :)

3
sakisk

디렉토리를 만든 다음 CD를 작성하는 스크립트를 만든 다음 별칭을 지정했습니다. 그리고 여기 내가 설명하는 요지가 있습니다.

https://Gist.github.com/rehnen/34236d6ff270ccaa74b6#mkdir-like-it-was-meant-to-be

0
Marcus Rehn

다음은 언급 할 가치가있는 약간의 변형입니다.

function mkdir() {
    local dir=$1
    command mkdir "$dir"  &&  cd "$dir"
}

이것을 ~/.bash_profile 그런 다음 표준 mkdir 명령이 아닌 위의 함수를 실행한다는 점을 제외하고 source을 정상적으로 사용할 수 있습니다 (한 번 mkdir 's 함). .

허용 된 질레스의 답변 에 따라 입력의 유효성을 검사하지는 않지만 내장을 (효과적으로) 재정의하는 방법을 보여줍니다.

문서에서 (약간 그림) :

command mkdir [args]mkdir라는 셸 함수를 무시하고 args와 함께 mkdir를 실행합니다. 셸을 검색하여 찾은 셸 내장 명령 또는 명령 만 실행됩니다. ls라는 쉘 함수가 있으면 command ls 함수 내에서 함수를 재귀 적으로 호출하는 대신 외부 명령 ls을 실행합니다.

builtincommand와 비슷한 결과를 얻습니다.

0
Arj

BASH, ZSH 또는 KSH에 도우미 기능 추가

한 줄로 mkcd 명령을 환경에 생성

echo -e 'mkcd() {\n mkdir -p "$1" && cd $_\n}' >> ~/.${0//-/}rc && . ~/.${0//-/}rc
0
Proximo