다음을 입력하여 터미널에서 디렉토리를 변경하는 방법을 알고 있습니다.
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
명령줄 끝에 를 작성하면 &
명령 파이프라인(이 경우 단일 명령)을 가져와서 (결과를 기다리지 않고) 백그라운드의 하위 셸에서 실행하도록 셸에 지시하게 됩니다. cd
bash가 내장되어 있지만 여기서는 중요하지 않습니다. 어떤 방식으로든 "상위" 쉘에 영향을 주지 않으므로 작업 디렉토리는 변경되지 않습니다.
[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$