성장일기

내가 보려고 정리하는 공부기록

리눅스

리눅스

와나나나 2024. 5. 18. 23:37
728x90

여행 후 느슨해진 일상에 자극을 주고자 부트캠프에 지원해 운이 좋게 참여할 수 있게 되었다. 아직 여러 부분에서 부족하기 때문에 긴장 만땅 상태로 수업을 들었다. 첫 수업의 주제는 리눅스였다. 

 

작년에 학교에서 오픈소스 관련 수업을 들었고, 자연스레 유닉스와 리눅스에 대해 공부했던 기억이 있어 꽤나 반가웠다. 갓 2학년때 들은 리눅스와 2.999 학년인 지금 받아들이는 것에 어떤 차이가 있을지 ...

 

1. 리눅스란 ?

리눅스는 쉽게 말하면 운영체제 중 하나라고 보면 된다.  여기서 운영체제는 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터의 하드웨어 자원을 운영, 관리하고 프로그램을 실행할 수 있는 환경을 제공한다. 

 

리눅스 운영체제를 사용하는 운영체제에는 안드로이드 OS, iOS, MacOsX 등이 있다. 

 

윈도우에서는 리눅스 지원이 안 되기 때문에 무료 리눅스 운영체제를 제공하는 우분투를 사용하게 된다. 그런데 하나의 pc에 운영체제가 2개일 수 없고, 그렇다고 기존 운영체제를 지워버릴 수 없어서  가상머신을 만들고 그 위에서 리눅스를 돌린다.

 

가상머신 툴은 대표적으로 VMWare와 VirtualBox가 있고, 이 수업에선 VirtualBox를 사용했다.

 

 

2. 리눅스의 구조

리눅스 구조

 

리눅스의 구조는 위와 같이 이루어져 있다.

 

  • 커널 (kernel)
    • 운영체제의 핵심으로 하드웨어를 운영하고 관리한다.
    • 프로세스, 파일, 메모리, 통신, 주변창치에 접근해 관리한다. 
    • 커널이 하드웨어를 관리함으로서 유저가 하드웨어에 대해 생각하지 않아도 되어 복잡성이 줄어든다는 장점이 있다.
  • 시스템 호출 (system call)
    • 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 역할을 한다.
  • 쉘 (shell)
    • 사용자와 운영체제 사이의 인터페이스이다.
    • 사용자가 입력한 명령어를 해석해 수행해주는 명령어 해석기
    • 즉, 터미널이 을 통해 커널로 명령어를 전달한다고 생각하면 된다.

 

3. 환경 설정

리눅스에 대해 얄팍하게 알아보았으니, 이제 실제로 이용해야 한다. 버추어박스에서 가상환경을 만들어두고, movaXterm으로 리눅스에 원격접속 하는 방식으로 실습을 진행했다.

 

 

📌 명령어 다운로드 -> 패키지 매니저 (apt) 사용

어떤 명령어를 쓸 땐 따로 설치하는 과정이 필요한데, 이때 사용하는 명령어가 apt이다. 패키지를 관리하는 명령어라고 생각하면 되고, 주요 명령어는 다음과 같다. 두꺼운 글씨는 관리자 권한이 필요하다 (sudo)

 

apt update : 패키지를 다운로드할 수 있는 저장소의 최신 정보를 업데이트한다. 

apt list --upgradable : 업그레이드가 가능한 패키지 목록을 출력한다.

apt upgrade : 전체 패키지를 업그레이드한다. 

apt --only-upgrade install 패키지명 : 특정 패키지만 업그레이드한다. 

apt install 패키지명 : 특정 패키지를 설치한다. 

apt list --installed : 설치된 패키지 목록을 출력한다.

apt search 검색어 : 패키지를 검색한다.

apt show 패키지명 : 특정 패키지에 대한 정보를 확인한다.

apt remove 패키지명 : 특정 패키지를 삭제한다. 

 

 

 

가상머신은 아래와 같은 구조로 연결된다. 

 

한마디로 리눅스에 접근하려면 내pc의 ip만 필요한거고, 이렇게 만들기 위해 버추어박스에서 포트포워딩을 설정한다.

호스트ip에 내 pc의 ip를, 게스트ip에 리눅스 ip를 입력하면 끝이다. ip주소를 모른다면, 터미널에 ifconfig 를 입력해보자.

 

여기서 조심할 것은 위 과정을 마치고 버추어박스를 켠 채로 movaXterm에 접속해야 한다는 것이다. 버추어박스를 켜놓지 않으면 연결이 되지 않는다.

 

 

4. 리눅스 명령어

솔직히 명령어가 그렇게 중요하다고 생각하진 않는다! 사용할 때 모르는 건 그때그때 구글링 해서 쓰면 되니까 ..! 

그래도 많이 쓰는 명령어와 가물가물했던 명령어 가볍게 정리하려고 한다.

 

  • touch : 빈 파일 생성. 이미 생성된 파일이라면 생성시간만 바뀜
    • 사실상 만드는 명령어가 아니라 접근한다고 생각해주면 됨. 해당 파일이 없다면 새로운 빈 파일을 한 개 생성해 주는 것
    • 옵션
      • -c : 파일이 존재하지 않으면 새 파일을 만들지 않게 함
  • rm / rmdir : 파일이나 디렉토리를 삭제하는 명령어
    • rm : 파일삭제, 파일이 들어있는 디렉토리 삭제 (이 경우엔 -r 옵션)
    • rmdir : 비어있는 디렉토리를 삭제
    • 옵션 -i : 지울 때 한 번씩 질문 문구가 뜸
  • echo : 작성한 것을 콘솔에 출력
    • 파일에 간단한 문장 작성할 땐 꺽쇠 (>) 표시로 해줌
    echo 'Hello World' > sample.txt
    
    • 꺽쇠 한 개는 덮어쓰기, 두 개는 이어쓰기
  • less : 내용이 긴 파일을 열 때 사용하는 명령어
    • 페이지 넘길 때
      • /문자열은 문자열을 아래 방향으로 검색
      • ?문자열은 문자열을 위 방향으로 검색
      • n은 검색 결과가 여러 개라면 다음 검색 결과로 이동
      • N은 검색 결과가 여러 개라면 이전 검색 결과로 이동
    • 열고 들어가서 /[찾고싶은 단어] 를 쓰면 찾은 문자열을 알려줌
      • ex | /for → for이 들어간 부분들을 표시함
  • 심볼릭 링크 → 원본파일이 사라져도 심볼릭 링크는 지워지지 않음
    • 대신 실행시 오류 발생
  • find
    • 원하는 파일의 경로를 출력함
    • ex | $ find . -type f -name hello.txt -print
      • type이 f(file)이고, name이 hello.txt인 파일의 경로를 print 해라
  • vim
    • 로컬에서의 메모장 느낌
    • 파일을 열기도 하고, 생성하기도 함 (없는 파일에 메소드 사용하면 해당 파일을 생성)
    • vim hello2.txt
    • 여기서 내용들의 행 번호를 띄우고 싶으면 Esc 누른 후, :set number 쓰면 됨
  • sort
    • 정렬해주는 명령어
    • -k 옵션을 주면 원하는 위치의 필드를 기준으로 정렬을 할 수 있음 
      • -u 옵션을 주면 중복을 제거한 후 정렬할 수 있음 (unique)

 

 

  • 계정생성 (sudo adduser 유저명)

 

나의 노션

 

 

 

  • 권한 부여 ( chmod )

 

  • grep
    • 원하는 단어가 있는 행만 출력
    • 행의 개수만 출력하려면 -n 옵션 이용
    • 대소문자 구분 없애고 싶으면 -i 옵션 이용