리눅스 기본 명령어 모음 | Linux 의미, 기능, 작성 예시
백엔드 개발에 관심있는 분들이라면 오픈 소스 운영체제인 리눅스(Linux)에 대해 들어보셨을 텐데요. 오늘은 리눅스가 무엇인지, 많은 기업에서 리눅스를 사용하는 이유는 무엇인지, 리눅스 기본 명령어에는 어떤 것들이 있는지 살펴보겠습니다.
리눅스란? 🐧
컴퓨터, 스마트폰, 가전제품 등 모든 전자 기기는 하드웨어와 소프트웨어로 구분할 수 있습니다. 하드웨어는 눈에 보이는 전자기기의 물리적인 모든 것을 의미하며, 소프트웨어는 특정 목적을 이루기 위해 컴퓨터에 내리는 명령들을 모아놓은 것을 의미합니다. 사용자가 소프트웨어(일반적인 애플리케이션으로서의 소프트웨어)를 사용할 때, 소프트웨어는 컴퓨터의 CPU, RAM 등의 하드웨어를 사용해서 사용자가 요구하는 동작을 수행하는데, 이때, 운영체제가 소프트웨어에 필요한 만큼의 하드웨어의 자원을 할당해 줍니다.
즉, 운영체제는 CPU, RAM과 같은 한정된 하드웨어 자원을 관리하고, 하드웨어와 소프트웨어 사이에서 이 둘을 중재해 주는 역할을 합니다. 여러분의 컴퓨터에 설치돼 있는 Windows, Mac OS, 그리고 스마트폰 및 태블릿에 설치돼 있는 Android, iOS 등도 모두 운영체제로, 생김새와 사용법은 조금씩 다르지만, 근본적으로 기기의 하드웨어 자원을 관리하는 역할을 수행합니다.
이번 콘텐츠의 주제인 리눅스도 운영체제의 일종입니다. 리눅스(Linux)는 핀란드의 소프트웨어 엔지니어 리누스 토르발즈(Linus Torvalds)가 유닉스(Unix)에 기반하여 만든 운영체제입니다. 리눅스는 1991년에 세상에 처음 등장한 이래로 현재까지 개인용 컴퓨터, 스마트폰, 자동차, 가전제품, 슈퍼컴퓨터 등 다양한 분야에 범용적으로 사용되고 있습니다.
리눅스를 사용하는 이유 3가지
리눅스를 사용하는 이유는 다양하지만, 여기에서는 중요한 몇 가지만 살펴보겠습니다.
1. 오픈소스
리눅스는 오픈 소스 운영체제입니다. 즉, 일반적으로 사용되는 Windows와 Mac OS와 달리 리눅스는 개인이든 법인이든 누구나 리눅스를 무료로 설치하여 사용할 수 있습니다.
2. 커스터마이징
사실 리눅스는 엄밀히 말하면 리눅스 커널(Linux Kernel)을 의미합니다. 커널은 운영체제의 핵심적인 기능을 수행하는 운영체제의 한 부분입니다. 즉, 리눅스는 커널의 형태로 만들어져 있어 운영체체가 수행해야 하는 핵심 기능만 정의돼 있으며, 이외의 부분은 사용자가 자신의 용도에 맞게 커스터마이징하여 사용할 수 있습니다.
3. 안정적인 동작
현재까지도 리눅스는 오픈소스로 관리되고 있습니다. 이에 따라 넓은 사용 범위에서 다양한 사용자들의 검증을 실시간으로 거치고 있으며, 위협 사례나 버그가 발견되면 불특정 다수의 사용자들에 의해 버그가 수정되어 왔기 때문에 다른 운영체제들보다 상대적으로 더 안정적으로 동작할 수 있습니다.
리눅스 기본 명령어
리눅스는 CLI(Command Line Interface)로 조작할 수 있습니다. 여기에서 Interface는 두 대상을 연결해 주는 어떤 매개체를 의미하며, CLI에서의 ‘두 대상’은 컴퓨터와 사람을 의미합니다. 즉, CLI란 명령어(Command Line)를 통해 컴퓨터를 제어하는 방식을 의미합니다. 이제부터 리눅스를 사용할 때 꼭 필요한 기본적인 명령어들을 살펴봅시다.
pwd
pwd는 print working directory의 약자로, 현재 위치하고 있는 경로를 출력하는 명령어입니다. 리눅스에서의 경로는 디렉토리를 의미하므로, pwd를 입력하면 해당 명령어를 입력한 디렉토리를 출력합니다.
mkdir
mkdir은 make directory의 약자로, 현재 위치에서 새로운 디렉토리를 만들 때 사용합니다. mkdir 만들어질_디렉토리의_이름의 형태로 사용하며, 여러 개의 디렉토리를 만들 때에는 만들어질 디렉토리의 이름을 공백으로 구분하여 나열합니다.
rmdir
rmdir은 remove directory의 약자로, 특정 디렉토리를 삭제할 때 사용합니다. 마찬가지로, 여러 개의 디렉토리를 삭제할 때에는 공백으로 디렉토리를 구분하여 명령어 다음에 나열하면 됩니다. 주의할 점은 rmdir로는 내용물이 비어있는 디렉토리만 삭제할 수 있다는 점입니다. 내용물이 존재하는 디렉토리를 삭제할 때에는 이후에 소개할 rm 명령어를 사용합니다.
Is
Is는 list의 약자로, 현재 위치한 디렉토리 내에 존재하는 모든 파일 및 하위 디렉토리의 목록을 출력해줍니다.
Is에는 다양한 옵션을 붙여 사용할 수 있는데, 대표적으로 -I과 -a가 많이 사용됩니다. Is -I을 입력하면 각 파일 및 디렉토리의 세부 정보까지 출력할 수 있습니다. 이 때 출력되는 세부 정보는 권한, 소유자, 그룹, 용량, 생성 시각 등의 정보를 포함합니다.
또한, Is -a를 사용하면 숨김처리된 디렉토리들까지 목록 상에 조회할 수 있습니다. 참고로, 리눅스에서 파일명 앞에 .을 붙이면 해당 파일을 숨길 수 있습니다. 아래의 .hiddenFile은 숨겨진 파일 예시를 위해 생성한 텍스트 파일입니다.
여러 개의 옵션을 조합해서 사용할 수 있습니다. 옵션을 조합할 때에는 - 옆에 사용하고자 하는 옵션을 의미하는 알파벳을 나열해줍니다. 참고로, Is -a와 Is -aI의 결과를 보면 .과 ..을 확인할 수 있는데, .은 현재 위치한 디렉토리, ..은 현재 위치한 디렉토리의 상위 디렉토리를 의미합니다.
cd
cd는 change directory의 약자로, 다른 디렉토리로 이동할 때 사용하는 명령어입니다. 앞서 생성한 directory1로 이동하려면 아래와 같이 입력합니다.
다시 이전의 디렉토리로 돌아가려면 cd ..을 입력하면 됩니다.
경로를 이동함에 있어 절대 경로와 상대 경로라는 개념이 있습니다. 절대 경로는 리눅스의 최상위 디렉토리인 루트 디렉토리(/)를 기준으로 특정 디렉토리의 경로를 지칭하는 개념으로, pwd를 입력했을 때 나타나는 경로가 절대 경로입니다. 반면, 상대 경로는 현재 위치를 기준으로 타겟 디렉토리의 경로를 지칭합니다.
예를 들어, directory1에 위치한 상태에서 directory2로 이동하고자 할 때, 아래와 같이 입력하면 입력한 경로는 절대 경로가 됩니다.
반면, 아래와 같이 현재 위치를 기준으로 경로를 입력하면 상대 경로가 됩니다.
touch
touch는 본래 파일의 생성 날짜 및 시각을 수정할 때에 사용하는 명령어지만, 내용물이 비어있는 파일을 생성할 때에도 사용합니다. 내용물이 존재하는 파일을 생성할 때에는 vim이나 nano 등의 텍스트 편집기를 일반적으로 사용하지만, 텍스트 편집기의 종류가 다양하며, 내용이 많으므로 이에 대한 내용은 여기에서 언급하지 않겠습니다.
아래와 같이 입력하면, txt 확장자를 가진 hi라는 이름의 텍스트 파일이 생성됩니다. 이 텍스트 파일의 용량은 0으로, 내용물이 비어있습니다.
여기에서 pwd의 실행 결과를 hi.txt에 저장해봅시다. 어떤 명령어의 실행 결과를 파일 내에 저장할 때에는 >를 사용합니다. 아래와 같이 입력하면 아무 것도 뜨지 않는데, 리눅스에서 명령어를 입력했을 때 아무 것도 출력되지 않으면 이는 해당 명령어의 수행이 성공했음을 의미합니다.
cat
cat은 concatenate의 약자로, 여러 파일들의 내용을 연결하여 출력시켜줍니다. 아래와 같이 입력하면 앞서 만든 hi.txt를 출력할 수 있습니다. 특정 파일의 내용을 간단하게 확인해보고자 할 때에 많이 사용됩니다.
mv
mv는 move의 약자로, 파일을 이동시킬 때와 파일의 이름을 변경할 때 사용합니다. 먼저 파일을 이동시킬 때에는 mv 이동_대상_파일 이동시키고자_하는_디렉토리의 형태로 아래와 같이 명령어를 입력해주면 됩니다.
파일의 이름을 변경하고자 할 때에는 mv 변경_대상_파일_이름 변경될_파일_이름의 형태로 명령어를 입력해줍니다.
cp
cp는 copy의 약자로, 파일을 다른 위치에 복사하고자 할 때에 사용합니다. 현재 directory1에 위치해 있는 hello.txt를 directory2로 이동시키려면 아래와 같이 명령어를 입력하면 됩니다. cp는 파일을 복제한 새로운 파일을 생성하는 것이므로, 원본 파일을 삭제하지 않습니다. 즉, directory1과 directory2에 동일한 내용을 가진 파일이 존재하게 됩니다.
rm
rm은 remove의 약자로, 파일을 삭제할 때 사용하는 명령어입니다. 앞서 복사한 hello.txt를 삭제하려면 아래와 같이 명령어를 입력하면 됩니다.
rm 명령어에는 -rf 옵션을 붙일 수 있습니다. 여기에서 -r 옵션은 recursive의 약자로, rm의 동작을 재귀적으로 수행하라는 것을 의미하며, -f은 forced의 약자로 삭제 확인 과정을 거치지 않을 때 사용합니다. 즉, rm -rf directory1과 같이 입력하면 directory1을 포함하여, 그 안에 있는 모든 파일 및 하위 디렉토리를 묻지도 따지지도 말고 삭제하라는 의미가 됩니다. 따라서, 내용물이 존재하는 디렉토리를 삭제할 때에 rm -rf를 사용합니다.
rm -rf를 사용하면 휴지통을 거치지 않고 시스템에서 바로 삭제가 진행되니 해당 명령어를 사용할 때에는 주의가 필요합니다.
man
man은 manual의 약자로, 리눅스에서 사용할 수 있는 모든 명령어의 사용법을 출력시킬 때 사용합니다. 예를 들어, Is 명령어에 붙일 수 있는 옵션을 알아보고 싶거나, cp 명령어의 자세한 사용법을 알고 싶은 경우에 man 명령어를 사용하면 됩니다. man 명령어_이름의 형태로 사용하며, 명령어를 입력하면 아래와 같이 매뉴얼이 열립니다.
Is 명령어와 관련된 설명과 사용할 수 있는 모든 옵션이 매뉴얼에 정리돼 있는 것을 확인할 수 있습니다. 위아래로 스크롤 하거나, 위아래 방향키를 활용하여 매뉴얼 문서 내에서 이동할 수 있으며, 필요한 내용을 확인한 후에는 q를 눌러 매뉴얼 창을 닫을 수 있습니다.
리눅스 기본 명령어의 이해도
백엔드 개발 부트캠프에서
지금까지 리눅스가 무엇인지, 리눅스를 사용하는 이유는 무엇인지, 그리고 리눅스 기본 명령어에는 어떤 것들이 있는지 살펴보았습니다.
코드스테이츠 백엔드 개발 부트캠프는 안정적인 웹 서비스를 효율적으로 구축하는 백엔드 개발자 양성 과정입니다. HTML, CSS에 대한 기본적인 이해부터 리눅스(Linux), 깃(Git), 자바(Java), 스프링(Spring), 데이터베이스 등 백엔드 전반에 대한 기초 지식을 쌓아 학습했던 내용을 바탕으로 실제 팀 단위로 웹 애플리케이션 개발 방법을 체득하는 실전형 커리큘럼으로 설계되어 있습니다. 웹 애플리케이션 구현을 위해 필요한 기술 요구사항을 정의하고 작성하는 것부터 시작해 같은 팀원과 함께 IT 제품 개발 및 배포까지 진행할 수 있죠. 프로젝트를 진행하면서 얻은 지식과 경험을 공유하는 기술 발표도 값진 경험입니다.
백엔드 개발자 커리어를 꿈꾸고 있다면 지금 코드스테이츠 백엔드 엔지니어링 부트캠프의 문을 두드려보시면 어떨까요?
글 조영현 Educational Software Engineer (Back-End)