다음을 결합하는 방법(bash에서 가장 간단한 방법)이 있습니까?
mkdir foo
cd foo
맨페이지에는 mkdir
그런 내용이 설명되어 있지 않습니다. 어쩌면 멋진 버전이 있을까요 mkdir
? 나는 이것이 cd
내장된 쉘이어야 한다는 것을 알고 있습니다. 그래서 그것은 멋진 것들을 위한 것입니다 mkdir
...
별명?
답변1
함수를 만드는 것이 이 작업을 수행하는 가장 적절한 방법이라고 생각합니다. 하지만 모든 대안을 나열하려면 다음과 같이 작성할 수 있습니다.
mkdir foo && cd "$_"
$_
이전 명령의 마지막 매개변수를 저장하는 특수 매개변수입니다. 폴더 이름에 공백이 포함되어 있더라도 따옴표를 사용하면 폴더 이름 $_
이 올바르게 작동합니다.
큰따옴표를 사용하는 이유는 무엇입니까?
zsh
예를 들어 일부 셸에서는 디렉터리 이름 에 공백이 포함되어 있어도 큰따옴표로 묶을 필요가 없습니다 . 그러나 $_
이 명령을 사용하려면 bash
.
예를 들어 macOS 10.13.6의 bash 3.2.57에서 다음 명령을 실행합니다.
mkdir "my directory" && cd $_
결과는 다음과 같습니다.
bash: cd: my: No such file or directory
그러나 $_
큰따옴표로 묶으면 명령이 성공적으로 반환됩니다.
bash-3.2$ mkdir "my directory" && cd "$_"
bash-3.2$ echo $?
0
bash-3.2$
답변2
기능?
mkcdir ()
{
mkdir -p -- "$1" &&
cd -P -- "$1"
}
위 코드를 쉘 에서 제공 ~/.bashrc
하거나 쉘에서 제공하는 다른 파일에 배치하십시오. ~/.zshrc
그런 다음 예를 들어 source ~/.bashrc
변경 사항을 적용하여 가져옵니다.
mkcdir foo
그런 다음 or 을 실행하세요 mkcdir "nested/path/in quotes"
.
노트:
"$1"
은 명령의 첫 번째 매개변수입니다mkcdir
. 공백이나 기타 특수 문자가 포함된 경우 따옴표는 매개변수를 보호합니다.--
mkdir
새 디렉토리의 전달된 이름이 또는 로 해석되지 않도록 하는 옵션으로, 또는 로 시작하는 디렉토리를cd
생성할 수 있는 기회를 제공합니다 .-
--
-p
Used on은mkdir
아직 존재하지 않는 경우 추가 디렉터리를 생성하고,-P
Used는cd
심볼릭 링크를 확인합니다.source
-ing rc 대신 터미널 에뮬레이터/셸을 다시 시작할 수도 있습니다 .
답변3
Bash(단어 표시 사용):
/tmp/bug$ mkdir "some dir"
/tmp/bug$ cd !$
cd "some dir"
/tmp/bug/some dir$
!$
기록에서 이전 줄의 마지막 매개변수로 확장됩니다. 중간에 매개변수가 있는 경우 !:1
첫 번째 매개변수, !:2
두 번째 매개변수 등에 사용될 수 있습니다.
Bash(1)에서:
이벤트 표시기
이벤트 표시기는 기록 목록의 명령줄 항목에 대한 참조입니다. 참조가 절대적이지 않은 경우 이벤트는 기록 목록의 현재 위치를 기준으로 합니다.
!
뒤에 공백, 개행, 캐리지 리턴 또는=
((
내장 shopt를 사용하여 extglob 쉘 옵션이 활성화된 경우)이 없으면 기록 교체를 시작합니다.[..]
단어 표시기
단어 표시기는 이벤트에서 원하는 단어를 선택하는 데 사용됩니다.
:
이벤트 사양과 단어 지정자는 A로 구분됩니다. [..][..]
N이것N-첫 번째 단어.
^
첫 번째 주장. 1번 단어입니다.
$
마지막 단어. 이는 일반적으로 마지막 인수이지만 줄에 단어가 하나만 있는 경우 0번째 단어로 확장됩니다.
답변4
인생을 복잡하게 만드는 다른 젊은이들은 다음과 같습니다.
eval {mkdir,cd}\ FOLDER\;