Information Security Study

240109 리눅스 개요, 리눅스 셸 기본 명령어 본문

네트워크 캠퍼스/Linux

240109 리눅스 개요, 리눅스 셸 기본 명령어

gayeon_ 2024. 1. 11. 16:23

리눅스의 역사

: 리눅스는 유닉스의 영향을 받았다.

 

  1. 유닉스 (Unix)
    • 1960년대 후반에 벨 연구소에서 켄 톰슨과 데니스 리치에 의해 개발되었다.
    • 초기 유닉스는 C언어로 작성되었다. 
    • 유닉스는 초기에는 비상업적인 목적으로 사용되었고 학계와 연구소에서 주로 활용되었다.
  2. 리눅스 (Linux)
    • 1991년 핀란드의 리누스 토르발스가 개발한 운영 체제 커널이다.
    • 토르발스는 유닉스와 유사한 운영 체제를 개발하고자 했다.
    • 리눅스는 토르발스의 개발을 거쳐 점차적으로 커뮤니티 기반으로 성장했다.
    • 개방성, 유연성, 안정성 등의 특징이 있다.
  3. 유닉스와 리눅스의 관련성 
    •  리눅스는 POSIX 호환성을 유지하고 유닉스와 유사한 명령어, 파일 시스템, 네트워킹 등을 갖추고 있다.
    • 유닉스와 리눅스의 호환성은 기존 유닉스 시스템에서 리눅스로의 쉬운 이식성과 호환성을 제공했다.
  4. 개발 과정
    • 리눅스는 오픈 소스 프로젝트로 시작되었기에 커뮤니티의 참여와 기여가 중요하다.
    • 수많은 프로그래머, 개발자, 기업들이 리눅스를 발전시키고 지원하여 현재의 안정성과 기능을 갖추게 되었다.
  5. 현재의 상태:
    • 리눅스는 서버, 임베디드 시스템, 개인 컴퓨터, 스마트폰, IoT 디바이스 등 다양한 플랫폼에서 사용되고 있다.
    • 많은 기업들이 리눅스를 기반으로 한 서비스와 제품을 개발하고 있다.

 

Red Hat과 Debian

 

Red Hat 계열

  1. 패키지 관리 시스템
    1. Red Hat 계열은 RPM (Red Hat Package Manager)을 사용한다.
    2. 패키지 관리자는 .rpm 확장자를 갖는 바이너리 패키지들을 사용하여 소프트웨어를 설치, 업데이트 및 삭제한다.
  2. 패키지 관리 도구
    1. yum 또는 dnf를 사용하여 패키지를 관리한다.
    2. 이 도구들은 의존성 문제를 자동으로 처리하며 필요한 경우 다른 패키지들을 함께 설치한다.
  3. 설정
    1. Red Hat 계열은 주로 /etc/sysconfig 디렉터리를 사용하여 시스템 설정을 저장하며 대표적으로 systemd를 사용하여 시스템 초기화 및 서비스 관리를 한다.
  4. 배포판
    1. Red Hat Enterprise Linux (RHEL), CentOS, Fedora 등이 Red Hat 계열에 속한다.

 

Debian 계열

  1. 패키지 관리 시스템
    1. Debian 계열은 APT (Advanced Package Tool)을 사용한다.
    2. .deb 확장자를 갖는 바이너리 패키지들을 사용하여 소프트웨어를 설치, 업데이트 및 삭제한다.
  2. 패키지 관리 도구
    1. apt-get, aptitude, dpkg 등을 사용하여 패키지를 관리한다.
    2. 이 패키지 관리 도구들은 의존성 문제를 해결하는데 적합하며 더 간편한 패키지 관리를 제공한다.
  3. 설정
    1. Debian 계열은 주로 /etc 디렉터리를 사용하여 시스템 설정을 저장한다.
    2. systemd 또는 sysvinit를 사용하여 시스템 초기화 및 서비스 관리를 한다.
  4. 배포판
    1. Debian, Ubuntu, Linux Mint 등이 Debian 계열에 속한다.

이러한 차이점들은 각각의 운영 체제가 서로 다른 방식으로 패키지 관리, 시스템 설정, 초기화 및 서비스 관리를 수행한다는 것을 보여준다. 이는 사용자들이 어떤 운영 체제를 선택할지, 그리고 그 운영 체제를 효과적으로 관리하는 방법을 결정하는 데 중요한 요소가 된다.


리눅스 셸

  • 리눅스 셸은 운영 체제의 핵심 부분 중 하나이다.
  • 사용자와 운영 체제 커널 사이의 인터페이스 역할을 한다.
  • 사용자는 텍스트 명령을 입력하여 셸에 명령을 전달하고, 셸은 이를 해석하고 운영 체제의 서비스를 실행하거나 다른 프로그램을 실행하는 등의 작업을 수행한다.

 

흔히 사용되는 셸

  • Bash(Bourne Again SHell)
  • Zsh(Z Shell)

 

셸의 기능

  • 사용자가 명령을 입력하고 실행할 수 있도록 해주는 인터페이스 역할을 한다.
  • 각각의 셸에는 자체 문법과 기능이 있다.
  • 명령어와 그에 따른 옵션, 파일과 디렉토리 경로 등을 통해 사용자가 컴퓨터와 상호작용할 수 있도록 한다.
  • 파일 시스템에 접근하거나 관리할 수 있다.
  • 프로세스를 실행하고 제어할 수도 있다.
  • 파일을 복사, 이동, 삭제하거나 프로그램을 실행하고 백그라운드에서 실행시키는 것과 같은 작업들을 수행할 수 있다.
  • 명령의 출력을 다른 명령으로 연결한다.
  • 환경 변수를 설정하고 사용할 수 있다.

 

정리하자면 리눅스 셸은 사용자와 운영 체제 간의 다리 역할을 하며

사용자의 명령을 해석하고 실행하여 운영 체제의 기능을 이용할 수 있도록 해준다.


셸에 명령어 입력해보기

 

$ id

: 입력하면 아이덴티티 정보를 알 수 있다.

위에서는 사용자명이 ubuntu이고 이를 나타내는 숫자형 id(UID)는 1000이다.

ubuntu의 기본 그룹명도 ubuntu이고 그룹아이디인 gid도 1000이다.

 

일반적인 리눅스에서는 동일한 그룹명과 사용자명을 가진다.

그 뒤로는 ubuntu가 속한 소속 그룹들이 나온다.

 

 

$ pwd

: 현재 커맨드라인이 위치한 경로를 보여준다.

 

 

$ ls

: 숨겨진 폴더와 파일을 제외하고 현재 폴더에 있는 파일과 폴더 목록을 보여준다.

 

 

 

ls 옵션

 

-l (소문자 L, 자세한 정보 출력)

  • 파일 권한을 볼 수 있다.

-a (숨겨진 파일까지 표시)

  • . 으로 시작하는 파일은 숨긴 파일이다.

-t (시간순 출력)

  • 가장 최근에 생성된 파일을 확인할 수 있다.

 

$ ls -lat $ ls -l -a -t를 연달아서 옵션을 적은 것이므로 동일한 결과를 볼 수 있다.

 

 

 

$ 명령어 --help

: 명령어의 사용법을 출력한다.

pwd는 -L, -P 옵션을 사용할 수 있음을 알 수 있다.

 

 

 

$ ls --hide=숨길 파일이나 폴더명

: 입력한 파일이나 폴더명을 검색 결과에서 배제한다.

: 숨길 파일/폴더명을 명령어 뒤에서 파라미터로 받는다.

snap 폴더만 출력되지 않은 모습을 확인할 수 있다.

 

 

 

$ date

: 현재 시간을 출력한다.

date > date.txt

: 파일이 없다면 생성하고 현재 시간을 date.txt에 저장한다.

 

ls

: 현재 경로의 파일/폴더 목록을 출력한다.

 

cat date.txt

date.txt의 내용을 출력한다.

 

위 이미지처럼 현재 시간을 텍스트 파일로 저장할 수 있다.

 

 

 

$ echo 출력할 내용

: 입력한 내용을 콘솔에 출력한다.

 

 

 

$ cat 파일

: 입력 파일의 내용을 확인할 수 있다.

echo hello linux >> date.txt

: date.txt 파일 마지막에 hello linux를 추가하고 출력한다.