"CD&"은(는) 무슨 뜻인가요?

"CD&"은(는) 무슨 뜻인가요?

다음을 입력하여 터미널에서 디렉토리를 변경하는 방법을 알고 있습니다.

cd <directory>

그러나 여기에 장면이 있습니다. 나는 터미널을 사용하여 내 git 저장소의 폴더에 액세스하고 있습니다.

  • 글렌 저장소
    • Glenn-remdroid-저장소

glenn-remdroid-repository위의 폴더 구조를 고려하면 이것이 내 저장소이므로 전환하고 싶습니다 .

cd glennRepositories

glenn-remdroid-repository를 전환하기 전에 명령을 잘못 입력했습니다.

cd & 

바꾸다 cd *. cd *폴더 이름이 너무 길어서 사용하고 있는데 게을러서 죄송합니다.

을 실행하면 cd &터미널이 응답합니다.

[1] 7519

cd *이제 내가 실행하면 어떻게 될까요?

[1]+  Done                    cd  (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)

cd &그 의미와 결과를 아는 사람이 있습니까 ? Google은 내 문제를 모릅니다 :)

답변1

명령줄 끝에 를 작성하면 &명령 파이프라인(이 경우 단일 명령)을 가져와서 (결과를 기다리지 않고) 백그라운드의 하위 셸에서 실행하도록 셸에 지시하게 됩니다. cdbash가 내장되어 있지만 여기서는 중요하지 않습니다. 어떤 방식으로든 "상위" 쉘에 영향을 주지 않으므로 작업 디렉토리는 변경되지 않습니다.

[1] 7519

이 줄은 백그라운드에서 실행 중인 작업(번호 1, 프로세스 ID 7519)이 있음을 보고합니다. 예를 들어 실행 vim한 다음 Ctrl+를 눌러 Z일시 중지하면 다음과 같은 내용이 인쇄됩니다. 프로세스가 완료되면 셸은 다음 처리 주기(예: Return다시 적중)까지 보고하지 않으며 업데이트된 작업 완료 목록을 인쇄합니다.

자세한 내용은 man bash및 섹션을 읽어보세요 JOB CONTROL.

참고로 이 질문은exit &작동하지 않나요?어떤 유사점이 있습니다.

답변2

운영자는 &프로세스를 cd인수 없이 실행할 수 있으므로 프로세스를 백그라운드로 보냅니다. 매뉴얼 페이지를 보면:

이름

cd - 쉘 작업 디렉토리를 변경합니다.

요약

cd[ -L|-P목차]

설명하다

쉘 작업 디렉토리를 변경하십시오.

현재 디렉터리를 다음으로 변경합니다.목차. 기본목차쉘 변수의 값입니다 HOME.

이 변수는 다음 CDPATH을 포함하는 디렉토리의 검색 경로를 정의합니다. 목차. 의 대체 디렉터리 이름은 CDPATH콜론(:)으로 구분됩니다.
빈 디렉터리는 현재 디렉터리와 이름이 같습니다. 만약에목차슬래시( /)로 시작한 다음 CDPATH사용하지 않은 채로 두십시오.

디렉터리를 찾을 수 없고 쉘 옵션이 설정된 경우 cdable_vars이 단어가 변수 이름으로 간주됩니다. 변수에 값이 있는 경우 해당 값은 다음 용도로 사용됩니다.목차.

옵션:

-L
-P심볼릭 링크를 따르지 않고 물리적 디렉토리 구조를 사용하려면 심볼릭 링크를 강제로 따르십시오.

기본값은 지정된 대로 기호 링크를 따르는 것입니다 -L.

종료 상태:

디렉터리가 변경된 경우 0을 반환하고, 그렇지 않으면 0이 아닌 값을 반환합니다.

당신은 또한 볼 수 있습니다

bash(1)

구현하다

GNU bash, 버전 4.1.5(1)-릴리스(i486-pc-linux-gnu)
저작권 (C) 2009 Free Software Foundation, Inc.
라이센스 GPLv3+: GNU GPL 버전 3 이상

매개변수가 선택사항임을 알 수 있습니다. 그래서

cd &처리된 cd후 백그라운드로 전송됩니다. 매개변수 없이 호출 되면 cd처리가 필요하지 않습니다. 따라서 "완료"(처리됨) 상태로 백그라운드로 이동합니다.

& Bash(앰퍼샌드)에 대한 일부 정보는 &포크 프로세스를 위한 내장 제어 연산자입니다. Bash 매뉴얼 페이지에서 "명령이 제어 연산자에 의해 종료되면 &쉘은 서브 쉘의 백그라운드에서 명령을 실행합니다".

대화형 셸에 로그인하면 프로세스에 작업 번호가 할당되고 하위 프로세스 PID가 표시됩니다. 아래 직업번호는 1번입니다.

bash$ sleep 30 &
[1] 3586

프로세스가 분기되면 하위 프로세스 PID가 특수 변수에 저장됩니다.$!

bash$ echo $!
3586

다음과 같이 작업 번호로 작업을 종료할 수 있습니다.

bash$ jobs
[1]+ Running sleep 30 &
bash$ kill %1
[1]+ Terminated sleep 30
bash$

관련 정보