이벤트 표시기

이벤트 표시기

다음을 결합하는 방법(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생성할 수 있는 기회를 제공합니다 .---
  • -pUsed on은 mkdir아직 존재하지 않는 경우 추가 디렉터리를 생성하고, -PUsed는 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\;

관련 정보