여러분은 쉘(shell)에 대해 들어보신 적이 있나요? 쉘은 사용자와 운영체제 간의 다리 역할을 하는 중요한 도구입니다. 이번 글에서는 쉘의 기본적인 사용법과 명령어, 파일 시스템의 구조와 관리에 대해 알아보겠습니다.
1. 쉘(Shell)이란?
쉘은 사용자의 명령을 운영체제에 전달하고, 운영체제의 출력을 사용자에게 반환하는 인터페이스입니다. 다시 말해, 쉘은 사용자와 운영체제 사이의 연결 고리 역할을 합니다. 우리가 흔히 사용하는 윈도우의 cmd와 유사한 역할을 한다고 생각하시면 됩니다.
2. 쉘의 종류
Linux에서는 여러 가지 쉘(shell)이 있으며, 각각의 쉘이 다른 기능과 특징을 가지고 있습니다. 가장 널리 사용되는 세 가지 쉘은 Bash(Bourne Again Shell), C Shell(Csh), Korn Shell(Ksh)입니다.
Bourne Shell
Bourne Shell은 최초의 유닉스 쉘 중 하나로, 다른 쉘의 기반이 되었습니다.
C Shell
C Shell은 C 언어와 유사한 문법을 사용하여 스크립트를 작성할 수 있게 하는 쉘입니다. C 셸은 Bill Joy에 의해 개발된 셸로, BSD 유닉스에서 기본적으로 제공되는 셸입니다. 변수, 조건문, 루프 등 C 언어의 기능을 지원합니다. C 셸은 유닉스 관리자들에게 친숙하며, 명령어 복잡도가 낮고 사용하기 쉽다는 장점이 있습니다.
Korn Shell
Korn Shell은 Bourne Shell의 확장 버전으로, 사용자 친화적인 기능들을 추가하였습니다. 콘 셸은 David Korn에 의해 개발된 셸로, AT&T 유닉스 시스템에서 처음 도입되었습니다. C 셸과 Bourne 셸의 기능을 결합한 것으로, 더 강력한 명령어와 문법을 제공합니다. 콘 셸은 유닉스 시스템 관리자 및 스크립트 개발자들에게 널리 사용되며, 유닉스 계열 운영 체제의 기본 셸로 설정되기도 합니다.
Bash Shell
Bash Shell은 현재 가장 널리 사용되는 쉘로, Bourne Shell의 기능을 확장하였고 다양한 사용자 친화적인 기능들을 포함하고 있습니다. 배시 셸은 GNU 프로젝트의 일부로 개발된 셸로, Bourne 셸을 대체하기 위해 만들어졌습니다. 배시 셸은 셸 변수, 조건문, 루프 등의 기본 기능을 제공하며, 여러 가지 확장 기능을 추가로 제공합니다.
이 네가지 쉘 중에서 제가 앞으로 주로 다루게 될 쉘은 Bash Shell 입니다.
3. 기본 쉘 명령어
아래 설명하는 명령어보다 셀 수 없을 정도로 많은 명령어가 존재하나, 사용 빈도가 높다고 생각하는 것들로 추려봤습니다.
3.1 파일과 디렉토리 관리 명령어
- ls: 현재 디렉토리의 파일 및 디렉토리 목록을 표시합니다.
- cd: 작업 디렉토리를 변경합니다.
"cd [디렉토리 경로]"를 사용하여 특정 디렉토리로 이동할 수 있습니다.
"cd .."을 사용하여 상위 디렉토리로 이동할 수 있습니다.
"cd ~"을 사용하여 홈 디렉토리로 이동할 수 있습니다. - pwd: 현재 작업 중인 디렉토리의 경로를 표시합니다.
- mkdir: 새 디렉토리를 생성합니다.
- rmdir: 빈 디렉토리를 삭제합니다.
- cp: 파일 또는 디렉토리를 복사합니다.
"cp [소스 파일 [대상 경로]"를 사용하여 파일을 복사할 수 있습니다. - mv: 파일 또는 디렉토리를 이동하거나 이름을 변경합니다.
"mv [소스] [대상]"를 사용하여 파일 또는 디렉토리를 이동하거나 이름을 변경할 수 있습니다. - rm: 파일 또는 디렉토리를 삭제합니다.
3.2 시스템 관리 명령어
- man: 명령어에 대한 매뉴얼 페이지를 표시합니다.
"man [명령어]"를 사용하여 특정 명령어에 대한 매뉴얼 페이지를 열람할 수 있습니다. - uname: 시스템의 정보를 표시합니다.
- top: 현재 실행 중인 프로세스와 시스템의 성능 정보를 실시간으로 표시합니다.
- ps: 현재 실행 중인 프로세스 목록을 표시합니다.
- kill: 실행 중인 프로세스를 종료합니다.
"kill [프로세스 ID]"를 사용하여 특정 프로세스를 종료할 수 있습니다. - df: 파일 시스템의 디스크 사용량을 표시합니다.
"df -h"를 사용하여 사람이 읽기 쉬운 형식으로 사용량을 표시할 수 있습니다. - free: 시스템의 메모리 사용량을 표시합니다.
"free -h"를 사용하여 사람이 읽기 쉬운 형식으로 사용량을 표시할 수 있습니다.
4. 파일 시스템 구조
파일 시스템은 운영 체제에서 파일과 디렉터리를 저장하고 조직하는 방식을 의미합니다. 리눅스에서는 다양한 파일 시스템을 지원하며, 이러한 파일 시스템은 일반적으로 계층 구조로 구성됩니다. 리눅스 파일 시스템의 구조를 이해하는 데는 두 가지 주요 개념이 있습니다.
4.1 디렉토리 구조
리눅스 파일 시스템은 디렉토리 구조로 구성되어 있습니다. 디렉토리는 파일과 다른 디렉토리를 포함할 수 있는 컨테이너 역할을 합니다. 이러한 디렉토리들은 계층적 구조를 형성하여 파일 시스템을 조직화합니다. 최상위 디렉토리는 루트 디렉토리("/")이며, 모든 디렉토리와 파일은 이 루트 디렉토리 아래에 위치합니다. 리눅스에서는 "/"를 경로의 구분자로 사용합니다. 예를 들어, "/home/user/Documents"는 "user" 디렉토리 아래의 "Documents" 디렉토리를 의미합니다.
4.2 절대/상대 경로
파일 경로는 파일이나 디렉토리의 위치를 나타냅니다. 파일 경로는 절대 경로와 상대 경로로 나뉩니다.
- 절대경로
루트 디렉토리에서 부터 시작하여 특정 파일이나 디렉토리에 도달하는 경로를 전부 표시한 형태입니다. 절대 경로는 항상 "/"로 시작합니다. 예를 들어, "/etc/passwd"는 시스템의 "/etc" 디렉토리 아래에 있는 "passwd" 파일을 나타냅니다. - 상대경로
현재 작업 디렉토리를 기준으로 특정 파일이나 디렉토리에 도달하는 경로를 표시하는 형태입니다. 상대 경로는 "./"로 시작하며, "./"는 현재 디렉토리를 의미합니다. 예를 들어, "./Documents"는 현재 디렉토리의 "Documents" 디렉토리를 나타냅니다.
이번 글에서는 쉘에 대해 소개하고 그 종류를 알아봤습니다. 추가로 기본적인 명령어와 리눅스 파일 시스템의 구조에 대해서도 알아봤습니다. 짧은 지식으로 글을 쓰려니 쉽지 않음을 느끼고 있습니다.
'DevOps > Linux' 카테고리의 다른 글
리눅스 네트워크 관리 (TCP/IP, 서브넷팅, 방화벽, 보안그룹, 네트워크 서비스) (0) | 2023.07.25 |
---|---|
리눅스 시스템 관리 (사용자 및 그룹 관리, 프로세스 관리, 서비스 관리, 패키지 매니저) (0) | 2023.07.22 |
리눅스(Linux)란 무엇인가? (역사, 특징, 활용분야) (0) | 2023.07.17 |
댓글