Cd (명령어)
1. 개요
`cd`는 명령 줄 인터프리터에서 사용되는 명령어로서, 현재 작업 디렉터리를 변경하는 데 사용된다. 유닉스 계열, 도스, 윈도우, ReactOS 등 다양한 운영체제에서 지원되며, 셸의 내부 명령어로 구현된다. 사용자는 `cd` 명령어를 통해 디렉터리 간 이동, 홈 디렉터리 이동, 상위 또는 하위 디렉터리 이동 등을 수행할 수 있다.
| 이름 | cd / chdir |
|---|---|
| 개발자 | AT&T 벨 연구소, MetaComCo, 마이크로소프트, IBM, DR, 노벨, HP, JP 소프트웨어, ReactOS 기여자 |
| 출시 | (정보 없음) |
| 최신 릴리스 버전 | (정보 없음) |
| 최신 릴리스 날짜 | (정보 없음) |
| 운영 체제 | 유닉스, 유닉스 계열, V, 도스, MSX-DOS, FlexOS, OS/2, TRIPOS, 윈도우, MPE/iX, Plan 9, Inferno, ReactOS, KolibriOS, SymbOS |
| 플랫폼 | 크로스 플랫폼 |
| 장르 | 명령어 |
| 라이선스 | (정보 없음) |
| 웹사이트 | (정보 없음) |
| 다른 이름 | chdir |
-
파일 시스템 디렉토리 -
홈 디렉토리
홈 디렉토리는 다중 사용자 환경에서 각 사용자가 개인 파일과 설정을 저장 및 관리하는 공간으로, 유닉스에서 처음 도입되어 다양한 운영체제에서 구현 방식과 위치가 다르지만 파일 시스템 권한으로 보호되어 개인 정보와 시스템 안정성을 유지하는 데 중요한 역할을 한다. -
파일 시스템 디렉토리 -
작업 디렉토리
작업 디렉토리는 컴퓨터 파일 시스템에서 현재 사용자가 작업 중인 디렉토리를 의미하며, 운영체제 및 프로그래밍 언어에서 변경 및 확인 기능을 제공하고, DLL 검색 경로에 포함 시 보안 문제가 발생할 수 있다. -
내부 도스 명령어 -
TYPE (도스 명령어)
TYPE은 텍스트 파일의 내용을 화면에 표시하는 기능을 수행하는 명령어이며, MS-DOS, 윈도우 등 다양한 운영 체제에서 지원된다. -
내부 도스 명령어 -
Echo (명령어)
echo 명령어는 다양한 운영체제 및 셸 환경에서 입력받은 문자열을 그대로 출력하는 명령어로, POSIX 표준의 부재로 시스템에 따라 동작 방식에 차이가 있어 이식성이 떨어진다는 평가를 받는다. -
윈도우 관리 -
블루스크린
블루스크린은 윈도우 운영체제에서 발생하는 치명적인 오류로, 컴퓨터 작동을 멈추고 파란색 화면에 오류 메시지를 표시하며, 하드웨어 또는 소프트웨어 문제로 인해 발생하고, 시스템 복원, 안전 모드 부팅 등의 방법으로 대처한다. -
윈도우 관리 -
파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
2. 사용법
`cd` 명령어는 파일 시스템에서 현재 작업 디렉터리를 변경하는 데 사용된다. 사용자가 터미널이나 명령 프롬프트에서 이 명령어를 입력하면, 지정된 경로로 작업 디렉터리가 바뀐다.
`cd` 명령어의 기본적인 사용법은 다음과 같다.
* `cd [디렉터리 경로]`: 지정된 경로로 현재 작업 디렉터리를 변경한다. 예를 들어, `cd documents`를 입력하면 현재 디렉터리 아래의 `documents` 디렉터리로 이동한다.
* 경로를 지정하지 않거나 `cd ~` 입력: 사용자의 홈 디렉터리로 이동한다. 유닉스 계열 시스템에서는 환경 변수 `$HOME`에 설정된 디렉터리로, 윈도우에서는 사용자 프로필 디렉터리로 이동한다.
* `cd .`: 현재 디렉터리를 유지한다. 이는 셸 스크립트 등에서 유용하게 사용될 수 있다.
* `cd ..`: 현재 디렉터리의 상위 디렉터리로 이동한다.
* `cd -`: 바로 직전에 위치했던 디렉터리로 이동한다. 두 디렉터리를 번갈아 작업할 때 유용하다.
예를 들어, 사용자의 홈 디렉터리가 다음과 같은 구조를 가지고 있다고 가정해 보자.
--
현재 작업 디렉터리가 홈 디렉터리(`~`)인 상태에서 `ls` 명령어를 실행하면 다음과 같은 결과가 나타난다.
```text
me@host:~$ ls
workreports games encyclopedia text.txt
```
이후 `cd games` 명령어를 실행하면 현재 작업 디렉터리가 `games` 디렉터리로 변경된다.
```text
me@host:~$ cd games
me@host:~/games$
2.1. 유닉스, 유닉스 계열 운영체제
`cd ~사용자이름`은 지정된 사용자의 홈 디렉터리로 이동한다. `cd dir` (상대 경로)는 현재 디렉터리 아래의 `dir` 디렉터리로 이동한다. `cd /dir` (절대 경로)는 루트 디렉터리 아래의 `dir` 디렉터리로 이동한다. `cd ../..`는 두 단계 상위 디렉터리로 이동한다. pushd와 popd 명령어를 함께 사용하여 디렉터리 스택을 관리하고, 여러 디렉터리를 번갈아 이동할 수 있다.
유닉스 계열 운영 체제에서 `cd` 명령어의 다양한 사용법은 다음과 같다.
* 인수 없음, 또는 `cd ~`: 셸 변수 `$HOME`에 설정된 디렉토리로 이동한다.
* `cd ~사용자 이름`: 해당 사용자 이름의 홈 디렉토리로 이동한다.
* `cd 디렉토리 이름`: 하위 디렉토리로 이동한다. 예를 들어 현재 디렉토리가 `/user`인 상태에서 "cd bin"을 입력하고 Enter 키를 누르면 `/user/bin`으로 이동한다. 한편, "cd /bin"을 입력하고 Enter 키를 누르면 `/bin`으로 이동한다.
* `cd ..`: 한 단계 상위 디렉토리로 이동한다. 예를 들어 현재 `/user/bin/temp`에 있는 상태에서 "cd .."을 입력하고 Enter 키를 누르면 `/user/bin`으로 이동한다.
* `cd ../..`: 두 단계 상위 디렉토리로 이동한다. 예를 들어 현재 `/user/bin/temp`에 있는 상태에서 "cd ../.."을 입력하고 Enter 키를 누르면 `/user`로 이동한다.
* `cd -`: 바로 전에 있던 디렉토리로 이동한다. 예를 들어 `/user/bin`에 있다가 "cd /etc"를 입력하여 `/etc`로 이동한 후, "cd -"를 입력하면 `/user/bin`으로 돌아간다. 다시 "cd -"를 입력하면 `/etc`로 이동한다. 즉, "cd -"를 사용하면 두 디렉터리를 번갈아 이동하며 작업할 때 디렉터리 이름을 বারবার 입력하는 수고를 덜 수 있다.
2.2. 도스, 윈도우, ReactOS
* `cd \` (또는 `cd\`) : 루트 디렉터리로 이동한다.
* `cd 드라이브명:` : 해당 드라이브의 현재 작업 디렉터리를 출력한다.
* `cd /D 드라이브명:경로` : 작업 드라이브와 해당 드라이브의 작업 디렉터리를 한 번에 변경한다. (윈도우)
* 경로 없이 `cd`만 입력하면 현재 작업 디렉터리의 전체 경로를 출력한다.
도스(DOS)는 각 문자 드라이브에 대해 별도의 작업 디렉터리를 유지하며, 현재 작업 드라이브의 개념도 가지고 있다. `cd` 명령어를 사용하여 작업 드라이브 또는 다른 문자 드라이브의 작업 디렉터리를 변경할 수 있다. 드라이브 문자를 자체적으로 명령어로 입력하면 작업 드라이브가 변경된다 (예: `C:`).
최신 버전의 윈도우는 CMD.EXE에서 하위 호환성을 위해 이러한 동작을 시뮬레이션한다.
3. 동작 방식
`cd` 명령어는 대부분의 명령 줄 인터프리터(셸)에 내장되어 있다. 예를 들면 유닉스 셸 (본 셸, tcsh, bash 등), 윈도우 cmd.exe 및 윈도우 파워 셸, 도스의 COMMAND.COM 등이 있다. 셸은 `cd` 명령어를 실행하기 위해 별도의 프로세스를 생성하지 않고, 셸 자체에서 직접 명령을 처리한다.
유닉스 시스템에서는 `cd`가 `chdir()` POSIX C 함수를 호출한다. 윈도우의 명령줄 셸은 일반적으로 Windows API를 사용하여 현재 작업 디렉터리를 변경한다. Windows PowerShell은 .NET Framework 기반으로, 모든 cmdlet(cd 포함)이 셸의 프로세스 내에서 실행된다.
4. 구현
`cd` 명령어는 다양한 운영체제에서 구현되었다.
파일 전송 프로토콜(FTP)에서는 제어 스트림에서 `CWD`로 표기되지만, 대부분의 클라이언트 프로그램에서는 `cd`로 사용 가능하다. 로컬 작업 디렉터리 변경을 위한 `lcd` 명령어(`locally`)도 지원된다.
수치 해석 환경인 MATLAB과 GNU Octave에도 `cd` 함수가 포함되어 있다.
대부분의 운영 체제에서 이 명령을 수행하는 시스템 호출은 POSIX에 의해 정의된 `chdir`이다. 윈도우의 명령줄 셸은 일반적으로 Windows API를 사용하고, 유닉스 시스템에서는 `cd`가 `chdir()` POSIX C 함수를 호출한다.
`cd` 명령어는 ls와 같은 다른 명령어와 달리 새로운 프로세스를 생성하지 않고, 셸 자체가 직접 실행한다. 이는 새로운 프로세스가 생성될 때 자식 프로세스가 부모 프로세스가 생성된 디렉터리를 상속받기 때문이다. 만약 `cd` 명령어가 부모 프로세스의 디렉터리를 상속받으면, `cd` 명령어의 목표는 달성될 수 없다.
Windows PowerShell은 .NET Framework를 기반으로 하여, `cd` 명령(`cmdlet`)을 포함한 모든 cmdlet이 셸의 프로세스에서 실행된다.