0%

Basic Linux

리눅스에 대해 간단하게 설명한 후, 리눅스의 기초적인 명령어를 정리합니다.

Linux란

리눅스는 운영체제(OS, Operating System) 중 하나로 보통 서버에서 많이 사용된다. 운영체제의 원조라고 할 수 있는 유닉스를 본따 구현되었으며, GNU에 속해있기에 모든 소스가 오픈되어 있다. (여기서 GNU란 소스를 모두 공개해야 하는 규약인데, 어떤 프로그램을 만들 때 GNU에 속한 소프트웨어를 사용한다면 해당 코드도 모두 공개헤야 한다.)

Linux 종류

오픈소스인 리눅스는 누구나 코드를 수정하고 배포할 수 있기에 수많은 버전들이 존재한다. 그 중에서 보편적으로 가장 많이 쓰이는 종류들만 살펴보자.

CentOS

센토스(CentOS)는 레드햇 계열에 속하는 리눅스이다. 레드햇 계열이란 레드햇이라는 회사에서 배포한 리눅스들을 통칭하는 말인데, 센토스는 레드햇에서 제공한 오픈소스를 그대로 가져와 브랜드만 제거한 형태라고 볼 수 있다. 이런 센토스 계열은 명령어 yum을 사용하여 내부 패키지들을 관리한다.

Debian

데비안(Debian)은 온라인 커뮤니티에서 레드햇보다 먼저 배포한 리눅스이다. 해당 리눅스를 기반으로 수정된 리눅스들을 모두 데비안 계열이라고 통칭한다. 초반에는 레드햇 계열에 비해 내장 유틸리티나 사후 관리 등이 부족하여 외면받았었지만 최근에는 지속적인 업데이트 등으로 레드햇 계열과 동일한 성능을 보여 인기를 얻고 있다. 이런 데비안 계열은 apt를 사용하여 내부 패키지들을 관리한다.

Ubuntu

우분투(Ubuntu)는 데비안 계열 중 하나로 데스크탑 환경을 지원한다. 위에서 설명한 리눅스들은 터미널만 제공되는 서버용이라면, 우분투는 테스크탑 UI를 지원하는 등 클라이언트용 운영체제라고도 볼 수 있다. 서버용 우분투도 있긴 하지만 대부분 개인용 데스크탑에서 많이 사용된다. 우분투 또한 데비안 계열이기에 apt로 패키지들을 관리한다.

간단한 용어 정리

  • 커널(kernel): 하드웨어를 직접적으로 통제하는 프로그램이며, 운영체제의 핵심이다.
  • 쉘(shell): 사용자가 입력한 명령어를 기계어로 변환하여 커널에 전달하는 소프트웨어이다.
  • 콘솔(console): 서버 장치에 물리적으로 연결되어 직접 명령어를 입출력할 수 있는 장치이다.
  • 터미널(terminal): 서버에 로컬 또는 원격으로 접속할 수 있는 콘솔을 구현한 소프트웨어이다. (tty, teletype 이라고도 한다)
  • 절대경로(absolute path): 어떤 디렉토리나 파일의 경로를 root부터 전부 나타낸 경로
  • 상대경로(relative path): 현재 위치를 바탕으로 나머지만 나타낸 경로

Linux 기초 명령어

리눅스에서 많이 사용되는 기초 명령어를 정리하였다.

echo (코드)

코드에 들어가는 것들을 프린트 한다. 예를 들어 코드에 $HOME을 넣는다면 홈 디렉토리 경로를 프린트 한다.

uptime

해당 운영체제의 작동시간이나 사용자 수 등을 보여준다. 여기서 사용자란 터미널 오픈 개수를 의미한다.

tpye (명령어)

어떤 명령어가 내장된 것인지 외부 디렉토리에 저장된 것인지 확인할 수 있다. 내장된 명령어는 echo, cd, pwd, set, mkdir 등이며, 외장된 명령어는 mv, date, uptime, cp 등이 있다.

mkdir (디렉토리 이름)

make directory. 디렉토리를 생성하는 명령어이다. 해당 명령어 뒤에 디렉토리 이름을 여러 개 넣어 한번에 여러 개의 디렉토리를 생성할 수 있다.

mkdir -p (디렉토리 경로)

mkdir에 옵션 -p가 붙으면 상하위 디렉토리를 한번에 생성할 수 있다. 예를 들어 home-user(생성필요)-data(생성필요)의 상황이라면 mkdir -p /home/user/data를 입력하여 user과 data를 한번에 생성할 수 있는 것이다.

cd (디렉토리 경로)

change directory. 디렉토리 변경하는 명령어이다.

pwd

print present working directory. 현재 위치한 디렉토리 경로를 프린트 한다.

pushd (디렉토리 경로)

입력한 디렉토리를 스택 구조로 메모리에 저장한 후 해당 디렉토리로 이동한다. dirs를 입력하면 저장된 스택을 확인할 수 있다.

popd

명령어 pushd로 저장했던 디텍토리 경로로 이동한다. 스택 구조이기에 최근에 저장했던 디렉토리로 이동한다. 웹페이지에서 뒤로가기와 같은 기능이라고 볼 수 있다.

mv (현재 경로) (이동할 경로)

파일이나 디렉토리를 이동할 때 사용한다. 참고로 이름을 변경할 때도 사용할 수 있다. 예를 들어 bird를 birds로 변경해야 한다면 mv /home/user/bird /home/user/birds를 입력하면 된다.

cp (현재 경로) (이동할 경로)

copy file. 현재 경로의 파일을 복사하여 이동할 경로에 붙여 넣는다.

cp -r (현재 경로) (이동할 경로)

copy directory. 옵션 -r이 붙어 디렉토리를 복사하여 붙여 넣는다.

rm (파일 경로)

remove의 약자. 파일이나 빈 디렉토리를 삭제한다. 내용물이 든 디렉토리는 삭제가 안된다.

rm -r (경로)

옵션 -r이 추가되어 내용물이 든 디렉토리도 삭제할 수 있다.

touch (파일 경로)

입력한 경로에 해당 파일을 생성해준다. 예를 들어 /home/user 디렉토리에 id.txt라는 파일을 만들어야 한다면 touch /home/user/id.txt로 입력하면 된다.

cat (파일 경로)

파일의 내용을 프린트 한다. 해당 명령어는 오로지 파일의 내용물만 프린트하며, 디렉토리의 리스트는 반환하지 않는다.

cat > (파일 경로)

>가 추가되면 파일의 내용을 변경할 수 있다. 해당 명령어를 입력한 후, 변경할 내용을 입력하고 ctrl+d을 누르면 파일 내용이 변경된다. 참고로 파일 내용을 수정할 때 줄바꿈이 필요하다면 shift+enter를 입력하면 된다.

ls

현재 위치한 디렉토리의 파일 리스트를 보여준다.

ls -l

현재 디렉토리에 위치한 파일들의 정보(ownership과 같은)를 더 자세하게 보여준다.

ls -a

all을 의미하는 옵션 -a를 붙여 현재 디렉토리의 히든파일까지 모두 보여준다.

ls -lt

현재 디렉토리에 위치한 파일들을 생성 시간별로 보여준다. (최근 생성파일이 상단에 나온다)

ls -ltr

현재 디렉토리에 위치한 파일들을 생성 시간별로 보여준다. 다만 뒤에 붙은 옵션 -r이 reverse를 의미하여 최근 생성파일이 하단에 나온다.

...

.은 현재 디렉토리를 나타내고 ..은 상위 디렉토리를 나타낸다. 예를 들어 현재 /home/user/에 있고 /home/user/data를 입력하고 싶다면 ./data로 입력할 수 있다. 또한 /home/admin/data을 입력해야 한다면 ../admin/data로 쓰면 된다. 해당 기호는 디렉토리 이름이 달라 생기는 오류들을 방지할 수 있어 패키지나 모듈을 만들 때 많이 쓰인다.

whatis (명령어)

명령어에 대한 설명을 한문장으로 보여준다.

man (명령어)

명령어에 대한 설명을 자세하게 보여준다.

apropos (키워드)

키워드가 들어간 명령어를 찾아서 리스트업 해준다.