Today I Learned D - 50

손상훈·2022년 11월 9일
0


2022. 11. 09 팀 아침회의!

< 1주차 Linux의 특징과 이해 >

목표 - 1. Linux OS에 대해 이해, 작업 환경 구축
2. Linux 명령어를 사용해 원하는 작업하기

< Linux & Docker 강의를 통해 얻어갈 수 있는 것 >

Linux OS에 대한 이해 [ ]

Linux OS 설치 및 사용 방법 [ ]

docker 라이브러리 설치 및 사용 방벙 [ ]

docker를 사용해 배포 환경을 구축하는 방법 [ ]

도메인을 구매하고, 구매한 도메인을 사용해 배포 환경에 접속하는 방법 [ ]


< 1주차 >

  • Linux OS에 대해 배워보기 [ ]
  • AWS EC2를 활용해 Linux 작업 환경 구축해보기 [ ]
  • Linux OS에서 직접 명령어를 쳐보면서 실습해보기 [ ]

Linux란 무엇인가?

  • git 창시자인 리눅스 토발즈가 1991년 Unix를 기반으로 개발한 OS, 서버용 OS로 많이 사용된다.
  • Linux라는 명칭을 특정 OS를 지칭하는게 아니다. Linux에는 Dibian, Ubuntu, Redhat, CentOS등 다양한 OS들이 존재한다.
  • 사용자가 가장 많은 Ubuntu

Linux의 특징

  • Linux는 오픈소스이다. Linux 기반 OS가 존재.
  • 마우스/키보드를 사용해 조작하는 GUI(Graphical User Interface) 환경의 Windows, Mac과는 다르게 기본적으로 CLI(Command Line Interface) 환경에서 사용.

Linux의 명령어는 명령어 -옵션 의 구조이다.

ls # 파일 목록을 보여주는 명령어
ls -l # -l : 파일 목록을 더 자세히 보여주는 옵션
ls -a # -a : 숨김 파일까지 보여주는 옵션

2개 이상의 옵션을 한번에 사용할 수도 있다.
ls -al # 옵션의 순서는 무관.

일부 명령어는 source와 destination의 구조이다.

cp a.txt a_copy.txt # a.txt를 a_copy.txt로 복사
cp -r folder folder_copy # folder를 복사 할 때는 -r 옵션이 필요!

  • 왜 Linux를 사용하는걸까?

    • 예외적으로 기업을 상대로 보안 패치, 기술지원 등을 지원하는 Redhat이라는 기업과 동명의 OS가 존재하지만, 이러한 케이스를 제외하고는 기본적으로 무료이다.
    • 안정적이다. Linux는 OS의 특성 상 다른 종류의 OS에 비해 비교적 안정적인 환경에서 운영할 수 있다.

< EC2 인스턴스 시작하기 >

AWS 로그인 -> EC2 검색 -> 리전(서울) -> 인스턴스 시작 -> 서버이름 작성 후 Ubuntu OS선택 -> 새 키 페어 생성 -> 임의의 키페어 생성 -> .pem 파일이 다운되는데 ssh연결 시 필요하므로 따로 보관필수 -> 방화벽 설정 (SSH,HTTPs,HTTP 트래픽 허용) -> 스토리지 30GiB 입력 -> 인스턴스 시작

< ssh 연결하기 >

Linux 환경에서 작업할 때에 ssh 연결하여 작업하게 된다.

ssh란?

  • Secure SHell의 약자로, 네트워크 상에 존재하는 다른 컴퓨터에 접근하거나
    파일을 업/다운로드 하는 등의 작업을 할 수 있는 프로토콜이다.

< 보완 그룹 설정 >

인바운드 규칙 편집 - SSH가 존재하는 지 확인. 없으면 추가.

< 터미널에서 ssh 연결하기 > ssh 연결 확실히 숙지하기

.pem 파일이 있는 경로에서 터미널 창을 열어준다.
-> ssh -i (pem파일드래그해오기.)(pem파일드래그해오기.)ubuntu@$퍼블릭IPv4주소
-> 이후 연결하겠습니까? 뜨는데 (처음연결할때만 뜸.) yes를 입력 후 엔터.

터미널창 깨끗하게 하려면 clear 입력.


< 파일과 디렉토리 다루기 >

리눅스에서 디렉토리를 이동하거나 파일지정할 때, 상대 또는 절대경로를 사용하게 된다.

상대 경로

  • 내 현재 위치를 기준으로 사용
  • ex) cd ./dir/ 현재 위치에 존재하는 dir 디렉토리로 이동
  • ex) cd ../ 현재 위치를 기준으로 상위 디렉토리로 이동

절대 경로

  • 현재 위치와 관계없이 사용 ex) cd /home/user/example/dir/

wild card(*)란?

특정 파일이나 디렉토리를 지정할 때, *을 사용하면 빠르게 탐색가능.

  • ls -l ./*.txt # .txt로 끝나는 모든 파일 목록 출력하기

mkdir / 디렉토리 생성하기

mkdir ./test # 현재 경로에 test 디렉토리 생성하기
mkdir ./test/test2 # test 디렉토리 안에 test2 디렉토리 생성하기
mkdir /home/ubuntu/test3 # /home/user 경로에 test3 디렉토리 생성하기 (절대경로)
pwd # 현재 경로 확인

cd / 경로 이동하기

cd ./test # 현재 경로의 test 디렉토리로 이동
cd ./test/test2 # test 디렉토리 안에 test2 디렉토리로 이동
cd ../test3 # 상위 디렉토리의 test3 디렉토리로 이동
cd /home/user/test4 # /home/user/test4 디렉토리로 이동

ls / 파일 목록 보기

ls # 현재 위치에 파일 목록 보기
ls ./test # test 경로에 파일 목록 보기
ls -l # 현재 위치에 파일 목록을 더 자세히 보기
ls -a # 현재 위치에 숨겨짐 파일을 포함해서 보기
ls -al # 현재 위치에 숨겨진 파일을 포함해서 목록을 더 자세히 보기

  • 이외에도 다양한 옵션들이 존재하며, ls --help 명령어로 확인 가능합니다.

touch test.txt # test.txt 파일 생성하기
cp test.txt test_copy.txt # test.txt 파일을 test_copy.txt라는 이름으로 복사하기
cp -r directory directory_copy # 폴더를 복사할 경우 -r 옵션 사용

mv ./directory1/test.txt ./ # directory1 경로의 test.txt 파일을 현재 경로로 이동

  • mv는 파일의 이름을 변경할 때도 사용된다.
    mv test.txt text2.txt # test.txt 파일의 이름을 test2.txt로 변경

rm test.txt # test.txt 파일 삭제
rm -r directory # 디렉토리를 삭제하기 위해서는 -r 옵션을 붙여줘야 합니다.

  • 리눅스에서 숨김 파일을 취급하는 방법
    • 리눅스에서는 파일 혹은 디렉토리 이름이 .으로 시작할 경우 숨김 파일로 취급된다.
      • ex) touch test : test라는 이름의 파일 생성
        touch .test : .test라는 이름의 숨김 파일 생성
    • 숨김 파일은 ls 명령어의 -a 옵션으로 확인할 수 있다.

< 파일 읽고 쓰기 >

vi test.txt # vi 편집기로 test.txt을 열어준다.

  • vi 편집기 mode 종류

    • insert mode : 텍스트를 입력 할 수 있는 상태
    • commend mode : 특수한 commend를 입력 할 수 있는 상태
  • insert mode 진입 방법

    • i : 현재 위치에서 insert mode 진입
    • a : 현재 위치에서 커서를 한 칸 앞으로 이동 후 insert mode 진입
    • A : 현재 위치에서 가장 마지막 텍스트로 이동 한 후 insert mode 진입
    • o : 현재 위치에서 한칸 개행 한 후 insert mode 진입
    • esc : insert mode 나가기
  • commend mode 명령어

    • u : undo (ctrl + z와 동일)
    • ctrl + r : redo
    • gg : 커서를 가장 처음으로 옮김
    • G : 커서를 마지막 줄로 옮김
    • dd : line 잘라내기
    • yy : line 복사
    • p : 붙여넣기
    • :se nu : 라인 줄 표시
    • :숫자 : 숫자 라인으로 이동 (ex - :10 : 10번째 라인으로 이동)
  • 특정 단어 검색
    - /word : word라는 단어를 검색
    - /\cword : 대소문자를 구분하지 않고 word라는 단어를 검색
    - n : 다음 단어 검색
    - N : 이전 단어 검색

  • 수정한 문서 저장

    :w : 저장
    :q : 나가기
    :wq : 저장 하고 나가기
    :q! : 수정내역이 있어도 저장하지 않고 강제로 나가기

  • 파일에 있는 내용 확인하기

    • cat / 파일 내용 보기
      cat test.txt # test.txt 파일의 내용 보기
    • head / 파일의 시작 부분 보기
      head test.txt # test.txt 파일의 첫 10줄 내용 보기
      head -50 test.txt # text.txt 파일의 첫 50줄 내용 보기
    • tail / 파일의 끝 부분 보기

< 패키지 설치하기 >

  • python에서 pip을 사용해 외부 패키지를 사용한 것처럼 apt 명령어를 사용해 패키지를 설치하기.

    ubuntu에서는 ifconfig 라는 명령어를 사용해 ip 주소를 포함해 다양한 네트워크 정보를 확인할 수 있다.

    하지만, 명령어를 실행시켜 보면 아래와 같은 에러가 발생하며 명령어 실행이 되지 않는다. (ubuntu 버전에 따라 ifconfig 명령어가 기본적으로 설치 되어 있을 수도 있다.)

때문에 ifconfig 명령어를 사용하기 위해서는 패키지 설치가 필요합니다.

sudo apt update # apt install 명령어로 설치할 수 있는 패키지들을 최신화한다.

※ update 옵션은 os 설치 후 최초 한 번만 실행시켜 주면 된다.

sudo apt install net-tools

패키지 설치 이후 ifconfig 명령어를 실행시켜 보면 네트워크 정보를 확인할 수 있다.

apt install package / pakage 설치하기


< 자주 사용되는 명령어 >

  • tab / 자동완성 시키기
    • 키보드의 tab 버튼을 활용해 파일, 디렉토리 이름 등을 자동완성 시킬 수 있다.
  • grep / 특정 문자열이 포함 된 파일 찾기
    grep word ./* # 현재 경로의 모든 파일을 대상으로 word라는 단어가 포함된 파일 찾기
    grep word ./* -r # -r 옵션을 붙이면 디렉토리 내부까지 모두 탐색합니다.
  • find / 특정 조건의 파일 찾기
    find / -name "*.txt" # 최상위 경로에서 .txt로 끝나는 파일 혹은 디렉토리 검색
    find ./ -type d # 현재 경로에서 모든 디렉토리 검색
    find ./ -type f -name "*.txt" # 현재 경로에서 .txt로 끝나는 파일 검색
  • history / 명령어 기록 출력하기
    history # 지금까지 사용한 명령어 출력
  • htop / 리소스 사용량 확인하기
    htop # 현재 사용중인 리소스 확인하기
  • df / 남은 디스크 용량 확인하기
    df -h # 디스크 여유 공간 확인하기
  • du / 특정 파일 혹은 폴더가 사용중인 디스크 용량 확인하기
    du -sh ./* # 현재 경로의 파일 및 디렉토리가 차지하는 용량 확인하기
profile
< 코린이의 코딩모험기 >

0개의 댓글

관련 채용 정보