본문 바로가기

개발중/Linux

유닉스의 파일 조작하기2

728x90
반응형
  • 파일 링크

    • 기존 파일에 새로운 파일명을 붙이는 것
  • 하드 링크

    • 원본 파일에 붙인 새로운 이름
    • 원본과 동일한 inode 번호를 가짐
  • 심볼릭 링크

    • 윈도우 바로가기 아이콘처럼 기존 파일을 가리키는 새로운 이름
    • 원본과 다른 새로운 inode 번호를 가짐

하드 링크: 원본과 동일한 inode를 가짐

  • 하드 링크 파일 생성하기 전에 현재 디렉토리 목록을 본다.
    • 디렉토리의 경우 ln 명령어를 사용할 수 없으므로 파일의 속성까지 포함한 목록을 확인한다.
  • 디렉토리 파일을 ln 명령어를 이용하여 하드 링크를 만들고자 한 경우
    • text.txt 파일의 하드 링크를 lntext.txt로 생성
    • 파일의 속성 리스트 확인
    • cmp_test 파일의 하드 링크를 lncmo_test로 생성
  • 기존 파일과 생성된 하드 링크 파일의 내용을 비교
    • 두 파일의 내용을 행 단위로 비교할 때 사용
comm [옵션] 파일명1 파일명2

 -1: 두 대를 비교하되 파일명 1에만 있는 것은 출력하지 않음
 -2: 두 개를 비교하되 파일명 2에만 있는 것은 출력하지 않음
 -3: 두 개를 비교하여 파일명1과 파일명2에 모두 존재하는 것은 출력하지 않음

 

  • 파일 ⇒ 파일명 + inode + 테이블 블록
  • 하드링크: 파일명과 inode 사이의 연결 정보

 

  • 하드 링크 파일을 생성한 기존 파일의 내용을 수정해 보자.
    • cmp_text 파일의 내용을 확인
    • lncmo_text 파일의 내용을 확인
    • ls -i를 이용하여 각 파일의 inode를 확인

 

  • -i
    • -node 값을 볼 수 있는 명령어
  • 하드 링크 파일을 생성한 기존 파일의 내용을 수정해 보자.
    • “ls –I”명령을 수행한 결과를 lncmp_text 파일에 추가
    • lncmp_text 의 원본 파일인 cmp_text 파일의 내용을 확인

 

  • 하드 링크를 삭제하여 기존 파일과 하드링크 사이의 변화 관계를 알아보자.
    • text.txt 파일의 하드 링크인 Intext.txt 파일을 삭제
    • ls -l를 이용하여 각 파일의 상세 정보를 확인

 

 

  • 원본 파일과 하드 링크 모두 파일의 동일한 inode 번호와 연결되어 있으므로,
  • 원본과 하드링크 중 남은 이름을 이용하여 파일을 조작하는 것이 가능하다

 

심볼릭 링크: 원본과 다른 새로운 inode를 가짐

  • “ls –I” 수행 결과를 test라는 파일로 저장
  • test의 내용을 확인
  • 현재 존재하는 파일들의 속성 목록 확인
  • test 파일의 심볼릭 링크를 slntest라는 이름으로 생성

 

 

  • 현재 존재하는 파일들의 속성 목록 확인
    • 하드 링크와는 다르게 심볼릭 링크 파일 옆에 ->라는 표시와 함께 원본 파일명이 표시되는 것을 확인

 

  • 또 다른 심볼릭 링크를 생성해 보자

 

  • 심볼릭 링크 slntext.txt 파일의 연결 파일을 삭제해 보자

 

  • 심볼릭 링크는 디렉토리를 가리키기 위한 새로운 이름 생성이 가능

 

 

  • 원본 파일 삭제 시
    • 하드링크를 새로운 이름을 이용하여 파일을 조작할 수 있음
    • 심볼릭 링크는 불가능 ( 새로운 i-node를 할당 받기 위해 )

 

파일이름 및 수정 시간 변경

  • a: 접근 시각만 변경
  • c: 지정된 파일이 없는 경우 새로 생성하지 않음
  • m: 수정 시각만 변경
    • -r re_file: 시각을 파일에서 읽음
    • -t [[CC]YY]MMDDhhmm[.ss]: 시각을 직접 입력

 

파일 생성

  • 지정한 파일이 존재하지 않으면 내용이 없는 빈 파일 생성

 

 

파일 수정 시간 변경

  • -t [[CC]YY]MMDDhhmm[.ss]: 변경할 시간 지정 가능(시간 표시)
  • CC   
    • 연도의 첫 두 자리
  • YY   
    • 연도의 마지막 두 자리
  • MM   
    • 달(01-12 범위에서 지정)
  • DD   
    • 날짜(01-31 범위에서 지정)
  • hh   
    • 시간(00-23 범위에서 지정)
  • mm   
    • 분(00-59 범위에서 지정)
  • ss     
    • 초(00-59 범위에서 지정)

 

 

  • CC 생략 시 연도 지정 방법
    • YY
      • 69~99 00~68
    • CC
      • 19 20
  •  CC 를 지정하지 않으면 YY값에 따라 CC를 자동으로 인식

 

파일이름및수정시각변경

  • 이미 있는 파일을 touch 명령으로 옵션 없이 사용하면 파일의 수정 시간이 현재 시간으로 변경해 보자.

 

  • touch 변경할 파일명
    • 현재 시간을 먼저 알아보자.

Date 명령을 수행한 결과를 보면 한글이 깨져서 나로는 것을 볼 수 있음 - 이 문제를 해결하기 위해서는 아래와 같은 방법을 이용

 

  • touch 명령어를 이용하여 test 파일의 수정 시간을 현재 시간으로 변경하자.

 

  • 연도를 지정하지 않고 월(12), 일(02), 시간(0900)만 지정하여 test 파일의 수정 시간을 변경

 

  • YYMMDD 만 설정한 경우

 

특정 파일 기준으로 변경하기: -r

  • test 파일의 접근, 수정 시간을 test2의 시간으로 변경

 


1. 파일 링크

  • 파일 링크란 기존 파일에 새로운 파일명을 붙이는 것을 말함
  • 하드 링크 만들기: ln
  • 심벌릭 링크 만들기: -s 옵션

2. 파일 이름 및 수정 시각 변경

  • 빈 파일 만들기, 수정 시간 변경하기: touch
  • 기능: 인자를 지정하지 않으면 빈 파일 생성
  • 형식: touch [-acm] [-r ref_file : -t time] [파일]
  • 옵션-a-m-t [[CC]YY]MMDDhhmm[.ss]

     

  •  

    접근 시간만 변경함
    수정 시간만 변경함
    시간을 직접 입력함
728x90
반응형

'개발중 > Linux' 카테고리의 다른 글

crontab 공부 기록  (0) 2021.07.15
root 권한  (0) 2020.12.27
LINUX GCC 구조체  (0) 2020.07.27
LINUX GCC ALGORISM 🔒  (0) 2020.07.26
LINUX GCC  (0) 2020.07.26