22.04.07

HyeonKi Jo·2022년 4월 7일
0
post-thumbnail

실습

복습

  • ls 명령어 : ls (파일 리스트보기), ls -l(리스트 + 세부사항, ll로만 입력해도 똑같이 실행된다.), ls -a(숨김파일까지), ls -al(숨김파일+세부사항)
  • file 명령어 : file 내용 정보
  • pwd 명령어 : 현재 작업 위치
  • cd 명령어 : 현재 작업위치 이동, Change Directory
    - cd ~ : /home으로 이동, root이용자는 /root
    • cd - : 최상위 폴더 이동
  • cat 명령어 : 파일 내용 확인
  • more 명령어 : cat을 했을 때, 내용이 너무 길다면, 한페이지씩 볼 수 있도록 사용
  • echo 명령어 : 인자로 입력받는대로 출력, > fileA 해서 fileA도 추가 할 수 있다.
  • head 명령어 : 위에서 10번째 줄까지만 출력, 몇번째 줄까지 출력할지 옵션으로 정할 수 있음
  • tail 명령어 : head와 반대로 끝에서 10줄 출력
  • wc 명령어 : 내용에 대한 세부 정보를 보여주는 명령어
    - wc -l : 파일의 line수
    - wc -c : 파일의 byte수
    - wc -m : 파일의 char수
    - wc -w : 파일의 word수


  • cp 명령어 : 파일을 복사함
    - 다만 dir은 내부 sub파일들이 있기 때문에
    • cp -r dirA dirAA :이렇게 -r옵션을 줘서 recursive하게 내부 파일들도 같이 복사해줘야 한다.
  • touch 명령어 : 빈파일 생성
  • mkdir 명령어 : 빈 directory 생성
    - mkdir dirY/dirZ : dirY의 하위폴더 dirZ만들기
    • 그러나 dirY조차 없는 폴더라면, mkdir -p dirY/dirZ 해서 만들어준다.
  • mv 명령어 : mv fileA dirA 하면 fileA를 dirA로 옮겨준다
    - 그러나 mv fileA fileB하면 fileB가 폴더가 아니기 때문에, 그냥 이름 변경이 된다.
  • rm 명령어 : 파일, 디렉토리를 삭제한다.
    - rm -f : (force) 물음 없이 삭제한다.
    • rm -r : 디렉토리안에 sub파일이 있다면 이 명령어로 삭제해야 한다.
    • rm -rf : -r옵션은 파일 하나하나 다물어보기 때문에 rf를 같이 써준다.
    • rmdir 명령어로 디렉토리를 삭제할 수도 있다. (내용없어야함)

링크

하드링크

  • 디스크 공유
    - 디스크 공간을 효율적으로 이용하기 위해, 똑같은 파일을 여러곳에 두지 않고, 링크로연결하여 사용한다.

    - fileA와 hardA가 링크되어 서로 같은 내용을 가지고 있어 하나가 바뀌면 다른 것도 바뀐 것을 볼 수 있다.
    - echo word > fileA : fileA내용을 지우고 word가 들어감
    - echo word >> fileA : fileA내용 다음에 word가 들어감
  • 링크 둘중 하나가 지워져도 내용은 남아있다.

심볼릭 링크(바로가기)

  • ln -s fileA symbolA : fileA에 symbolA라는 심볼릭 링크를 생성, -s옵션으로 심볼릭 링크로 만들어 준다.
  • fileA에 내용을 넣고 cat symbolA하면 내용이 잘 나온다.
  • fileA를 삭제하면 ls -il했을 떄, symbolA가 빨간색이 되고 -> fileA가 깜빡인다.
  • 그 후 cat symbolA하면 없는 파일이라고 나온다.
  • 다시 fileA를 생성하면 cat symbolA가 실행된다.
  • 반대로 symbolA를 삭제하고 cat fileA하면 잘 나온다.

파일내용 검색

grep 명령어

  • grep 'root' /etc/passwd : 'root'패턴으로 검색해준다.
  • 옵션들
    - grep -n 'root' /etc/passws : 줄번호 달기
    - grep -v 'root' /etc/passws : 반대로 root를 제외하고 검색해줌
    - grep -l 'root' /etc/passws : root패턴이 있는 디렉토리 안의 파일들을 보여줌
    - grep -c 'root' /etc/passws : root가 있는 줄 개수 보여주기
  • grep -w 'kosa' /etx/password : -w 옵션은 word단위로 검색해준다.
  • grep '^kosa' /etc/passwd : 'kosa'로 시작되는 line을 검색해줌
  • grep 'j.k' /etc/passwd : j.k j와 k위치가 맞고 글자수도 맞는 단어를 검색해줌
  • grep 'login$' /etc/passwd : login으로 끝나는 line을 검색해준다.

egrep 명령어

  • egrap 'N(o|e)+' /etc/passwd
    - N뒤에 o 혹은 e글자가 붙은 단어를 검새한다.


  • egrep '(root|kosa):x' /etc/passwd : root 혹은 kosa에 :x 까지 붙어있는 것 검색


  • egrap -c '(svm/vmx)' /proc/cpuinfo

    - svm : amd cpu에서 가상화 도구이다. (Secure Virtual Machine)
    - vmx: intel cpu의 가상화 도구이다.
    - 즉, 현재 가상화가 되어있는지 확인할 수 있는 명령어이다.
    - VM이 가상화가 적절히 세팅하려면 조금 손이 타기 때문에 현재 우리는 0이 나올 것이다.

파일 및 디렉토리 검색

  • find / -name hosts : hosts 이름을 가진 모든파일 검색
  • find / -name hosts -type f : hosts이름을 가진 file검색
  • find / -name hosts -type d : hosts이름을 가진 directory검색
  • find / -name fileA -type f -exec rm {} \; : fileA라는 이름의 파일을 찾고 rm해준다.
  • find / -name fileC -type f -ok rm {} \; :

  • find ~ -mtime -2 : 최근 ~폴더에 있는 파일들 중, 2일동안 수정이 일어났던 파일들을 출력
    - find ~ -mtime -2 | more로 more명령어로 볼 수 있도록 한다.
  • find /usr/bin -size +3000000c -1s

    - /usr/bin에 size가 3000000c -> 3Mb이상인 파일들을 찾는다.
    - 또, -ls옵션으로 ls -l처럼 long하게 보여준다.

vi 편집기 기초

  • nano, edit, vim 등 여러 편집기가 있지만, VM에는 vi편집기를 사용한다. 따로 설치해도 되지만, vi가 있는데 굳이 설치해야 하는지 생각해 보아야 한다.
  • vi numbers : numbers를 편집한다.
    - 'i'키 눌러 insert모드진입 -> 글 입력 -> esc키로 기본모드 진입 -> :wq로 저장 밎 종료
  • a : 텍스트 귀에 커서를 위치시키고 insert모드
  • i : 텍스트가 현재 위치에 위치시키고 insert모드
  • o : 커서가 위치한 줄의 아래에 새로운 줄을 추가하고 거기서 insert모드
  • G : 파일의제일 마지막 줄로 이동
  • 1G : 파일의 제일 첫번째 줄로 이동
  • nG : 파일의 n번쨰 줄로 이동
  • x : 커서가 위치한 부분의 글자를 삭제한다.
  • dd : 커서가 위치한 line을 삭제
  • u : 명령어 실행 전으로 되돌린다.
  • yy : 한 줄을 복사하여 임시 버퍼 공간에 저장한다.
  • p : 임시 버퍼 공간에 저장된 텍스트를 커서의 아랫줄에 붙여 넣는다.

  • :%s/old/new/g : old에 있는것을 new로 바꾸라는 명렁어
    - 치환명령어, 매우 중요하다.
  • :set nu 화면에 줄 번호를 출력한다.
  • :n,nd : n번째 줄부터, n번쨰 줄까지 삭제한다.
  • :n : n번 째 줄로 이동한다.
  • :wq , :x : 둘다 똑같이 저장 후 나오는 명령어다.
  • :q! : 위에서 이것 저것 한것을 저장하지 않고 강제로 나가는 명령어 이다.
  • / : find기능이다. 어떤 word를 찾을떄 사용된다.

파일과 디렉토리 접근 권한 (Permission)

사용자 구분

8진수 권한 체계

  • 읽기 (r) 4 : 파일의 내용을 확인하거나 복사 할 수 있음, 디렉토리 내용 확인 가능
    - cat 명령어를 할 수 있느냐
  • 쓰기 (w) 2 : 파일의 내용을 수정할 수 있음, 디렉토리 내에 파일을 추가하거나 삭제 가능.
    - vi 편집기로 편집할 수 있느냐
  • 실행 (x) 1 : 실행파일의 경우 실행할 수 있음, 디렉토리 접근 및 내용 확인 가능.
    - eXcute, RUN할 수 있느냐
  • 소유자 : 제작자
  • 소유 그룸 : 제작자가 속한 그룹
  • 게스트 사용자 : 그룹 외의 다른 사용자들
  • 권한을 줄때, (r, w, x : 4, 2, 1) 이 숫자로 권한을 부여하게 된 다.
    - rwx : 4 + 2 + 1 = 7
    • r-x : 4 + 1 = 5
      • rw- ; 4 + 2 = 6
    • -wx : 2 + 1 = 3
    • --x : 1 = 1
  • permision이 777이면 모든 사용자에게 모든 권한을 준것이다.
    - 누가 삭제하던 상관없는 파일이다. (too open)
  • chmod 명령어 : 파일의 권한을 변경해준다.
  • 위 test.txt는 chmod로 666 (-rw -rw -rw)
  • 만약 chmod를 아무나 사용할 수 없으면 권한이 의미가 없다.
    - 소유자만 chmod를 사용할 수 있다.

Symbolic 권한 체계

  • chmod u-rw test.txt : User(소유자) 의 권한을 -rw (6)으로한다.
  • chmod g-rw test.txt : Group(그룹) 의 권한을 -rw (6)으로 한다.
  • chmod 0-rw test.txt : Others(게스트, 외부사용자) 의 권한을 -rw (6)으로 한다.
  • ls -n
  • chmod 400 keypair.pem

쉘 명령어

경로 이동

  • cd dirA : 현재 위치의 dirA
  • cd ~ : 계정의 home으로 간다. (root유저는 root)
  • cd ~kosa : kosa계정의 home으로 이동
  • cd ~root : root계정의 root폴더로 이동
  • cd - : 방금 전 폴더로 이동
  • ls ~+ : 현재 위치의 ls
  • ls ~- : 직전 위치의 ls


파일 이름 대체 문자

  • ls fi* : fi로 시작하는 파일 검색


  • ls d??A : d로 시작하고 A로 끝나는 4글자 인 이름을 가진 파일로 ls를 한다.


인용부호 메타문자

  • echo $USER : root로 출력됨
  • echo '$USER' : $USER문자로 출력됨
  • echo "$USER" : root로 출력됨
  • echo "/$UESR" : /(문자)root로 출력됨


  • date
  • echo 'data'
  • echo "The current time is date" : ~에서 shift안누르면 나오는 ` 기호로 date를 감싸면 echo중에서도 date출력이 나온다.


표준 입력(stdin;0) 재지정

  • 파일에 있는 내용들을 출력을 하는 등, 재지정 하고 싶을때 사용
  • 파일 내용을 가져오는??
  • cat 0< /etc/hosts : 0이 표준입력의 의미다.
  • 우리가 cat을 사용할 떄 0< 이 항상 사용되고 있었다.
  • 즉, /etc/hosts의 문자들을 cat에 입력한다 -> cat이 화면으로 출력한다 는 의미인 것 같다.

표준 출력(stdoud;1) 재지정

  • ps : 현재 실행중인 프로세스 목록 표시
  • ps 1> process_list : ps의 출력 내용이 1> 표준출력 재지정을 받고, process_list파일로 저장된다.
  • cat process_list하면 ps에서 나온 출력내용이 화면으로 안나오고 process_list로 나온다.
  • 숫자는 생략이 가능하다.

  • 또, >하면 file에 내용이 지워지고 다시 생성되지만, >>하면 기존 내용에 추가된다.

표준 에러(stderr;2) 재지정

  • root 계정으로 echo "TEST" > /tmp/test.txt 해서 test.txt파일을 만든다.
    - find /tmp -type f -exec grep TEST {} \; -print

    - 제대로 출력되는 TEST 하나를 찾을 수 있다.

  • find /tmp -type f -exec grep TEST {} \; -print 2> /dev/null

    - 에러를 모두 버리고, 출력되는 것만 출력했다.

  • find /tmp -type f -exec grep TEST {} \; -print 1> test.txt 2>&1

    - 반대로 에러만 다른 폴더로 저장할 수 있다.
    - /dev/null : 쓰레기통 같은 곧이다. 표준 에러들을 여기다 버린다는 뜻이다.

파이프 문자

  • ls -l /etc | wc -l : etc의 라인의 개수를 출력


  • cat /etc/ssh/sshd_config | grep -n "22" : sshd_config 에서 22가 들어가는 곳의 줄 번호를 같이 출력해라.


  • ps -ef : 현재 실행중인 모든 프로세스 출력
  • ps -ef | more : 그냥 ps -ef 만 하면 너무 많으니 more로 같이본다.
  • `ps -ef | grep bash

history 명령어

  • history : 입력한 명령어들의 기록을 볼 수 있다.



  • `history 5' : 가장 최근 5개까지 명령어 출력
  • history | head -3
  • history | tail - 5


  • !1 : history에서 1번째 명령어 다시실행
  • !10: history에서 10번째 명령어 다시 실행

사용자 초기화 파일

  • MyName="HueonKi Jo"
  • vi bash_profile : 여기서 마지막에 MyName=Cocudeny를 입력한다.
    - 만약 Cocudeny가 아니라 긴 문장이라면 이런식으로 간단하게 만들 수 있다.
  • source .bash_profile : reboot나 exit할 필요 없이 source해서 다시시작 해준다.
  • Alias : 여기서 변수의 별명을 지어줄 수 있다.

    - 예를들어 rm을 할떄는 'rm -i'을 기본으로 실행하게 된다.

프로세스 확인

  • ps : 현재 실행중인 프로세스 확인
  • ps -f : 현재 프로세스에서 상세정보 보여주기


  • pstree : ps를 트리구조로 보여줌


  • ps -ef : 전체 실행중 프로세스 출력
    - ps -ef | more : 너무 기니까 more로 보기
    - ps -ef | grep bash : 출력된 프로세스들중 bash찾기


    프로세스 ID관련
  • 프로세스 켜진것이 많을 떄, 다시 해보자
  • pgrep -x bash : bash의 PID출력
  • pgrep -l bash : PID를 이름과 같이 출력
  • pgrep -u 1000 : uid가 1000인 사용자 찾기 (확인 안됨)
  • pgrep -lt pts/1 : 터미널 프로세스 출력 (확인 안됨)
    - -t : 터미널
    • pts/1 : 터미널 이름

kill 명령어

  • sleep 1000 & : sleep 1000초를 백그라운드에서 실행
  • pgrep -1 sleep : sleep 프로세스의 PID를 검색
  • kill [PID] : [PID]인 프로세스(sleep)을 kill한다.


  • sleep 2000 &
  • pgrep -; sleep
  • pkill sleep : 프로세스의 이름을 가지고 kill

작업관리

  • sleep 60 : (foreground 실행)
  • sleep 60 & : background 실행
  • jobs : 현재 Background실행 중인 프로세스 보기
  • fg %1 : Background에 있는 애를 foreground로 바꿔준다.
profile
Talking Potato

0개의 댓글