Linux 강좌 / 터미널과 셸 시작하기 - 명령어 구조와 도움말 읽기

리눅스에서 명령어를 사용하려면 터미널을 열고 셸에 명령을 입력합니다. 터미널은 입력과 출력을 보여 주는 창이고, 셸은 입력한 내용을 해석해 명령을 실행하는 프로그램입니다. 이 강좌에서는 명령어의 기본 구조를 읽고, 결과와 오류를 구별하며, 모르는 명령어의 사용법을 직접 찾는 방법을 익힙니다.

터미널과 셸은 어떻게 다른가요?

화면에 보이는 터미널 앱은 글자를 입력하고 실행 결과를 확인하는 인터페이스입니다. 셸은 그 안에서 명령을 읽어 해석합니다. 셸은 내부 기능을 직접 처리하거나 필요한 프로그램을 실행한 뒤, 결과를 터미널에 표시합니다. 따라서 터미널 창의 모양이 달라도 같은 셸을 사용하면 기본적인 명령 작성 방식은 비슷합니다.

이 글의 예제는 Bash(Bourne Again Shell)를 기준으로 합니다. Ubuntu와 Rocky Linux 모두 Bash를 사용할 수 있지만, 실제로 실행 중인 셸과 설치된 명령어는 환경에 따라 다를 수 있습니다. 원격 서버에는 그래픽 터미널 앱이 없을 수도 있으나 셸 명령을 사용하는 원리는 같습니다.

터미널을 열고 입력 위치 확인하기

그래픽 환경에서는 앱 목록에서 ‘터미널’을 검색해 여세요. 메뉴 이름과 실행 방법은 데스크톱 환경에 따라 다릅니다. 터미널을 열면 보통 사용자명이나 현재 경로 뒤에 커서가 깜박입니다. 이것이 프롬프트이며, 셸이 입력을 기다리고 있다는 뜻입니다.

프롬프트의 $ 또는 #는 환경에 따라 표시될 수 있지만 명령어의 일부가 아닙니다. 이 글의 코드 블록에는 복사할 명령만 적었습니다. 관리자 권한이 필요한 작업은 프롬프트 모양에 의존하지 않고 sudo가 필요한지 별도로 설명합니다.

다음 명령을 입력하고 Enter를 눌러 보세요.

printf '%s\n' hello

명령이 실행되면 아래처럼 hello가 출력되고 다시 프롬프트가 나타납니다.

hello

printf는 지정한 형식으로 문자열을 출력합니다. 위 명령의 %s는 문자열을, \n은 줄바꿈을 뜻합니다. 실제 화면의 프롬프트 문구는 예시와 달라도 정상입니다.

명령어의 세 부분 읽기

많은 명령은 명령어 + 옵션 + 인수 형태로 입력합니다. 명령어는 무엇을 할지, 옵션은 어떻게 할지, 인수는 무엇을 대상으로 할지 지정합니다. 다만 모든 명령에 옵션과 인수가 필요한 것은 아닙니다.

ls -l /etc
부분 예제 뜻
명령어 ls 목록을 표시합니다.
옵션 -l 자세한 형식으로 표시합니다.
인수 /etc 표시할 디렉터리를 지정합니다.

공백은 이 세 부분을 나누는 역할을 합니다. 설명서의 ls [옵션] [파일...] 같은 표기에서 대괄호는 ‘생략할 수 있음’을 뜻하는 설명 기호이지 그대로 입력할 문자가 아닙니다. ...는 여러 대상을 지정할 수 있다는 뜻입니다. 정확한 표기는 명령마다 다르므로 해당 도움말을 확인하세요.

공백이 들어간 문자열을 하나의 인수로 전달하려면 따옴표로 묶습니다. 아래 두 명령의 차이를 확인해 보세요.

printf '%s\n' hello world
printf '%s\n' 'hello world'

첫 번째는 hello와 world를 별도 인수로 받아 두 줄을 출력합니다. 두 번째는 전체를 하나의 인수로 받아 한 줄을 출력합니다.

hello
world
hello world

따옴표 안에서도 셸의 확장 규칙은 종류에 따라 다릅니다. 지금은 ‘공백을 포함한 값을 하나로 묶는다’는 기본 용도만 익히고, 변수와 셸 확장은 뒤에서 다룹니다.

입력, 출력과 오류 다루기

명령을 입력한 뒤 Enter를 누르면 셸이 실행합니다. 화면에 표시되는 글은 정상적인 결과일 수도 있고, 잘못된 옵션이나 없는 파일을 알리는 오류일 수도 있습니다. 출력이 없다고 반드시 실패한 것도 아닙니다. 명령의 목적과 오류 메시지를 함께 읽어야 합니다.

긴 출력은 터미널을 스크롤해 볼 수 있습니다. 이전 명령을 다시 입력하고 싶다면 위쪽 화살표 키로 명령 기록을 불러올 수 있습니다. 기록에는 비밀번호나 토큰 같은 비밀정보를 명령 인수로 입력하지 않는 것이 좋습니다.

실행 중인 명령을 중단할 때는 보통 Ctrl+C를 누릅니다. 터미널에서 이것은 일반적인 ‘복사’ 단축키와 다르게 현재 실행 중인 명령에 중단 신호를 보내는 동작입니다. 셸을 종료하려면 exit을 입력할 수 있습니다. Ctrl+D도 빈 입력 줄에서는 종료에 사용되지만, 입력을 기다리는 프로그램 안에서는 다른 의미로 작동할 수 있습니다.

모르는 명령어의 사용법 찾기

옵션을 추측해 실행하기 전에 도움말을 확인하세요. 외부 프로그램과 셸 내장 명령은 도움말을 찾는 방법이 다를 수 있습니다.

방법 언제 쓰나요?
명령어 --help 해당 프로그램이 지원할 때 옵션을 빠르게 훑어봅니다. 모든 명령이 지원하는 것은 아닙니다.
man 명령어 설치된 매뉴얼 페이지에서 사용 형식과 옵션을 자세히 읽습니다.
help 명령어 Bash의 내장 명령에 대한 설명을 봅니다.
type 명령어 Bash가 그 이름을 내장 명령, 별칭, 함수, 외부 프로그램 중 무엇으로 해석하는지 확인합니다.

예를 들어 ls --help로 옵션을 간단히 살펴보고, man ls로 자세한 설명을 읽을 수 있습니다. man 화면에서는 / 뒤에 검색어를 입력해 찾고, q로 나옵니다. 매뉴얼이 설치되지 않은 환경에서는 페이지가 없다는 메시지가 나올 수 있습니다.

ls --help
man ls

cd는 Bash 내장 명령의 예입니다. 먼저 type cd로 종류를 확인하고 help cd로 사용법을 읽어 보세요. type의 문구는 셸과 표시 언어에 따라 달라질 수 있습니다.

type cd
help cd

man 명령어 설명, help 명령어 설명, type 명령어 설명에서 각 도구의 사용 예를 더 볼 수 있습니다.

직접 해 보는 짧은 실습

  1. type printf를 입력해 현재 Bash가 printf를 어떻게 해석하는지 확인합니다.
  2. help printf를 입력해 형식 문자열과 인수에 대한 설명을 찾아봅니다.
  3. printf '%s\n' 'Linux practice'를 실행하고, 화면에 Linux practice가 한 줄로 출력되는지 확인합니다.
type printf
help printf
printf '%s\n' 'Linux practice'

마지막 명령의 출력 예시는 다음과 같습니다. 앞의 두 명령은 사용 중인 Bash의 버전과 표시 언어에 따라 문구가 달라질 수 있습니다.

Linux practice

command not found가 나오면 명령어 철자를 먼저 확인하세요. invalid option처럼 옵션 관련 오류가 나오면 도움말에서 지원 여부와 사용 형식을 확인합니다. 권한 오류가 난다고 모든 명령에 sudo를 붙이지 마세요. 먼저 어떤 파일이나 작업에 권한이 필요한지 확인하는 편이 안전합니다.

공식 문서

이 글의 셸 설명과 내장 명령은 GNU Bash Reference Manual의 기본 기능과 Bash 내장 명령 문서를 참고했습니다. 매뉴얼의 표기와 사용법은 man(1) 매뉴얼에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux 강좌 / 하드 링크와 심볼릭 링크 이해하기 - 차이와 생성 실습

Linux 강좌 / 하드 링크와 심볼릭 링크 이해하기 - 차이와 생성 실습

하드 링크와 심볼릭 링크의 구조적 차이를 inode와 경로로 설명하고, 링크를 직접 만들어 이름 변경 후 동작까지 확인합니다.

Linux / 명령어 / awk - 필드별 텍스트 분석과 계산

Linux / 명령어 / awk - 필드별 텍스트 분석과 계산

Linux awk 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ethtool - 네트워크 링크·드라이버 정보 확인

Linux / 명령어 / ethtool - 네트워크 링크·드라이버 정보 확인

Linux ethtool 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / dpkg - 로컬 DEB 패키지 설치와 설치 정보 조회

Linux / 명령어 / dpkg - 로컬 DEB 패키지 설치와 설치 정보 조회

Linux dpkg 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / cat - 파일 내용 출력과 결합

Linux / 명령어 / cat - 파일 내용 출력과 결합

Linux cat 명령어로 텍스트 파일을 출력하고 여러 파일을 이어 붙이는 방법을 설명합니다. 줄 번호 표시, 빈 줄 압축, 리디렉션과 큰 파일 처리 시 주의점도 정리합니다.

Linux / 명령어 / printf - 지정한 형식으로 값 출력

Linux / 명령어 / printf - 지정한 형식으로 값 출력

Linux printf 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / csplit - 행 번호·패턴에서 파일 분할

Linux / 명령어 / csplit - 행 번호·패턴에서 파일 분할

Linux csplit 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / file - 파일 종류와 형식 확인

Linux / 명령어 / file - 파일 종류와 형식 확인

Linux file 명령어로 확장자와 관계없이 실제 파일 형식, MIME 유형과 문자 인코딩을 확인하는 방법을 설명합니다. 심볼릭 링크, 압축 파일, 여러 파일 검사와 스크립트 활용법도 정리합니다.

Linux / 명령어 / lsblk - 디스크·파티션 구조와 마운트 지점 확인

Linux / 명령어 / lsblk - 디스크·파티션 구조와 마운트 지점 확인

Linux lsblk 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

리눅스 Bash의 ;, &&, ||, &, |, |&, ! 차이를 종료 상태와 실제 예제로 설명합니다. 조건부 실행, 백그라운드 작업, 파이프라인과 pipefail 사용법까지 정리합니다.