Skip to content

meltsplit/Linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  • 1️⃣ Linux introduction

  • 2️⃣ Basic Command

    • 시스템 로그인과 접속 종료

      root 계정 활성화

      $ sudo passwd root

      root 계정 로그인

      $ su - root


      접속 종료

      $ logout

      • 로그인 한 쉘에서만 유효
      💡 su -s “/bin/bash” - west9 으로 접속 후 logout기능 가능

      $ exit

      • 로그인한 쉘 아니어도 현재 쉘 종료

      시스템 종료

      $ shutdown <매개변수>

      • 관리자 권한이 있는 계정만 가능

      • shutdown

        $ shutdown -r now

        • 지금 종료 후 재시작

        $ shutdown -h +3

        • 3분 후 종료

        $ shutdown -c

        • shutdown 명령 취소


      시스템 재시작

      $ reboot

      • 관리자 권한이 있는 계정만 가능
      • shutdown -r now 와 동일한 기능

      Ctrl + Alt + Delete

      • 무조건 재시작

    • 사용자 확인 및 전환

      $ who

      • 현재 시스템을 이용하는 사용를 화면에 출력

      tty

      • 콘솔 또는 터미널

      pty

      • 가상 콘솔또는 터미널
      • pts와 ptms를 포함

      계정 전환

      $ su

      • 환경변수에 따라 바뀌는 것 확인
    • 디렉토리

      Path

      • 절대경로
      • 상대경로

      pwd (print working directory)

      $ pwd


      현재 속한 파일 출력

      $ ls <디렉터리 경로>

      • ls

        -a 모든 파일 열거
        -l 정보 자세히 출력
        -F 항목의 유형 표시
        -r 알파벳 역순 정렬
        -t 수정시간 정렬
        -S 크키 순 정렬

      디렉터리 변경

      $ cd <디렉터리 경로>

      • cd ~west9/Myfile 접속 가능

      디렉터리 생성

      $ mkdir <새로운 디렉터리>

      • mkdir

        $mkdir -p newfile/newnewfile

        • 계층적으로 생성가능

        $mkdir -m <권한> newdir

        • 생성과 동시에 파일의 권한 설정 가능
        • [권한] u=rwx , u-rwx, 775

      디렉터리 삭제

      $ rmdir <디렉터리 경로>

      • 디렉터리가 비어있을 때 제거 가능

      디렉터리,파일 크기 출력

      $ du <경로>

      • du

        -a 모든 파일 출력
        -k KB단위로 출력
        -m MB단위로 출력
        -h 읽기 쉬운 단위로 출력
        -s 사용량 총 합계만 출력
        -c 출력 + total 합 출력

      디스크 크기와 사용량 출력

      $ df <경로>

      • option

        -a 모든 파일시스템 정보 출력
        -k KB단위로 출력
        -m MB단위로 출력
        -h 읽기 쉬운 단위로 출력
        -i inod의 남은 공간, 사용공간, 사용 퍼센트 출력
        -l 출력하는 목록을 로컬 디스크로 제한

    • 파일

      빈파일 생성

      $ touch <파일명>

      • option

        타임 스탬프 변경

        $ touch -t 200004151113.00 <파일명>


      파일 내용 입력 or 출력

      $ cat 파일 경로

      • option

        $ cat > 파일 경로

        • 입력할 내용을 파일에 기록. (입력모드로 전환됨. ctrl+c로 종료)

        $ cat 파일1 경로 > 파일2 경로

        • 파일 1 내용을 파일2에 기록(파일 2 내용 없어짐.)

        $ cat 파일1 경로 >> 파일2 경로

        • 파일 1 내용을 파일2에 추가(파일 2 끝에 추가함)

      리다이렉션

      • 표준 스트림을 사용자 지정 위치로 우회할 수 있는 명령
      > 표준 출력을 지정한 위치로 전달
      < 표준 입력을 지정한 위치로 전달
      >> 파일의 끝에 내용을 추가함

      파일 내용 화면 단위로 출력

      $ more/less <패턴>

      • more

        - n행씩 출력
        + n행 부터 출력
        +/ <문자열> 지정한 문자열 검색

      파일 앞부분 출력

      $ head <파일 경로>

      • head

        $ head -3 <파일 경로>

        • 3번째 행까지 출력

      파일 뒷부분 출력

      $ tail <파일 경로>

      • tail

        $ tail -f <파일 경로>

        • 실시간으로 화면에 출력

      파일 복사

      $ cp <원본경로> <사본경로>

      • cp

        -a 속성,링크,정보 유지하며 복사
        -b 복사될 경로에 같은 파일 존재시 백업본 만들고 복사
        -f 기존 파일 강제로 삭제 후 복사
        -i 덮어쓰기 전 여부 확인
        -r 디렉터리를 지정된 경로에 복사
        -u 대상 파일보다 원본 파일이 새로운 것일때 복사

      파일 이동 or 이름 변경

      $ mv < 원본 경로> <이동될 경로>

      • mv

        -b 같은 파일 존재시 백업본~ 만들고 복사
        -f 기존 파일 강제로 삭제 후 복사
        -i 덮어쓰기 전 여부 확인
        -v 이동 과정 화면에 출력
        -u 대상 파일보다 원본 파일이 새로운 것일때 복사

      파일 삭제

      $ rm <삭제할 파일>

      • rm

        -d 디렉터리 삭제
        -i 삭제 전 여부 확인
        -f 확인하지않고 강제 삭제
        -r 하위 디렉터리까지 모두 삭제
        -v 삭제 과정 화면 출력

      파일 종류 출력

      $ file <파일 경로>

      • 파일의 종류를 화면에 출력

      파일 비교

      $ cmp <파일1> <파일2>

      • 두 파일을 바이트 단위로 비교
      • 처음으로 다른 위치 출력

      $ comm <파일1> <파일2>

      • 두 파일 행 단위로 비교하여 화면에 출력

      파일 비교 후 다른 점 출력

      $ diff <파일1> <파일2>

      • 파일 1이 어떻게 수정되야 파일2가 되는지

      • diff

        1 a 2,3 파일1 1행에 파일2 2~3행 넣자.
        5,6 d 6 파일1 5~6행 삭제
        3,4 c 10,11 두 파일이 변경 되어야 할 내용

      특정 필드 출력

      $ cut <파일 경로>

      • cut

        $ cut -c <위치> <파일 경로>

        • 추출할 문자 위치

        $ cut -d “구분자” -f <필드번호> <파일 경로>


      파일의 정보(행, 단어, 바이트 수) 출력

      $ wc <파일 경로>

      • wc

        -c 바이트 수
        -w 단어 수
        -l 행 개수

      정렬

      $ sort <파일 경로>

      • sort

        -d 알파벳 순
        -f 대소문자 구분x
        -g 숫자 크기 기준
        -r 역순
        -c 이미 정렬되있다면 노정렬
        -o <파일 경로> 정렬 결과를 파일로 저장

      파일 분리

      $ split <파일 경로>

      • split

        -b num 바이트 단위로 분리
        -l num 행 단위로 분리
        -c 한줄에 최대 num바이트 단위로 분리

    • 파일의 압축 및 백업

      파일 압축

      $ gzip <파일 경로>

      • gzip은 파일당 하나씩 압축되는 것.

      • 파일만 가능 디렉터리 불가.?

      • gzip

        -1~9 압축률
        -c 압축결과 출력 원본파일 그대로
        -v 자세한 정보 출력
        -d gz파일 압축 해제

      파일 결합

      $ tar <파일1> <파일2> <파일3>

      • tar

        -c tar로 묶음
        -x 지정한 파일 풀음
        -f <새로운 파일.tar> 해당 경로에 저장
        -v 진행과정 출력
        -z 묶은 파일을 gzip 이용하여 압축 혹은 해제함
        -j 묶은 파일 bz2 이용하여 압축 혹은 해제
        -C <해제할 경로> 풀거나 압축 해제 시에 해당 경로에 해제
        -t 묶은 파일에 들어있는 파일들의 목록을 화면에 출력

        $ tar -cf <새파일.tar> <결합할 파일1> <결합할 파일2>

        $ tar -xf <해제할.tar>

        $ tar -zcf <새파일.tar.gz> <결합할 파일1> <결합할 파일2>

        $ tar -zxf <해제할파일.tar.gz>

  • 3️⃣ Advanced Command

    • 사용자 및 그룹 관리

      UID, GID

      • 사용자 id, 그룹 id

      리눅스 디렉터리 구조

      • 이미지

        Untitled


      Shell

      • 명령어 해석기
      • 우분투는 기본적으로 bash

      Shell Script

      • 사용자 - 커널 간의 의사소통 해주는 언어

      • 사용자 환경설정 파일도 쉘 스크립트 형태로 존재

      • bash가 사용하는 시작 스크립트 파일

        /home/meltsplit/.bashrc


      사용자 데이터베이스

      • /etc/
        • group

          • 4개 필드 :
          • 모든 사용자는 하나 이상의 그룹에 속해있어야함.

          <그룹명>:<패스워드>: : <소속 계정명> <그룹명>:<패스워드>: : <소속 계정명> <그룹명>:<패스워드>: : <소속 계정명>

        • shadow

          • 총 9개 필드 :

          <0>:<1>:<2>:<3>:<4>:<5>:<6>:<7>:<8> ****<0>:<1>:<2>:<3>:<4>:<5>:<6>:<7>:<8> <0>:<1>:<2>:<3>:<4>:<5>:<6>:<7>:<8>

          0 계정 명
          1 암호화된 패스워드
          2 패스워드 변경한 날 일수 (1970.1.1~)
          3 패스워드 재 변경까지 남은 일 수
          4 패스워드 변경 해야만 하는 날 남은 일 수
          5 패스워드 만료되기 전 사용자에게 경고하는 시간
          6 계정이 사용 불가능하게 되기 전에 까지 남은 일 수
          7 계정이 사용 불가능하게 될 날 까지의 일 수
          8 예약 항목?

      로그인 계정 출력

      $ users

      • 현재 로그인한 사용자 계정 출력

      $ finger

      Untitled


      $ useradd <새 계정명>

      • useradd

        $ useradd -d /home/ms -s /bin/bash -m

        -c 실제 이름 설정
        -d /home/ms 홈 디렉터리 설정
        -u 1004 UID값 설정
        -g 기본 그룹 지정
        -G 다중 그룹 지정
        -s /bin/bash 로그인 쉘 설정
        -m 홈 디렉터리 자동 생성
        -D 계정 생성 기본 설정 파일 출력

      $ passwd <계정명>

      • passwd

        -d 패스워드 삭제
        -S 암호체계 출력
        -l 계정 lock
        -u 계정 unlock

      $ userdel <계정명>

      • “/etc/passwd”, “/etc/group”,”/etc/shadow” 내부 내용 삭제

      $ usermod <계정명>

      -c 사용자 설명 변경
      -d 홈 디렉터리 변경
      -u UID 변경
      -g GID 변경
      -s 로그인 쉘 변경
      -l 계정명 변경

      $ groupadd -g <그룹명>

      $ groupdel <그룹명>

      $ groupmod -g <그룹명>


    • 파일 접근 권한 관리

      파일 권한 관리

      $ chmod <접근 권한> <파일 경로>

      • 접근 권한
        • 기호모드

          $ chmod u=rwx,g=rx,o=rx file1

          $ chmod u-r,g+rw,o-rwx file1

        • 8진법 모드

          $ chmod 775 file1


      파일 소유권 변경

      $ chown <계정명> <파일 경로>

      $ chgrp <그룹명> <파일 경로>

      • ch

        $ ch* -R Dir**

        • 하위 디렉터리까지 권한or 소유권 변경

      umask

      • 새로 만들어지는 파일의 권한 default값

      • 기본 umask값 = 0002

      • root계정 umask값 = 0022

      • 기본권한: 디렉터리: 777, 파일: 666

      • 디렉터리

        디렉터리 r w x r w x r w x
        기본 값 1 1 1 1 1 1 1 1 1
        0002 0 0 0 0 0 0 0 1 0
        최종 값 1 1 1 1 1 1 1 0 1
        💡 따라서 기본 umask값이 0002인 디렉터리는 u=rwx, g=rwx, o=r x 775
      • 파일

        파일 r w x r w x r w x
        기본값 1 1 0 1 1 0 1 1 0
        0002 0 0 0 0 0 0 0 1 0
        최종값 1 1 0 1 1 0 1 0 0
        💡 따라서 기본 umask값이 0002인 파일 권한은 u=rw, g=rw, o=r 664

      쉘 변경

      $ chsh -s <쉘_ 절대 경로>


      Set UID,GID,Sticky bit

      💡 이해는 했는데 왜 실행이 안되지..
    • 정보 검색 명령어

      $ which <명령어>

      • <명령어>의 절대 경로 출력

      $ whereis <명령어>

      • 절대경로와 man파일 경로까지 출력

      Find

      $ find <경로> <파일명>

      -name <파일명> 이름
      -perm <파일 권한> 권한
      -type <파일 타입> 타입
      -size 크기
      -links 링크 개수
      -user 소유자
      -group 소유 그룹
      -mtime <+n> n일 지난 파일
      -atime <-n> n일 내에
      마지막 액세스
      -print 화면에 출력
      파일 타입
      d 디렉터리
      f 파일
      l 심볼릭 링크
      s 소켓
      b 블록파일
      l 파이프
      시간
      +n n일 지난
      -n n일 이하

      grep

      $ grep <표현식> <(파일 경로)>

      • 패턴

        $ grep “AB” f*

        • f로 시작하는 모든 파일에서 AB를 포함하는 모든 행 출력

        $ grep “^a” file.txt

        • a로 시작하는 모든 행 출력

        $ grep “4$” file.txt

        • 4로 끝나는 모든 행 출력

        $ grep “[^0-9]” file.txt

        • 숫자가 아닌 문자 하나라도 포함하는 모든 행 출력

        $ grep “[^abc]” file.txt

        • a 또는 b 또는 c가 아닌 어떤 문자라도 포함 한다면 출력

        $ grep “ab” file.txt*

        • a 혹은 ab 혹은 ab.... 행 출력
      • 옵션

        -c 파일 명: 라인 개수로 출력
        -h 파일 이름 출력 X
        -i 대소문자 구분 X
        -l 파일 이름만 출력
        -n 라인 앞에 번호 붙임
        -w 독립적인 단어로만 찾음
        -v 패턴이 없는 라인만 출력
  • 4️⃣ Linux Init

    • 🗂 리눅스 디렉터리 구조

      • 🗂 root
        • 🗂 boot : 커널, 부팅 관련 파일

        • 🗂 dev : 장치 파일

        • 🗂 usr : 프로그램 패키지

          • 🗂 bin : 압축, 네트워크, 자료 전송
          • 🗂 sbin : 네트워크 관련 명령어, 데몬
        • 🗂 bin : 기본 명령어

          • bash
          • zsh
          • ls
          • cd
          • 각종 명령어들..
        • 🗂 sbin : 시스템 운영 관련 명령어

        • 🗂 etc : 앱, 서버 환경설정

          • 🗂 apt :
            • sources.list : 서버 기록
          • profile : 환경설정, 환경변수
          • bash.bashrc : 시스템 전역 함수, alias 설정, 환경변수
          • passwd : 사용자 비밀번호 정보 파일
          • groups : 그룹 정보 파일
          • shadow :
          • shells :
          • intend.conf : 데몬 설정 파일
        • 🗂 root : root계정 홈 디렉터리

          • 🗂 snap
        • 🗂 home : 홈 디렉터리

          • 🗂 meltsplit
            • .bashrc : 계정의 지역 환경설정, 환경변수
            • 🗂 MyFile
              • test.sh
        • 🗂 lib : 공유 라이브러리, 커널 모듈

        • 🗂 tmp : 임시 파일 저장

          시스템 재구동시 삭제됨.

        • ...

          etc etc..

    • 부팅과정과 시스템 초기화

      1. POST
      2. Boot Loader
      3. Kernel
      4. init 프로세스
    • 프로세스 및 데몬 관리

      $ ps

      • ps

        -e 모든 프로세스 출력
        -f 자세 정보 출력
        -x 제어 터미널에 없는 프로세스 출력
        -u 프로세스 소유자 정보 출력
        -r 수행중이 프로세스만 출력
        -p 지정된 프로세스 정보 출력
        -t 지정된 터미널에 연관된 프로세스 정보 출력

      $ pstree

      $ top

      $ kill

      $ sleep 5 &

      $ jobs

      $ fg

    • 소프트웨어 관리

      $ apt-get install <패키지명>

      $ apt-get remove --purge <패키지명>

  • 5️⃣ Shell Programming

    • 쉘 프로그래밍 개요
    • BASH
  • 6️⃣ Shell Programming2

    • Vim편집기

    • 쉘프로그래밍

      ${var}

      • ${var}

        ${var} 변수 값으로 치환
        ${var:=value} null이면 valuer값 저장
        ${var:+value} null 아니면 value 출력
        ${var:-value} null이면 value 출력
        ${var:?value} null이면 에러
        ${#var} 문자열 길이 출력
        ${var:offset} offset만큼 앞을 자르고 출력
        ${var:offset:length} offset부터 length만큼 출력

      조건식

      $ test 표현식

      $ [ 표현식 ]

      • 과 표현식 사이는 공백이 포함 되어야 함

      조건문

      If문

      if [ 조건문 ] 
      then        
      	실행문1
      elif [ 조건문 ]
      then
      	실행문2
      else
      	실행문3
      fi

      Case문

      case 문자열 
      in
      	정규식1) 실행1 ;;
      	정규식2) 실행2 ;;
      	y | Y | yes | Yes) 실행3 ;;
      esac

      반복문

      Select

      select n in 0 1 2 3 4
      do
      	echo $n     #0 1 2 3 4
      done

      For문

      for(( n=0;n<5;n++))
      do
      	echo $n     #1 2 3 4 5
      done

      While문

      while [ n0 ]
      do
      	n+++
      done

      Until문

      until [ n=0 ]
      do
      	n--
      done

      Function

      functionName() {
      	실행문
      }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages