리눅스 공부를 시작한 이유
처음 리눅스를 접한건 전공 수업이었다. 당시엔 왜 배우는지도 이해하지 못한 채 그저 시험을 위해 명령어 사용법을 익히고 다시 돌아보지 않았다. 그런데 백엔드로 방향을 정하고 서버와 네트워크, 어플리케이션 배포 등에 리눅스가 사용됨을 알게되었다. 그래서 리눅스가 무엇인지 살펴보고, 기본적인 명령어들을 정리해봤다.
리눅스는 1991년에 Linus Torvals가 개발한 무료 오픈소스 운영체제로, 유닉스 클론 운영체제이다. 보안성이 높고 구조가 안정적이기 때문에 주로 서버에서 많이 사용한다. 리눅스는 CLI(Command Line Interface) 환경의 운영체제이기 때문에 GUI(Graphic User Interface) 환경의 운영체제보다 에너지가 덜 사용된다는 장점이 있다.
리눅스의 구성요소에는 커널, 쉘, 디렉토리가 있다.
커널 kernel
커널은 하드웨어와 가장 가까이 있는 프로그램으로, 하드웨어를 직접적으로 제어한다. 커널은 프로세스 관리, 메모리 관리, I/O 시스템 관리, 파일 시스템 관리 등을 수행하는 운영체제의 핵심이다. 리눅스 커널을 기반으로 만들어진 배포판들을 흔히 리눅스라고 칭한다.
쉘 Shell
쉘은 운영체제의 커널과 사용자 사이를 이어주는 역할을 하는 프로그램이다. 응용프로그램과 커널 사이에 위치해 있으며, 사용자가 입력한 명령어를 해석하여 커널에게 명령을 요청한다.
쉘의 종류에는 bash, zsh 등이 있으며, 리눅스의 표준 쉘은 bash이다.
디렉토리 Directory
파일을 가지고 있거나 또 다른 디렉터리를 가지고 있는 그룹을 의미하며 파일 시스템에 의해 관리되고 있다.
리눅스 명령어는 결국 쉘이 제공하는 명령어다. 리눅스의 기본 쉘이 bash이므로 bash에서 제공하는 기본 명령어들을 살펴보자.
# 현재 사용자의 로그인 이름
whoami
# 현재 시스템에서 실행중인 프로세스들의 계층 구조
pstree
# 프로세스 상태 보기
ps
# 현재 작업 디렉토리 확인
pwd
ls : 현재 디렉토리의 파일 목록 조회
# 파일의 상세 정보 출력
ls -l
# 숨겨진 파일이나 디렉토리까지 전부 출력
ls -a
cd : 디렉토리 이동
# 홈 디렉토리로 이동
cd ~
# 최상위 디렉토리로 이동
cd /
# 상위 디렉토리로 이동
cd ..
경로를 이동함에 있어 절대 경로와 상대 경로가 있다.
절대 경로 : 리눅스의 최상위 디렉토리(/)를 기준으로 특정 경로를 지칭
cd /Users/byulcode/Desktop/linux/dirname
상대 경로 : 현재 위치를 기준으로 타겟 디렉토리 경로를 지칭
cd ../dirname
grep : 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력
# 특정 파일에서 '문자열' 문자열 찾기
grep "문자열" filename
# 현재 디렉토리 내에 있는 모든 파일에서 특정 문자열 찾기
grep "문자열" *
# 특정 문자를 제외한 행만 찾기
grep -v "문자열" filename
touch : 크기가 0인 파일 생성 / 파일의 날짜 및 시간 수정
# 여러 파일 생성
touch filename1 filename2
# 파일의 시간을 현재 시간으로 갱신
touch -c filename
mkdir : 디렉토리 생성
# 여러 디렉토리 생성
mkdir dirname1 dirname2
# 하위 디렉터리도 함께 생성
mkdir dirname/sub_dirname
rm : 파일 삭제
# 파일 삭제
rm filename
# 파일 강제 삭제
rm -f filename
rmdir : 디렉토리 삭제 (비어있는 디렉토리만 삭제 가능)
# 상위 디렉토리도 함께 삭제
rmdir -p dirname1/dirname2
# 디렉토리에 파일/디렉토리가 존재해도 삭제
rmdir -rf dirname