*본 글은 아래 링크를 번역한 것을 정리해둔 것입니다.
https://www.cs.princeton.edu/courses/archive/spr05/cos126/cmd-prompt.html
1. 명령 프롬프트
명령 프롬프트 프로그램을 사용하면 아이콘 기반의 Windows 환경과 달리 전통적인 운영 체제와 더 유사한 환경에서 작업할 수 있다. 명령 프롬프트에서는 마우스 없이 키보드만 있어도 된다. 명령 프롬프트가 윈도우보다 더 낮은 레벨에서 작동하기 때문이다. (lower level) 이는 컴퓨터를 더 세밀하게 제어할 수 있음을 의미한다. 다만, 그만큼 사용자 친화성이 떨어진다는 단점이 있다.
명령 프롬프트는 검은색 터미널 창으로 나타난다. 명령 프롬프트는 다음과 같은 형태로 표시된다.
C: \>
이곳에서 명령을 입력하게 된다.
* Windows에서는 대소문자를 구별하지 않으므로 cd 명령어는 CD와 동일하게 동작한다.
2. 유용한 명령어들
1) javac: Java 프로그램을 컴파일하려면 javac 명령어를 사용한다.
C: \>javac HelloWorld.java
2) java: 성공적으로 컴파일된 Java 프로그램을 실행하려면 java 명령어를 사용한다.
C: \>java HelloWorld
3) more: 파일의 내용을 한 화면씩 출력한다.
C: \>more HelloWorld.java
4) exit: 명령 프롬프트를 종료하고 터미널 창을 닫는다.
C: \>exist
3. 파일 및 디렉터리 작업하기
명령 프롬프트를 사용하면 파일을 디렉터리 계층으로 정리할 수 있다. 이러한 명령어들은 윈도우의 포인트 앤 클릭(point-and-click) 인터페이스에서 사용할 수 있는 기능과 동일한 역할을 한다. 두 가지 방법을 모두 익혀두면 파일을 효과적으로 관리하는 데 큰 도움이 될 것이다.
1) dir: 현재 디렉터리 안의 파일 및 하위 디렉터리를 확인할 수 있다.
C: \> dir
Directory of C:\
10/26/2004 01:36 PM 0 AUTOEXEC.BAT
10/26/2004 01:36 PM 0 CONFIG.SYS
02/10/2005 01:36 PM 126 HelloWorld.java
02/10/2005 08:59 PM DIR introcs
여기서 HelloWold.java는 파일이고, introcs는 디렉터리이다.
2) cd: 현재 작업 중인 디렉터리를 확인한다.
C: \> cd
디렉터리를 변경하려면, cd 명령어 뒤에 디렉터리 이름을 입력한다.
C: \> cd introcs
그러면 명령 프롬프트는 다음과 같이 변경된다.
C: \introcs>
이전 디렉터리로 돌아가고 싶다면 다음과 같이 입력한다.
C: \introcs> cd ..
그러면 다시 C:\>로 돌아간 것을 확인할 수 있다.
3) mkdir: 새 디렉터리를 생성하고 싶다면, mkdir을 사용하면 된다.
C:\introcs> mkdir hello
생성된 디렉터리를 확인하려면,
C:\introcs> dir
02/11/2005 02:53 PM DIR hello
4) move: 파일을 다른 디렉터리로 이동하려면 move 명령어를 사용한다.
C:\introcs> move HelloWorld.java hello
C:\introcs> move readme.txt hello
이제 C:\introcs> 디렉터리에서는 파일이 보이지 않는다.
새 디렉터리로 이동하여 확인하면,
C:\introcs> cd hello
C:\introcs\hello> dir
02/03/2005 11:53 PM 126 HelloWorld.java
01/17/2005 01:16 AM 256 readme.txt
파일의 이름을 변경할 때는 (Windows에서는 같은 이름의 파일로 변경할 수 없으므로) 두 단계로 변경해야 한다.
C:\introcs\hello> move helloworld.java temp.java
C:\introcs\hello> move temp.java HelloWorld.java
5) copy: 파일을 복사
C:\introcs\hello> copy HelloWorld.java HelloWorld.bak
6) del: 파일 삭제
C:\introcs\hello> del HelloWorld.bak
7) * (와일드카드): 여러 파일을 한 번에 처리할 때 *를 사용한다.
새 디렉터리를 만들고 모든 파일을 복사한다.
C:\introcs> mkdir loops
C:\introcs> copy C:\introcs\hello\* loops
이제 hello 디렉터리의 모든 파일이 loops 디렉터리로 복사된 것을 확인할 수 있다.
4. 리디렉션(Redirection)
명령 프롬프트의 중요한 개념 중 두 가지느 표준 입력(Standard Input)과 표준 출력(Standard Output)이다. 기본적으로 표준 입력은 키보드이며, 표준 출력은 컴퓨터 화면이다. 이러한 개념을 활용하면 입력 및 출력을 파일과 연결할 수 있으며, 이를 리디렉션(Redirection)이라고 부른다.
1) 표준 입력 리디렉션 <
기본적으로 프로그램을 실행하면 사용자는 키보드에서 값을 입력해야 한다. 가령, CenterofMass.java 프로그램을 실행하면 사용자는 값을 직접 입력해야만 한다.
C:\introcs\loops> java CenterofMass
0 0 10
1 1 10
0.5 0.5 20
하지만 입력값이 많을 경우, 이를 매번 입력하는 것은 힘들다. 따라서 우리는 입력을 파일에서 읽어오도록 설정할 것이다.
텍스트 편집기를 사용하여 input.txt 파일을 생성하고, 아래와 같이 입력값을 저장한다.
0 0 10
1 1 10
이제 input.txt 파일을 more 명령어로 확인할 수 있다.
C:\introcs\loops> more input.txt
0 0 10
1 1 10
아래 명령어를 실행하면, 키보드 입력 없이 파일에 저장된 값이 프로그램의 입력값으로 사용된다.
C:\introcs\loops> java CenterofMass < input.txt
2) 표준 출력 리디렉션 >
출력을 파일에 저장하려면 >연산자를 사용하면 된다.
C:\introcs\loops> java CenterofMass > output.txt
이제 출력값이 화면이 아니라 output.txt 파일에 저장된다.
이제 출력 파일을 확인해보자.
C:\introcs\loops> more output.txt
*output.txt 파일이 이미 존재하면, 기존 파일이 덮어쓰기될 수 있으니 주의하자.
만약, 기존 파일에 내용을 추가하고 싶다면 >>연산자를 사용한다.
C:\introcs\loops> java CenterofMass >> output.txt
3) 입력과 출력을 동시에 리디렉션
입력과 충력을 동시에 리디렉션하면, 파일에서 입력을 읽고 파일에 출력을 저장한다.
C:\introcs\loops> java CenterofMass < input.txt > output2.txt
위 명령어를 실행하면 화면에는 아무것도 출력되지 않지만, output2.txt 파일에 결과가 저장된다.
5. 파이핑(Piping)
파이핑은 한 프로그램의 출력을 다른 프로그램의 입력으로 사용하는 방법이다. 이 방법은 명령 프롬프트에서 | (파이프 기호)를 사용하여 실행할 수 있다.
1) 기존 방식: 파일을 사용하여 출력 확인
만약 RandInts.java 프로그램이 너무 많은 출력을 생성하여 화면에서 빠르게 지나간다면, 출력을 파일로 저장한 후 확인할 수 있다.
C:\introcs> java RandInts > temp.txt
C:\introcs> more < temp.txt
이 경우 두 개의 명령어를 입력해야 한다는 단점이 존재한다.
2) 해결 방안: 파이프(|) 사용
위의 두 개의 명령어를 하나로 합쳐서 실행할 수 있다면 어떨까?
C:\introcs> java RandInts | more
3) 파이핑이 유용한 경우: 출력이 너무 많아서 한 번에 볼 수 없을 때, 프로그램이 무한 루프에 빠졌을 때 | more를 사용하면 초기 출력을 확인하여 오류를 찾기 쉽다.
즉, 디버깅 및 데이터 필터링에 매우 유용하다.
'Major > Computer Science' 카테고리의 다른 글
| [파이썬 자료구조] 03. 알고리즘의 성능 (0) | 2025.04.18 |
|---|---|
| [파이썬 자료구조] 02. 재귀와 수학적 귀납법 (0) | 2025.04.16 |
| [파이썬 자료구조] 01. 자료구조 개요 (0) | 2025.04.15 |
| [파이썬] 숫자형, 문자열 자료형 (점프 투 파이썬 공부 1일차) (0) | 2025.02.25 |
| [python web programming] 1. 파이썬 가상환경 (0) | 2025.02.23 |