본문 바로가기
리눅스

cd (command)

by 다움위키 2023. 12. 18.

cd 명령은, chdir (change directory)으로 알려져 있으며, 다양한 운영 시스템에서 현재 작업 디렉터리를 변경하기 위해 사용되는 명령줄 명령입니다. 그것은 쉘 스크립트배치 파일에서 사용될 수 있습니다.

Implementations

그 명령은 Unix, DOS, IBM OS/2, MetaComCo TRIPOS, AmigaOS (여기서 만약 없는 경로가 주어지면, cd가 암시됨), Microsoft Windows, ReactOS, 및 리눅스와 같은 운영 시스템에서 구현되었습니다. MS-DOS에서, 그것은 버전 2 이상에서 사용할 수 있습니다. DR DOS 6.0는 역시 cd와 chdir 명령의 구현을 포함합니다. 그 명령은 오픈-소스 MS-DOS 에뮬레이터 DOSBoxEFI 쉘에서도 사용할 수 있습니다. 그것은 HP MPE/iX에서 chdir로 이름-지어졌습니다. 그 명령은 Stratus OpenVOS change_current_dir 명령과 유사합니다.

cd는 자주 명령줄 인터프리터에 직접 내장됩니다. 이것은 대부분의 유닉스 쉘 (Bourne shell, tcsh, bash 등), Microsoft Windows NT/2000+에서 cmd.exeWindows 7+에서 Windows PowerShell 및 DOS/ Microsoft Windows 3.x-9x/ME에서 COMMAND.COM의 경우입니다.

대부분의 운영 시스템에서 명령에 영향을 미치는 시스템 호출POSIX에서 정의하는 chdir입니다.

윈도우에서 명령줄 쉘은 보통 Windows API를 현재 작업 디렉토리를 변경하기 위해 사용하지만, 유닉스 시스템에서 cd는 chdir() POSIX C 함수를 호출합니다. 이것은 그 명령이 실행될 때, ls와 같은 다른 명령의 경우처럼 다른 디렉토리로 이동하기 위해 새로운 프로세스가 생성되지 않음을 의미합니다. 대신, 쉘 자체가 이 명령을 실행합니다. 이것은 새로운 프로세스가 생성될 때 부모 프로세스가 생성된 디렉토리를 자식 프로세스에 상속하기 때문입니다. 만약 cd 명령이 부모 프로세스의 디렉토리를 상속하면, cd 명령의 목적은 결코 달성되지 않습니다.

Microsoft의 객체-지향 명령줄 쉘과 스크립팅 언어, Windows PowerShell은 쉘 프로세스 내에서 cd 명령 (cmdlet)을 실행합니다. 어쨌든, PowerShell은 .NET Framework를 기반으로 하고 이전 쉘과 다른 아키텍처를 가지기 때문에, ls, rm 등과 같은 PowerShell의 모든 cmdlet은 쉘의 프로세스에서 실행됩니다. 물론, 이것은 여전히 별도의 프로세스에서 실행되는 레거시 명령에는 참이 아닙니다.

Usage

디렉토리는 파일을 보관하기 위해 사용되는 파일 시스템의 논리적 섹션입니다. 디렉토리는 역시 다른 디렉토리를 포함할 수 있습니다. cd 명령은 하위-디렉토리로 변경하거나, 부모 디렉토리로 다시 이동하거나, 루트 디렉토리로 다시 이동하거나 임의의 지정된 디렉토리로 이동하기 위해 사용될 수 있습니다.

사용자의 홈 디렉토리 (~로 표시됨)와 text.txt 및 3개의 하위디렉토리를 표시하는 유닉스 파일 시스템의 다음 하위섹션을 생각해 보십시오.

만약 사용자의 현재 작업 디렉토리가 홈 디렉토리 (~)이면, ls 명령과 cd games 명령을 차례로 입력하면 다음 스크립트를 생성할 수 있습니다:

user@wikipedia:~$ ls
workreports games encyclopedia text.txt
user@wikipedia:~$ cd games
user@wikipedia:~/games$

사용자는 이제 "games" 디렉토리에 있습니다.

DOS에서 유사한 세션 (특정 버전에 따라[vague] "홈 디렉토리"의 개념이 적용되지 않을 수 있음)은 다음과 같습니다:

C:\> dir
workreports        <DIR>       Wed Oct 9th   9:01
games              <DIR>       Tue Oct 8th  14:32
encyclopedia       <DIR>       Mon Oct 1st  10:05
text        txt           1903 Thu Oct10th  12:43
C:\> cd games
C:\games>

DOS는 각 문자-붙인 드라이브에 대해 별도의 작업 디렉토리를 유지 관리하고, 현재 작업 드라이브의 개념도 가지고 있습니다. cd 명령은 작업 드라이브 또는 다른 문자-붙인 드라이브의 작업 디렉토리를 변경하기 위해 사용될 수 있습니다. 드라이브 문자를 명령으로 입력하면 작업 드라이브, 예를 들어, C:로 변경됩니다; 대안적으로, /d 스위치를 갖는 cd는 작업 드라이브와 해당 드라이브의 작업 디렉토리를 한 번에 변경하기 위해 사용될 수 있습니다. 최신 버전의 Windows는 CMD.EXE 아래에서 역방향 호환성을 위해 이 동작을 시뮬레이션합니다.

인수 없이 명령줄에서 cd를 실행하면 다른 운영 시스템에서 다른 효과를 가집니다. 예를 들어, 만약 cd가 DOS, OS/2 또는 Windows에서 인수없이 실행되면, 현재 작업 디렉토리가 표시됩니다 (유닉스 pwd와 동일합니다). 만약 cd가 유닉스에서 인수 없이 실행되면, 사용자는 홈 디렉토리로 돌아갑니다.

스크립트 또는 배치 파일 내에서 cd 명령을 실행하면 다른 운영 시스템에서 다른 효과를 가집니다. DOS에서, 호출자의 현재 디렉토리는 이 명령의 배치 파일의 사용에 의해 직접 변경될 수 있습니다. 유닉스에서, 호출자의 현재 디렉토리는 스크립트의 cd 명령 호출에 의해 변경되지 않습니다. 이것은 유닉스에서, 스크립트가 보통 서브쉘 내에서 실행되기 때문입니다.

Options

Unix, Unix-like

  • 자체로 cd 또는 cd ~는 항상 그들의 홈 디렉토리로 사용자를 넣을 것입니다.
  • cd .은 사용자가 현재 있는 같은 디렉토리에 그들을 남겨둘 것입니다 (즉, 현재 디렉토리는 바뀌지 않습니다). 이것은 사용자 쉘의 내부 코드가 재생성 중인 디렉터리를 처리할 수 없으면 유용하게 될 수 있습니다; cd .를 실행하는 것은 그들의 쉘을 재생성된 디렉토리에 넣을 것입니다.
  • cd ~username는 사용자이름의 홈 디렉토리로 사용자를 넣을 것입니다.
  • cd dir (앞에 /가 없음)는 사용자를 하위디렉토리로 놓을 것입니다; 예를 들어, 만약 그들이 /usr 안에 있으면, cd bin을 입력하면 그들을 /usr/bin으로 넣을 것이지만, cd /bin은 그들을 /bin으로 넣을 것입니다.
  • cd ..는 사용자를 한 단계 상위 디렉토리로 이동할 것입니다. 따라서, 만약 그들이 /usr/bin/tmp에 있으면, cd ..는 그들을 /usr/bin로 이동하지만, cd ../..는 그들을 /usr (즉, 두 단계 상위 디렉토리)로 이동합니다. 사용자는 이 간접 참조를 역시 하위디렉터리에 접근하기 위해 사용할 수 있습니다. 따라서, /usr/bin/tmp에서, 그들은 cd ../../local을 /usr/local로 이동하기 위해 사용할 수 있습니다.
  • cd -는 사용자를 이전 디렉토리로 전환할 것입니다. 예를 들어, 만약 그들이 /usr/bin/tmp에 있고, /etc로 갔다면, 그들은 cd -를 /usr/bin/tmp로 되돌아 가기 위해 입력할 수 있습니다. 사용자는 이것을 두 디렉토리 사이의 역방향과 순방향을 토글하기 위해 사용할 수 있습니다.

DOS, OS/2, Windows, ReactOS

  • 속성 없음 – 현재 디렉토리의 전체 경로를 인쇄합니다.
  • -p – dir과 마찬가지로 최종 디렉토리 스택을 인쇄합니다.
  • -n – 항목은 화면 가장자리에 도달하기 전에 래핑됩니다.
  • -v – 항목은 스택 위치에 의해 앞에 오는 줄당 하나씩 인쇄됩니다.
  • cd\ – (DOS 및 Windows 전용) 루트 디렉토리로 돌아갑니다. 결과적으로, cd\subdir 명령은 항상 명령이 실행될 때 위치에 관계없이 항상 루트 디렉터리의 이름-지정된 하위디렉터리로 사용자를 안내합니다.

Interpreters other than an operating systems shell

파일 전송 프로토콜에서, 각 명령은 제어 스트림에서 CWD로 읽지만, 대부분의 클라이언트 명령줄 프로그램에서 cd로 사용할 수 있습니다. 일부 클라이언트에는 역시 작업 디렉토리를 로컬로 변경하기 위한 lcd를 가집니다.

수치 계산 환경 MATLABGNU Octave는 유사한 기능을 가진 cd 함수를 포함하고 있습니다. 그 명령은 역시 다양한 다른 응용 프로그램 소프트웨어의 명령줄 인터프리터와 관련이 있습니다.

Further reading

 

External links