Networks/Docker & Linux

SK networks AI Camp - Linux(설명,명령어 및 예제)

코딩하는 Español되기 2024. 7. 30. 20:00

리눅스 소개

Linux

○ 컴퓨터 운영체제 중 하나

○ 처음 출시한 운영 체제 커널(kernel)인 리눅스 커널에 기반을 둔 오픈 소스 유닉스 계열 운영체제

○ 종류

    ● Ubuntu Linux, CentOS, Kali Linux

    ● 하드웨어(Hardware, H/W) : CPU, RAM, GPU 등

    ● 커널(kernel)

      - 시스템 통제, 응용 프로그램 수행에 필요한 서비스 제공

      - 하드웨어 직접 제어, 프로세스/메모리/파일 시스템 관리

      - 응용 프로그램과 하드웨어 사이 관리자 역할, 쉘에서 명령하는 작업 수행하고 수행 결과를 쉘로 전송

    ● 쉘(Shell)

      - 사용자가 입력하는 명령을 대신 해석해 커널에게 전달하여 실행하는 프로그램
      - 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스 제공

    ● 응용프로그램 (Application)

      -  운영체제에서 실행되는 모든 프로그램

 

리눅스 디렉토리 구조

전체적으로 트리(Tree)구조, 명령어의 성격, 내용, 사용 권한 등에 따라 디렉토리로 구분됨

○ /(루트) : 최상위 디렉토리

○ /bin : 사용자 명령어가 들어있는 디렉토리 e.g. ls, cp, mv 같은 표준 명령어

○ /sbin : 시스템 관리와 관련된 명령어를 포함하는 디렉토리

○ /etc : 시스템 설정 파일 저장 디렉토리

○ /var : 변동적인 데이터를 저장하는 디렉토리

○ /tmp : 임시 파일 저장 디렉토리, 시스템 재부팅시 파일 대부분 삭제

○ /usr : 사용자 관련 프로그램, 라이브러리, 문서 저장 디렉토리

○ /home : 사용자의 홈 디렉토리들이 위치하는 곳. 자신의 파일과 디렉토리 저장

○ /boot : 부팅에 필요한 파일 e.g. 리눅스 커널, 부트 로더 설정 포함 디렉토리

○ /lib : 필수 시스템 라이브러리와 커널 모듈이 저장되는 디렉토리

○ /opt : 선택적으로 설치한 소프트웨어 패키지를 위한 디렉토리

○ /mnt | /media : 외부 저장 장치나 네트워크 파일 시스템을 임시로 마운트하는 데 사용되는 디렉토리


리눅스 사용

○ PowerShell 열고 명령어 입력(다 지운 상태여서 hub에서 받아오기)

docker images
docker pull ubuntu
docker images

* 어떤 이미지 인지 확인하는 명령어 : docker search [이미지]

 ○ ubuntu 실행

docker run -it --name ubuntu-container ubuntu /bin/bash

 

○ 기본적인 명령어 실습

    ● 계정 확인 명령어 : whoami

    * 명령어를 치지 않아도 왼쪽에 보면 root라고 되어있어서 root 계정인걸 알 수 있어요.

whoami

    ● 업그레이드 명령어 : apt-get

    * 설치 전에 파이썬과 마찬가지로 update를 해줘야합니다. (+ upgrade)

    * 의존성 관련 명령어 : apt-get dist-upgrade (다 예스 해주시면 됩니다)

apt-get update
apt-get upgrade
apt-get dist-upgrade

   

    ● 모듈 설치 명령어 : apt-get install [설치할 모듈]

    * -y : 다 예스하겠다는 명령어

    * 사용자가 어디있는 지 물어보는 데 : ASIA(5), Seuol(68)

apt-get install -y sudo vim

 

    ● 목록 조회 명령어 : ls

    * 목록 전부 -a(숨긴파일 보기)     목록 전부 상세 정보  -al

    * 맨 앞의 글씨가 -면 파일, l이면 링크 d면 디렉토리

   

    ● 작업 디렉토리 변경 명령어 : cd [해당 위치 정보]

cd dev

 

    ● 현재 위치 정보 명령어 : pwd

     * 옆에 path정보(현재 /dev)를 통해 알수 있음

 

    ● 폴더 나가기(부모 디렉토리로 이동) : cd ..

cd shm # shm으로 이동 현재: /dev/shm
cd .. # 상위 폴더로 이동 현재 : /dev
cd /dev/shm # 직접 경로 지정 현재 : /dev/shm
cd / # 최상위 폴더로 이동

 

    ● 홈 디렉토리로 이동 : cd ~

 

    ● 파일의 내용을 보고 싶을 때 : cat [보고싶은 파일]

cat .profile

 

홈디렉토리에서 sample이라는 폴더를 만들어 보겠습니다.

폴더 만들기 명령어 : mkdir 폴더명

cd ~
mkdir sample
ls

연속으로 폴더를 만드려면? -p

test안에 tutorial을 만들어 보겠습니다.

mkdir -p test/tutorial

# 확인
ls

# 이동 후 확인
cd test
ls

    ● 파일 만드는 명령어 : touch [만들파일]

    test 폴더 안에 test라는 파일을 만들어 보겠습니다.

touch test.txt
ls

    ● 파일에 입력하기 : echo "입력할 문장" > [입력할 파일]

    test 파일에 hello world 를 찍어볼게요.

echo "hello world" > test.txt
cat test.txt

   

    ● 파일 이동 명령어 : mv 이동할 파일 이동할 경로

     test 파일을 tutorial로 옮겨 볼게요.(해당 파일이 있는 것을 확인)

ls tutorial # 현재 없음을 확인
mv test.txt tutorial/test.txt
ls # test가 이동되어 tutorial 만 나옴
ls ./tutorial

 

    ● 파일 이름 바꾸기

    test에서 tutorial 폴더에 있는 test.txt 파일 tutorial.txt로 이름만 바꾸기

    mv를 통하여 응용 가능 : mv [이동할 파일] [이동할 경로]

    경로는 그대로 두고 이름만 tutorial.txt로 해주면 이름이 변경됨

mv ./tutorial/test.txt ./tutorial/tutorial.txt
ls ./tutorial

 

    ● 파일 복사 명령어 : cp [복사할 파일] [저장할 경로]

    tutorial 폴더 안에 tutorial.txt를 test로 복사해보겠습니다.

cp ./tutorial/tutorial.txt ./tutorial.txt
ls
ls./tutorial

 

    ● 모듈 tree를 설치

    * tree ~ : 홈 디렉토리에 있는 구조를 보여줌

apt-get install tree

    - 그냥 ls 한 상황

     - tree ~ 한 상황

 

    ● 폴더를 복사 : -r

       test 아래에 있는 tutorial 폴더를 /root 아래로 옮겨줄게요.

cp ./test ./sample/test # 폴더 옮기기 에러

cp -r ./test ./sample/test # 폴더 옮기기
tree # 출력

 

    ● 파일 삭제 명령어 : rm [삭제할 파일]

        test안에 tutorial 파일을 삭제해주겠습니다.

rm ./test/tutorial.txt
tree

 

    ● 폴더 삭제

     sample 안에 test 폴더를 삭제하기

    그냥 rm 하면 파일이 있어서 삭제가 안됩니다.(파일이 없는 폴더는 삭제됨)

    그 때 -r을 붙여 주시면 됩니다.

rm ./sample/test # 파일이 있어서 에러
rm -r ./sample/test
tree ~

[상대 경로 문제]

문제 1) 최상위 폴더에서 /root/ 에 있는 폴더를 열려면?

더보기

cat [경로지정] [파일]

cat /root/.profile

   

문제 2) /usr/ 에서 /root/에 있는 폴더를 열려면?

더보기

루트로 이동 하여 /root/로 간다음 파일 출력

상위 폴더로 이동 하는 명령어 : ..

나머지 문제1과 동일

cat ../root/.profile

문제 3) /log/ 디렉토리에서 /root/에 .profile 열기

더보기

1. var/log로 이동

2. 최상위 루트에서 .profile 출력

cd /root/.profile

문제 4) /log/ 디렉토리에서 /bin/ (/usr/bin)에 있는 파일 확인

더보기

1. 파일 확인 명령어 : ls

2. 뒤에 상대 경로 지정 : /usr/bin

ls /usr/bin

문제 5) /log/ 폴더에서 한번의 명령어로 /lib (/usr/lib) 폴더로 이동

더보기

1. 디렉토리 이동 명령어 : cd

cd /usr/lib