리눅스 쉘 명령어

리눅스 쉘(shell)은 사용자와 운영체제 간의 인터페이스를 제공하는 명령어 해석기입니다. 이 가이드를 통해 리눅스 쉘의 기본 명령어부터 고급 기능까지 체계적으로 학습할 수 있습니다.

쉘이란?

쉘은 사용자가 입력한 명령어를 해석하여 운영체제에 전달하고, 그 결과를 다시 사용자에게 전달하는 역할을 합니다. 리눅스에서는 주로 Bash(Bourne Again Shell)가 기본 쉘로 사용됩니다.

쉘의 주요 기능

  • 명령어 해석: 사용자가 입력한 명령어를 해석하여 실행
  • 파일 시스템 탐색: 디렉터리 이동, 파일 조작
  • 환경 변수 관리: 시스템 환경 설정 관리
  • 스크립트 실행: 자동화된 작업 수행
  • 프로세스 관리: 프로그램 실행 및 관리

기본 명령어

리눅스 쉘에서 가장 기본적이고 중요한 명령어들을 살펴보겠습니다.

시스템 정보 확인 명령어

  • date : 현재의 날짜와 시간을 출력합니다.
    • 시스템의 현재 날짜와 시간을 확인
    • 다양한 형식으로 날짜 정보 출력
    • 스크립트에서 타임스탬프 생성에 활용
  • cal : 달력을 출력합니다.
    • 현재 월 또는 지정된 년도의 달력 출력
    • 한글 달력 설정 방법
    • 다양한 달력 형식 지원
  • whoami : 시스템에 접속한 당시의 계정명과 접속정보를 확인합니다.
    • 현재 로그인한 사용자명 출력
    • 스크립트에서 사용자 권한 확인
    • 시스템 보안 검증에 활용

파일 시스템 탐색 명령어

  • pwd : 현재 작업 디렉터리를 출력합니다.
    • Print Working Directory의 약자
    • 현재 위치한 디렉터리의 절대 경로 출력
    • 스크립트에서 현재 위치 확인에 활용
  • ls : 디렉터리의 내용을 나열합니다.
    • 파일과 디렉터리 목록 출력
    • 다양한 옵션으로 상세 정보 표시
    • 숨김 파일, 권한 정보 등 포함
  • cd : 디렉터리를 변경합니다.
    • Change Directory의 약자
    • 상대 경로와 절대 경로 지원
    • 홈 디렉터리, 상위 디렉터리 등 특수 경로 지원

파일 조작 명령어

  • touch : 빈 파일을 생성하거나 파일의 시간을 수정합니다.
    • 새로운 파일 생성
    • 파일의 접근/수정 시간 업데이트
    • 여러 파일 동시 생성 가능
  • cp : 파일을 복사합니다.
    • Copy의 약자
    • 파일 복사 및 디렉터리 복사
    • 다양한 옵션으로 복사 방식 제어
  • mv : 파일을 이동하거나 이름을 변경합니다.
    • Move의 약자
    • 파일 이동 및 이름 변경
    • 디렉터리 이동도 지원
  • rm : 파일을 삭제합니다.
    • Remove의 약자
    • 파일 삭제 및 디렉터리 삭제
    • 재귀적 삭제 옵션 제공

고급 명령어

텍스트 처리 명령어

  • cat : 파일의 내용을 출력합니다.
    • 파일 내용 확인
    • 여러 파일 연결
    • 파일 생성 및 내용 추가
  • grep : 텍스트에서 패턴을 검색합니다.
    • 정규표현식 지원
    • 파일 내용 검색
    • 다양한 검색 옵션 제공
  • sed : 스트림 에디터로 텍스트를 편집합니다.
    • 텍스트 치환, 삭제, 추가
    • 배치 처리에 활용
    • 정규표현식 기반 편집
  • awk : 패턴 처리 언어로 텍스트를 분석합니다.
    • 텍스트 파일 처리
    • 데이터 분석 및 변환
    • 스크립트 언어로 활용

시스템 관리 명령어

  • ps : 실행 중인 프로세스 정보를 출력합니다.
    • Process Status의 약자
    • 시스템 프로세스 목록
    • 프로세스 상태 및 정보 확인
  • top : 시스템 프로세스를 실시간으로 모니터링합니다.
    • 실시간 시스템 상태 확인
    • CPU, 메모리 사용량 모니터링
    • 프로세스 관리 및 제어
  • kill : 프로세스를 종료합니다.
    • 프로세스 종료
    • 다양한 시그널 전송
    • 프로세스 관리

쉘 스크립트

스크립트 작성

쉘 스크립트는 여러 명령어를 자동화하여 실행할 수 있게 해주는 프로그램입니다.

#!/bin/bash
# 스크립트의 첫 줄 (shebang)
# 현재 날짜와 시간 출력
echo "현재 시간: $(date)"
echo "현재 사용자: $(whoami)"
echo "현재 디렉터리: $(pwd)"

변수 사용

#!/bin/bash
# 변수 정의
name="홍길동"
age=25

# 변수 사용
echo "이름: $name"
echo "나이: $age"

조건문과 반복문

#!/bin/bash
# 조건문 예제
if [ "$(whoami)" = "root" ]; then
    echo "관리자 권한으로 실행 중입니다."
else
    echo "일반 사용자로 실행 중입니다."
fi

# 반복문 예제
for i in {1..5}; do
    echo "숫자: $i"
done

환경 변수

주요 환경 변수

  • PATH : 실행 파일의 경로
  • HOME : 사용자의 홈 디렉터리
  • USER : 현재 사용자명
  • SHELL : 기본 쉘
  • LANG : 시스템 언어 설정

환경 변수 설정

# 환경 변수 설정
export MY_VAR="my_value"

# 환경 변수 확인
echo $MY_VAR

# 영구 설정 (bashrc 파일에 추가)
echo 'export MY_VAR="my_value"' >> ~/.bashrc
source ~/.bashrc

고급 기능

명령어 히스토리

  • history : 명령어 히스토리를 확인합니다.
    • 이전 명령어 목록 출력
    • 히스토리 검색 및 재실행
    • 히스토리 관리

자동 완성

  • Tab 키 : 파일명과 명령어 자동 완성
  • Ctrl+R : 명령어 히스토리 검색
  • Ctrl+A/E : 라인 시작/끝으로 이동

리다이렉션

# 출력 리다이렉션
ls > file_list.txt

# 입력 리다이렉션
cat < input.txt

# 오류 리다이렉션
command 2> error.log

# 출력과 오류 모두 리다이렉션
command > output.log 2>&1

문제 해결

일반적인 문제들

  1. 명령어를 찾을 수 없는 경우
    • PATH 환경 변수 확인
    • 명령어 경로 확인
  2. 권한 문제
    • 파일 권한 확인
    • sudo 명령어 사용
  3. 스크립트 실행 권한
    • chmod +x script.sh
    • 실행 권한 부여

실용적인 팁

효율적인 명령어 사용

  • 별칭(alias) 설정 : 자주 사용하는 명령어를 간단하게 설정
  • 함수 정의 : 복잡한 명령어 조합을 함수로 정의
  • 명령어 조합 : 파이프( )와 리다이렉션을 활용하여 명령어 조합

보안 고려사항

  • 권한 관리 : 적절한 파일 및 디렉터리 권한 설정
  • 스크립트 보안 : 신뢰할 수 있는 소스의 스크립트만 실행
  • 환경 변수 : 민감한 정보는 환경 변수로 관리

이 가이드를 통해 리눅스 쉘의 기본 명령어부터 고급 기능까지 체계적으로 학습할 수 있습니다. 실제 예제를 통해 연습하면서 리눅스 시스템을 효율적으로 관리하는 방법을 익혀보시기 바랍니다.

서브목차