Alias는 새 디렉토리를 생성하고 해당 디렉토리로 이동합니다. [복제]

Alias는 새 디렉토리를 생성하고 해당 디렉토리로 이동합니다. [복제]

그래서 여기서는 명령줄 인수를 허용하는 명령에 대한 별칭을 만들거나 적어도 만들려고 시도하고 해당 이름으로 새 디렉터리를 만든 다음 해당 디렉터리로 변경했습니다.

alias newfolder='mkdir $2 ; cd "$(history | tail -2 | awk '\''NR == 1'\'' | awk '\''{print $3}'\'')"'

별칭이 성공적으로 생성되었지만 명령줄 인수를 사용하여 명령을 실행하려고 하면 이 오류 메시지가 나타납니다.

username:~/workspace (master) $ newfolder a
mkdir: missing operand
Try 'mkdir --help' for more information.
bash: cd: newfolder='mkdir: No such file or directory

답변1

별칭이 아닌 함수가 필요합니다. 노력하다:

newfolder() { mkdir -p "$1" && cd "$1"; }

예:

$ pwd
/tmp
$ newfolder dir1/dir2
$ pwd
/tmp/dir1/dir2

노트:

  1. -p옵션은 mkdir필요할 때 누락된 상위 디렉터리를 생성하도록 지시합니다. 위의 예에서 dir1및 는 존재하지 않지만 mkdir -p dir1/dir2생성 dir1됩니다 dir2.

  2. 쉘 연산자를 사용하고 있기 때문에 &&명령 cd은 성공한 경우에만 실행됩니다.mkdir

  3. 별칭은 고정 문자열이 단어를 대체할 수 있는 매우 간단한 상황에서 유용합니다. 별칭은 매개변수를 처리하지 않습니다.

  4. 별칭 대신 쉘 함수를 사용하기 때문에 $1이 경우처럼 필요에 따라 매개변수를 인용할 수 있습니다.

관련 정보