7.19 정리-리눅스 명령어2

HakJin Kim·2023년 7월 19일
0

01. 파일찾기

<기본>
#find [경로][옵션][설정값]
#find / -name file1.txt
;
;
<날짜>
#find / -atime -1 ===> -1의 `+이전/-이내` 개념
#find / -atime +1 ===>  1일 단위 기준.
<>
#find / -amin -1
#find / -amin +1
;
;
<외부 명령어 실행 (삭제)>
#find / -name passwd -exec rm -rf {} \;
;
;

<옵션>
-name: 파일/디렉터리 이름
-type: 파일 유형(d:디렉터리, f:파일)
-empty: 빈 파일 찾기

-atime: 파일/디렉터리 접근 시간(n*24시간 전)
-mtime: 파일/디렉터리 수정 시간(n*24시간 전)
-ctime: 파일/디렉터리 '허가권/소유권/속성' 변경 시간(n*24시간 전)

-exec: 외부 프로그램(명령어) 실행

만일 현재시간이 7월 19일 이라고 가정한다면,

find -mtime -2 # 2일(48시간)전 ~ 현재시간 -> 7.17 ~ 7.19
find -mtime 2 # 3일(72시간) 전 ~ 2일(48시간)전까지 -> 7.16 ~ 7.17
find -mtime +2 # 3일(72시간)전보다 과거 -> ~ 7.16


02. vi 에디터

  • vi 에디터를 직접 실행한 상태
  • 파일 내용을 수정하는 도구
  • 모드형 편집기
    a. 명령 모드
    b. 편집 모드
    c. 실행 모드
#vi                       ===>vi 편집기 실행
#vi [존재하지 않는 파일명]  ===>존재하지 않는 해당 파일명
#vi [존재하는 기존 파일명]  ===>존재하는 실제 파일명

02-1. vi 에디터-편집모드

<편집모드>

  • 진입키: i, a, o.....I, A, O
  • 저장은 명령모드로 빠져 나가야 가능하다.
    [편집모드] ->(ESC)-> [명령모드] ->(:)-> [실행모드]

02-2. vi 에디터-명령모드

<명령모드>

<옵션>
x          ===> 한 문자 삭제
dw         ===> 한 단어 삭제
[n/숫자]dd  ===> n 문장 삭제

u          ===> 되돌리기

[n/숫자]yy  ===> n 문장 복사하기
p          ===> 붙여넣기

r          ===> 한 문자 치환
[n/숫자]G   ===> n번째 열로 이동

02-3. vi 에디터-실행모드

<실행모드>

<옵션>
:q (저장X 나가기)
:wq (저장O 나가기)
:wq! (강제로 저장O 나가기)
:x (저장하고 빠져나가기)
:w (저장하기)
:w [파일명] (해당 파일명으로 저장)
:set number  (행 번호 붙이기)
:set nonumber  (행 번호 제거)


[old=대상 문자/new=바꿀 문자]
:%s/old/new/g      ===> 해당 문자 전체 치환
:%s/old/  /g      ===> 해당 문자 전체 삭제
:10,15s/old/new/g ===> 10~15줄 문자 치환
:10,15s/old/   /g ===> 10~15줄 문자 삭제

치환 결과

  • 기본
  1. 전체 치환 (IOS->Apple)
  2. 전체 삭제(Apple 삭제)
  3. 해당 열 문자 치환(1~10열 Linux->Redhat)
  4. 해당 열 문자 삭제(1~10열 Redhat 삭제)

03. 환경 설정 파일

  • 사용자의 홈디렉터리에 생성
    /root/.exrc <- 설정하는 위치

04. 파일 내용 출력

#cat [옵션] [파일명]

<옵션>
-n: 행 번호 출력
-b: 행 번호 출력(빈 행 제외)

> : 표준 출력 (덮어쓰기)
>> : 내용 추가
< : 표준 입력

cat 명령어 응용

  1. cat > china (china 이름의 파일 생성)
  2. cat japan > japan1 (japan의 내용을 japan1에 덮어쓰기)
  3. cat korea >> japan (korea의 내용을 japan 내용에 추가)

04-1. 페이지 단위 파일 내용 출력

#more [파일명]
#less [파일명]

04-2. 페이지 부분 내용 출력

#head [옵션] [파일]

ex)
head -5 passwd1
head +10 passwd1
#tail [옵션] [파일]

ex)
tail -5 passwd1
tail -f passwd1

05. 파일 내용 세기

#wc [옵션] [파일명]

<옵션>
-l: 라인 수
-w: 단어 수
-c: 문자 수

wc 실습 결과

  1. (라인 / 단어 / 문자 수)
  2. 라인 수
  3. 단어 수
  4. 문자 수

06. 파일 자르기

#split -l 10 passwd     
=> 생성 파일 알파벳

#split -l 10 -d passwd  
=> 생성 파일 숫자

#split -l 10 -d -a 4 passwd  
=> 생성 파일 4자리 숫자

#split -l 10 -d -a 4 passwd file.  
=>맨 앞의 x를 file.로 대체

# split -l 10 -d -a 4 --additional-suffix=.txt passwd file
=>맨 뒤의 확장자 느낌으로 문자 추가

<옵션>
-l: 행 수
-d: 파일명 숫자 지정
-a [n/숫자]: 확장자 자릿수 지정

split 실습 결과

  • (passwd 파일을 10줄씩 자르기 = 10*4+5 총 5개의 파일 생성)
  • (생성파일의 이름 숫자 형태로 지정)
  • (생성파일의 이름 숫자 4자리 형태로 지정)
  • (맨 앞글자 x를 file.으로 대체)
  • (맨 뒷글자 .txt 추가)

07. 파일 내용 비교(차이점)

#cmp [파일1][파일2]

#comm [옵션][파일1][파일2]

#diff [파일1][파일2]

파일 내용 비교 실습

  • cmp 명령어 (단순히 몇개가 다른지)
  • comm 명령어 (몇개가 다른지 알려주고 전체 보여줌)
  • diff 명령어 (다른 곳만 보여줌)

08. 파일 내용 자르고 출력

#cut [옵션] [파일]

<옵션>
-c [n/숫자]: n개의 글자 자르고 출력
-f [n/숫자]: n개의 필드 자르고 출력(tab으로 필드 구분)
-d [구분자]: 구분자를 기준으로 자르고 출력

-c 실습

  • 1글자까지 자르고 출력
  • 1-3, 2-5글자까지 자르고 출력

-f 실습

  • 1번째 필드, 2번째 필드 출력
  • 1~2번째 필드 출력
  • 1,3번째 필드 출력 / 1~3번째 필드 출력

-d 실습

  • passwd의 구분은 :로 되므로 구분자를 :로 주어 필드 출력

09. 파일 내용 출력

#awk -F ',' '{print $1 $3}' file1 ===> 콤마로 구분된 첫번째, 세번째 필드 출력
#awk -F ',' '{print $NF}' file1 ===> 맨 마지막 필드 출력
#awk -F ',' '{print $(NF-1)}' file1 ===> 맨 뒤에서 두번째 필드 출력
  • ', '로 구분된 1번째, 3번째 필드 출력
  • ':'로 구분된 마지막 필드 출력
  • ':'로 구분된 뒤에서 두번째 필드 출력

10. 파일 링크 생성

  • 바로가기 기능 (디렉터리 깊숙히 들어가서 찾을수 있는 파일에 대한...)
  1. 심볼릭 링크
    a. 파일/디렉터리 모두 가능
    b. 모든 사용자에 대한 읽기/쓰기/실행 권한 자동부여 O
    c. 링크 수가 증가하지 않는다.
    d. 원본파일이 존재해야 사용 가능
    e. i-node 번호가 다름

  2. 하드 링크
    a. 파일만 가능
    b. 권한 자동부여 X
    c. 링크 수가 증가함
    d. 원본파일이 존재하지 않아도 사용 가능
    e. i-node 번호 같음

#ln [옵션] [원본파일/디렉터리] [생성할 링크 파일]

ex)
ln -s passwd passwd1

심볼릭 링크 실습

  • file1에 대해 file7이란 심볼릭 링크 생성
  • file1과 file7의 내용은 같다.
  • 원본파일인 file1이 삭제가 된다면 file7은 실행되지않음

하드 링크 실습

  • hardfile1에 대한 hardfile7이란 하드 링크 생성
  • 내용 또한 같다.
  • 원본파일인 hardfile1이 삭제가 되어도 hardfile7은 그대로 실행된다.

미션

  1. /home/dir1/file1 파일을 찾아서 자세히 출력하는 명령어
    cat /home/dir1/file1

  2. passwd 이름의 파일만 찾는 명령어
    find / -type f -name passwd

  3. 2일 이전에 수정한 파일만 출력하는 명령어
    find / -mtime +1

  4. /home/dir1/file2 파일을 찾아서 삭제하는 명령어
    rm -rf /home/dir1/file2

  5. 편집 모드로 진입하는 명령어(모두)
    vi / vi (생성할 파일명) / vi (편집할 존재 파일명)

  6. 편집모드에서 실행 모드로 진입하기 위한 과정(키 입력순)
    esc -> :

  7. 파일을 편집 후 강제로 저장하고 나가는 명령어 완성
    :q!

  8. 현재 커서에서 10줄을 복사/붙여넣기 하는 명령어 완성
    (실행 모드) 10yy, p

  9. 현재 커서에서 5줄을 삭제한 후 되돌리기하는 명령어 완성
    (실행 모드) 5dd, u

  10. test라는 단어 삭제 명령어 완성
    :%s/test//g

  11. 파일 편집 후 행 번호 붙이는 명령어 완성
    :set number

  12. root 사용자가 사용하는 vi 편집기의 환경 설정 파일의 경로와 파일명 쓰기
    /root/.exrc

  13. 3번째 행에서 10번째 행의 unix 단어를 linux로 치환하는 명령어
    :3,10s/unix/linux/g

  14. 편집모드에서의 상하좌우 이동키
    kjhl

  15. 한 번에 100번째 행으로 이동하는 명령어
    100G

  16. cat 명령어로 file1 파일을 출력할 때 빈행을 제외하고 행 번호를 출력하는 명령어
    cat -b file1

  17. file1 파일의 내용을 file2 파일에 추가하는 명령어
    cat file1>>file2

  18. cat 명령어로 'linux, unix'라는 내용을 작성하고 file3.txt로 저장하는 명령어/과정
    cat > file3.txt
    linux, unix
    컨트롤+d

  19. file5 파일을 10줄씩 분할하여 저장하는 명령어
    split -l 10 file5

  20. 파일의 내용을 비교하는 명령어(3개)
    cmp, comm, diff

  21. 파일 내용을 페이지 단위로 출력하는 명령어(2개)
    more less

  22. 파일의 내용을 부분 출력하는 명령어(2개)
    head tail

  23. 기본적으로 /etc/passwd 파일의 행, 단위, 문자 수는 각각 얼마?
    45, 92, 2383

  24. cut 명령어로 두번째 문자, 다섯번째 문자를 출력하는 명령어 (passwd)
    cut -c 2,5 passwd

  25. cut 명령어로 두번째 필드, 다섯번째 필드를 출력하는 명령어 (passwd, 구분자',')
    cut -f 2,5 -d , passwd

  26. awk 명령어로 /etc/passwd 파일의 두번째, 다섯번째 필드를 출력하는 명령어(구분자 :)
    awk -F ':' '{print $2 $5}' /etc/passwd

  27. awk 명령어로 맨 마지막 필드를 출력하는 명령어(passwd)
    awk -F ':' '{print $NF}' passwd

  28. file7 파일을 file8 파일로 심볼릭 링크하는 명령어
    ln -s file7 file8

  29. 심볼릭 링크와 하드링크의 차이점 상세 설명
    원본 파일 삭제 후 링크 파일 실행 유무(O,x) / 파/디 아니면 파일만 / 사용자에 대한 권한 자동 부여 유무(O,X)

profile
처음 시작하는 사람

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

소중한 정보 감사드립니다!

답글 달기

관련 채용 정보