작성자: admin 작성일시: 2016-08-31 12:13:53 조회수: 3446 다운로드: 228
카테고리: 개발/운용 환경 태그목록:

셸, 터미널, 콘솔, 프롬프트

본격적인 프로그래밍을 시작하기 전에 반드시 알아야 하는 것이 셸(shell)과 터미널(terminal), 그리고 콘솔(console)이라는 용어이다. 윈도우에서는 커맨드 프롬프트 라인(command prompt line), 혹은 줄여서 간단히 프롬프트라고도 부르고 우리말로 번역하여 명령 줄이라고도 한다.

사실 정확히 따지자면 이 단어들은 서로 같은 뜻이 아니지만, 프로그램을 처음으로 시작하는 초보자는 일단 다음과 같은 개념으로 생각해도 된다.

"검은 바탕에 글자만 하얗게 나오는 화면"

"커서가 반짝거리고 키보드를 타이핑하면 글자가 써진다"

예를 들어 다음과 같은 화면을 말한다.

그림 2-2 셸 화면의 예

셸 시작하기

셸을 사용하는 것은 모든 컴퓨터 사용의 가장 기초이다. 앞으로 여러가지 데이터 분석을 수행할 때마다 셸을 자주 사용하게 될 것이다. 따라서 자신이 사용하는 컴퓨터 운영체제에서 셸을 시작하는 방법과 어떤 셸 명령어를 지원하는지 잘 알고 있어야 한다.

윈도우즈에서 셸 시작하기

윈도우 운영체제에서 셸을 시작하는 방법은 다음과 같다.

  • <시작> 누름 → 검색 창에 "cmd" 입력 → 검색 결과에서 "cmd.exe"나 "명령 프롬프트" 선택
  • "시작" 버튼 선택 > "모든 프로그램" 선택 > "보조 프로그램" 선택 > "명령 프롬프트" 프로그램 선택

그림 2-3 윈도우에서 명령 프롬프트 시작하기

맥 OS X 에서 셸 시작하기

맥 OS X 운영체제에서 셸을 시작하는 방법은 다음과 같다.

  • Spotlight 검색 → 검색 창에 "Terminal" 또는 "터미널" 입력 → 검색 결과에서 "Terminal"이나 "터미널" 실행
  • 파인더 → 응용 프로그램 → 유틸리티 → 터미널

그림 2-4 맥 OS X에서 터미널 시작하기

연습 문제 1

자신의 컴퓨터에서 셸을 시작해본다. 익숙해질 때까지 여러번 반복한다.

프롬프트

셸 화면에서는 항상 새로운 줄이 시작할 때마다 무언가 글씨가 출력되어 있다. 가장 일반적으로 나오는 것이 $(달러 표시) 기호이다. 그리고 $ 기호 앞에 사용자 이름이나 컴퓨터 이름, 혹은 현재 디렉터리 위치 등 다른 글자들이 있을 수도 있다.

앞서 그림 2-2에서는 dockeruser@7e2af2c6d2d:~$ 라는 글자가 프롬프트이다. 프롬프트(prompt)는 컴퓨터의 현재 상태 등을 보여주는 동시에 셸이 사용자의 명령을 받을 준비가 되었다는 것을 알려준다. 프롬프트가 나오면 사용자는 키보드로 명령을 입력할 수 있다.

참고로 이 책에서는 셸 명령 예제를 보여줄 때 프롬프트까지 포함하여 보여주지만, 독자 여러분이 예제를 직접 작성할 때는 프롬프트 부분을 생략하고 작성해야 한다. 그리고 셸, 터미널, 콘솔이라는 의미로 프롬프트라는 말을 쓰기도 하므로 주의해야 한다.

연습 문제 2

자신의 셸에서 나오는 프롬프트를 적어보고 무슨 뜻인지 알아본다.

셸 명령

방금 셸과 터미널/콘솔은 각각 의미가 다르다고 했는데 정확하게 구분하여 말하면 다음과 같다.

  • 셸 : 사용자가 글자를 입력하여 컴퓨터에 명령할 수 있도록 하는 프로그램
  • 터미널/콘솔 : 셸을 실행하기 위해 글자 입력을 받아 컴퓨터에 전달하거나 컴퓨터의 출력을 글자 화면에 쓰는 프로그램

따라서 셸과 터미널/콘솔은 항상 같이 실행할 수밖에 없으므로 보통 같은 의미로 사용된다.

셸 화면에서는 컴퓨터에 글자를 입력하여 간단한 명령을 수행할 수 있다. 셸 명령은 주로 파일이나 폴더(디렉터리)를 관리하기 위한 명령이다. 윈도우의 셸 명령과 맥/리눅스의 셸 명령은 비슷하지만 약간 차이가 있다.

기본 셸 명령

셸에서는 디렉터리와 파일을 만들고 관리할 수 있으며 현재 사용자가 보고 있는 디렉터리를 변경(이동)할 수도 있다. 다음은 셸에서 많이 사용되는 몇 가지 명령을 정리한 것이다.

명령 윈도우즈 셸 맥/리눅스 셸
화면 지우기 cls ctrl+l
현재 디렉터리 이름 출력 cd pwd
현재 디렉터리의 파일 목록 출력 dir ls -Fcal
한 칸 위의 디렉터리로 이동 cd .. cd ..
한 칸 아래의 디렉터리로 이동 cd 디렉터리이름 cd 디렉터리이름
파일 지우기 del 파일이름 rm 파일이름
디렉터리 만들기 mkdir 디렉터리이름 mkdir 디렉터리이름
디렉터리 지우기 rmdir 디렉터리이름 rmdir 디렉터리이름
셸 나가기 exit exit

연습 문제 3

셸을 가동한 뒤 다음 명령을 수행한다.

  1. 현재 디렉토리의 이름을 알아본다.
  2. 현재 디렉토리의 모든 파일과 디렉토리 목록을 알아낸다.
  3. 이 디렉토리에 foo 라는 이름의 디렉토리를 만든다.
  4. foo 디렉토리로 들어간다.
  5. foo 디렉토리에 bar 라는 이름의 디렉토리를 만든다.
  6. bar 디렉토리로 들어간다.
  7. 다시 foo 디렉토리로 이동한다.
  8. bar 디렉토리를 삭제한다.
  9. 화면을 지운다.
  10. 다시 가장 처음의 디렉토리로 이동한다.
  11. foo 디렉토리를 삭제한다.
  12. 셸을 나간다.

계정과 홈 디렉토리

윈도우, 맥, 리눅스와 같은 운영체제는 사용자 계정(account)과 홈 디렉터리(home directory)를 지원한다. 사용자 계정은 운영체제에 로그인하기 위한 사용자 이름이고, 디렉터리는 각 사용자의 개인화 정보를 저장하기 위한 디렉터리이다. 셸을 가동하면 보통은 로그인한 사용자의 홈 디렉터리에서 셸이 시작한다. 만약 홈 디렉터리에서 시작하지 않았다면 다음 명령으로 홈 디렉터리로 옮길 수 있다. ~ 기호는 틸드(tilde)라고 읽는다. 이 기호는 사용자의 홈 디렉터리를 표시하는 단축 기호이다.


* 윈도우에서 → $ cd %HOMEPATH%

  • 맥/리눅스에서 → $ cd ~

만약 현재 자신의 계정 이름을 모르겠다면 홈 디렉터리로 옮겨서 디렉터리 이름을 보면된다. 윈도우에서는 보통 홈 디렉터리를 C:\Users\계정이름과 같이 만들어 준다.

연습 문제 4

  1. 셸을 가동하여 자신의 홈 디렉터리로 이동한다.
  2. 자신의 계정 이름을 알아낸다.
  3. 자신의 홈 디렉터리에 어떤 서브 디렉터리(숨겨진 디렉터리 포함)들이 있는지 그리고 각각의 서브 디렉터리에는 어떤 파일들이 있는지 조사한다.

계정 이름에 대해

계정 이름을 만들 때는 다음과 같이 만들기를 권장한다.

  • 한국어가 아닌 영어로 만들 것
  • 띄어쓰기가 없는 한 단어로 만들 것

위와 같은 조건을 만족하지 않는다고 해도 큰 영향은 없지만, 다음과 같은 이유로 가끔 어려움을 겪을 수도 있다.

  • 영문이 아니거나 띄어쓰기가 있는 계정 이름을 지원하지 않아 설치나 실행이 어려운 프로그램도 있다.
  • 디렉터리 이름에 띄어쓰기가 있으면 셸에서 사용이 불편하다.
  • 리눅스 등의 운영체제에서는 한글 표시/입력 설정을 추가로 해야 하므로 홈 디렉터리 표시나 사용이 불편해진다.

연습 문제 5

자신의 운영체제에서 새로운 계정을 만들어 보자. 계정 이름은 영어 한 단어로 된 이름을 사용한다.

참고 문헌

셸 명령을 잘 사용하는 것은 컴퓨터를 다루는 가장 기본적인 능력이다. 여기에서 설명한 것은 가장 기초적인 셸 명령에 지나지 않는다. 좀 더 다양한 셸 명령이나 셸 스크립트 프로그래밍 방법을 알고 싶다면 다음 서적을 참고한다.

  • "The Linux Command Line"(William Shotts 지음, No Starch Press 출판)

이 책은 다음 웹 사이트에서 무료로 영문판 pdf 파일을 내려받을 수 있다.

"리눅스 커맨드라인 완벽 입문서"(이종우, 정영신 옮김, 비제이퍼블릭 출판)라는 한글 번역서도 있다.

질문/덧글

The Linux Command Line PDF file 경로입니다. capj*** 2017년 6월 23일 9:47 오전

http://www.linuxzasve.com/preuzimanje/TLCL-09.12.pdf

답변: The Linux Command Line PDF file 경로입니다. 관리자 2017년 6월 23일 9:11 오후

다운로드 URL이 빠져있었네요. 지적해 주셔서 감사합니다. TLCL 저자가 지정한 정식 다운로드 주소를 올려놓았으니 위의 덧글은 삭제해 주시면 고맙겠습니다.