Linux

파일 다루기

곽수진 2021. 10. 5. 16:58
반응형

cat

: 파일의 내용을 화면에 연속적으로 출력

 

cat [옵션] 파일명

 

cat 명령어 출력 모습

 

★ -n 옵션 ★

: 행 번호를 같이 출력함

→ 행 번호는 화면에만 보이고 파일에 저장되지는 않음

 

cat -n 명령어 출력 모습

 

 

more

: 화면 단위로 파일 내용을 출력함

 

more [옵션] 파일명

 

more 명령어 출력 모습

 

출력할 내용이 더 있으면 --%로 알려줌

 

space bar 키 : 다음 화면 출력

Enter 키 : 행 단위로 스크롤

/문자열 : 해당 문자열 찾기

q : more 명령 중지

b : 이전 페이지

 

 

head

파일의 첫 10행 출력

 

head [옵션] 파일명

 

head 명령어 출력 모습

 

★ 숫자 옵션 ★

 

head -[출력할 행 숫자]  파일명

 

 

head -숫자 명령어 출력 모습

→ 파일의 앞부분 5행을 출력한 모습

 

 

tail

파일의 마지막 10행 출력

 

tail [옵션] 파일명

 

tail 명령어 출력 모습

 

★ 숫자 옵션 ★

 

tail -[출력할 행 숫자]  파일명

 

tail -숫자 명령어 출력 모습

→ 파일의 뒷부분 5행을 출력한 모습

 

 

★ -f 옵션 ★

: 파일 출력이 종료되지 않고 대기 상태가 되며, 파일 내용이 주기적으로 반복 출력

  → 파일의 뒷부분에 내용이 추가되면 그 내용이 자동으로 출력되므로 파일의 내용 변화를 확인할 때 사용하면 편리함

 

tail -f 명령어 출력 모습

→ 무한히 반복되기 때문에 ctrl+c로 명령을 종료시켜야 함

 

 

wc(word count)

파일에 저장된 줄, 단어, 문자의 개수 출력

→ 파일을 지정하지 않으면 표준입력 내용을 대상으로 함

 

wc [옵션] 파일명

-l : 줄 수

-w : 단어 수

-c : 문자 수

 

wc 명령어 출력 모습

612줄, 2669 단어, 19605개의 문자로 이루어져 있음

 

 

cp

파일이나 디렉토리를 복사

 

cp [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2

-i : 대화식 복사 방법으로 파일명2가 기존에 존재할 경우 덮어쓸 것인지 물어봄

-r : 디렉토리를 복사할 때 지정

 

Ex.

cp file1 file2

▶ file1을 file2로 복사

 

 

cp f1 f2 f3 dir1

▶ f1, f2, f3를 dir1 밑에 같은 이름으로 복사

 

 

cp -r dir1 dir2

▶ dir1을 dir2로 복사

   → dir1의 파일도 모두 복사

 

 

  • 파일 → 파일 복사

첫 번째 인자, 두 번째 인자 모두 파일명으로 지정

→ 두 번째 인자에서 지정한 파일명이 존재하지 않는 파일인 경우 새로 생성

이미 존재하는 파일명을 지정하면 원래의 내용은 사라지고 복사된 내용만 남게 됨

 

cp 명령어 출력 모습

 

cp 명령어 출력 모습

→ text1과 같은 내용을 갖는 새로운 파일 text2가 생성

 

 

  • 파일 → 디렉토리 복사

첫 번째 인자는 파일명, 두 번째 인자는 디렉토리명으로 지정

 

cp 명령어 출력 모습

→ /etc 디렉토리에 있는 hosts 파일을 현재 디렉토리(.) 아래에 같은 이름으로 복사

 

cp 명령어 출력 모습

→ 현재 디렉토리가 아닌 다른 디렉토리로 복사하기 위해 디렉토리 이름을 지정

    : hosts 파일을 temp 디렉토리에 복사

 

cp 명령어 출력 모습

→ 파일명을 바꿔서 디렉토리에 저장하기 위해 디렉토리명에 파일명도 함께 지정

    : hosts 파일을 temp 디렉토리에 hosts1이라는 파일명으로 저장

 

 

★ 쓰기 권한 오류 ★

 

오류 발생 모습

→ 파일을 디렉토리에 복사할 때는 디렉토리에 대해 쓰기 권한이 있어야 함

→ 권한이 없는 디렉토리에 파일을 복사하려고 하면 오류 발생

 

 

  • 여러 파일 → 디렉토리 복사

첫 번째 인자의 자리에 파일명을 여러개 지정

: 지정한 디렉토리로 파일들이 모두 복사

    → 마지막 인자는 반드시 디렉토리명이어야 함

 

cp 명령어 출력 모습

text1과 text2 두 개의 파일을 temp 디렉토리로 복사

 

 

  • -i 옵션

두 번째 인자에 저장한 파일명이 기존에 있는 파일일 경우 겹쳐서 복사할 것인지를 물어봄

'y'는 겹쳐서 복사, 'n'은 복사하지 않음을 의미

 

cp 명령어 출력 모습

 

 

  • -r 옵션

첫 번째 인자는 디렉토리 이름으로 지정

 

오류 발생 모습

temp 디렉토리를 tmp 디렉토리로 복사할 때 -r 옵션을 지정하지 않으면 오류 발생

 

→ 디렉토리를 복사하면 디렉토리 내에 있던 파일이나 하위 디렉토리 모두 복사

    : 두 번째 인자인 tmp 디렉토리가 원래 없었기 때문에 원본 디렉토리와 같은 위치에 tmp 디렉토리가 새로 생성

 

→ 두 번째 인자가 기존에 있던 디렉토리라면 원본 디렉토리는 두 번째 인자로 저장된 디렉토리 아래에 같은 이름으로 복사

    : 현재 존재하는 tmp 디렉토리를 두 번째 인자로 지정하면 temp 디렉토리가 tmp 디렉토리 아래에 하위 디렉토리로 복사

 

 

rm

파일과 디렉토리 삭제

 

rm [옵션] 파일명 / 디렉토리명 ...

-i : 대화식으로 지정한 파일을 정말 삭제할 것인지 확인

-r : 디렉토리를 삭제할 때 지정

→ -f: 무조건 삭제

 

★ 옵션 지정 주의 ★

-i 옵션을 지정하지 않으면 삭제할 것인지 확인하지 않음

'휴지통'에 저장되는 윈도우와 달리, 유닉스에서 삭제된 파일은 복구할 수 없음

 

 

Ex.

rm file

▶ 'file'명을 가진 파일을 삭제함

 

 

rm -r dir

▶ 'dir'명을 가진 디렉토리를 삭제함

 

 

  • 디렉토리 삭제

 

→ 디렉토리를 -r 옵션 없이 삭제하려고 하면 위와 같은 오류가 발생

 

 

→ rmdir 명령과는 달리, 지정한 디렉토리가 비어 있는지 여부와 상관없이 디렉토리와 그 아래 모든 파일을 삭제함

 

 

rmdir 명령디렉토리가 비어 있는 경우에만 삭제할 수 있음

    : temp 디렉토리 아래에는 'hosts', 'hosts1', 'text1', 'text2' 파일들이 존재하므로 디렉토리가 삭제되지 않음

 

 

  • -i 옵션

파일을 정말 삭제할 것인지를 물어봄

'y'를 대답하면 삭제하고 'n'을 대답하면 삭제하지 않음

 

'y'로 대답해 'text1' 파일이 삭제됨

 

 

mv

파일의 이름을 바꾸거나 다른 디렉토리로 이동

 

mv [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2

-i : 파일명2/디렉토리명2가 존재하면 덮어쓸 것인지 물어봄 ( 확인 후 이동함 )

 

 

Ex.

mv file1 file2

▶ file1의 이름을 file2로 바꿈

 

 

mv file1 dir1

▶ file1을 dir1로 옮김

 

 

mv file1 file2 file3 dir1

▶ file1, file2, file3을 dir1로 옮김

 

 

  • 파일 → 파일 이동

첫 번째 인자 두 번째 인자를 모두 파일명으로 지정

첫 번째 인자로 지정한 파일두 번째 지정한 파일로 이동

첫 번째 인자로 지정한 파일의 이름이 두 번째 지정한 파일의 이름으로 변경

두 번째 인자로 이미 존재하는 파일명을 지정하면 첫 번째 파일이 덮어써서 원래 내용은 없어지고 새로운 내용만 남게 됨

 

hosts1 파일을 hosts 파일로 복사

 

 

  • 파일 → 디렉토리 이동

두 번째 인자로 디렉토리를 지정할 경우 파일을 다른 디렉토리로 이동시킴

 

→ text2 파일을 temp 디렉토리로 이동

 

 

두 번째 인자에서 디렉토리명과 파일명을 한꺼번에 지정하면 지정한 디렉토리로 파일명을 바꿔 이동

    : 'hosts1' 파일을 이름을 'data1'로 변경 후 temp 디렉토리로 이동

 

 

★ 쓰기 권한 오류 ★

 

→ 파일을 디렉토리에 이동할 때는 디렉토리에 대해 쓰기 권한이 있어야 함

→ 권한이 없는 디렉토리에 파일을 이동하려고 하면 오류 발생

    : cp 명령어와 동일함

 

 

  • 여러 파일 → 디렉토리 이동

첫 번째 인자의 자리파일명을 여러 개 지정하면 두 번째 인자는 반드시 디렉토리가 되어야 함

→ 마지막에 지정한 디렉토리로 파일들이 모두 이동

 

→ hosts2 파일과 hosts3 파일을 temp 디렉토리로 이동

 

 

이동 후 홈 디렉토리에 hosts2 파일과 hosts3 파일 존재하지 않음 확인

 

 

  • -i 옵션

두 번째 인자에 지정한 파일명이 기존에 있는 파일일 경우 덮어쓸 것인지 물어봄

→ 'y'를 대답하면 덮어쓰고 'n'을 대답하면 덮어쓰지 않음

 

덮어쓰지 않음

 

 

  • 디렉토리 → 디렉토리 이동

두 인자를 모두 디렉토리명으로 지정하면 첫 번째 인자인 디렉토리가 두 번째 인자 디렉토리로 이동

→ 두 번째 인자가 새로운 이름이면 첫 번째 디렉토리의 이름이 새 이름으로 변경됨

 

→ tmp2 디렉토리를 tmp 디렉토리로 이동

 

 

→ tmp2 디렉토리가 tmp 디렉토리로 이동된 모습 확인

 

 

→ tmp3 디렉토리가 존재하지 않아 tmp2를 tmp3로 이름 변경

 

 

ln

기존의 파일에 새로운 이름을 붙임

→ 하드 링크 파일(원본 파일)이나 심볼릭 링크 파일(원본을 가리키는 특수한 파일)을 만들 때 사용

 

ln [옵션] 원본 파일명 링크 파일명

 

 

Ex.

ln test lntest

▶ 기존에 있는 test 파일에 lntest라는 새로운 이름을 붙임

 

 

ln -s test lntest

▶ test

 

 

  • 하드 링크

유닉스에서는 하나의 파일에 둘 이상의 다른 이름을 붙일 수 있음

 파일에 붙인 이름 : 하드링크, 이름이 붙여진 파일 : 하드 링크 파일

 

→ "I love UNIX!"라는 내용이 담긴 ln.txt 파일을 생성

→ 하드 링크의 수는 1, 즉 파일 이름의 개수가 1개

→ ln.txt 파일에 ln.hd라는 새로운 이름을 붙임

→ 하드 링크의 수는 2, 즉 파일 이름의 개수가 2개로 바뀜

 

 

→ ln.txt 파일과 ln.hd 파일 모두 내용이 동일함

 

 

→ 각 파일의 정보를 저장하는 inode 일련번호를 확인했을 때도 두 파일이 동일한 파일임을 알 수 있음

 

 

→ ln.hd 파일의 기존 내용에 inode 일련번호가 더해진 내용을 추가함

→ ln.hd 파일의 내용을 변경해도 ln.txt 파일의 내용까지 변경

 

 

→ ln.txt 파일을 삭제해도 ln.hd 이름은 남아있지만, 하드 링크의 수는 1 감소

 

 

★ rm 명령어 ★

무조건 파일을 삭제하는 것이 아니라 파일의 하드 링크 수를 1 감소시켜 0이 되면 파일의 이름과 inode와 파일의 내용이 들어있는 블록을 삭제

→ 하드 링크 수가 0이 되지 않은 경우에는 파일의 이름만 디렉토리에서 삭제

 

 

  • 심볼릭 링크

원본 파일에 쉽게 접근하기 위해 생성한 특수 파일로, 파일의 내용은 원본 파일의 경로

→ 링크 파일을 복사하거나 내용을 출력하면 모든 작업이 원본 파일에 대해 수행

→ 원본 파일이 삭제되면 심볼릭 링크 파일이 남아있어도 사용할 수 없음

 

  • -s 옵션

→ ln.hd 파일에 대한 심볼릭 링크 파일 ln.sl 생성

→ 파일의 내용을 확인해보면 ln.sl 심볼릭 링크 파일이 생성되었음을 확인할 수 있음

    : l로 시작하는 심볼릭 링크

    : 하드 링크 수의 변화가 없음, 즉 이름 추가가 아님

    : 파일 이름 뒤에 원본 파일의 이름이 표시됨 ( 원본 파일의 이름 : ln.hd )

inode 일련번호를 확인해보면 두 파일이 다른 것을 확인할 수 있음

 

 

 심볼릭 파일을 수정하면 원본이 수정

    : 심볼릭 파일에 pwd 내용을 추가함

    : 원본인 ln.hd를 출력해보면 내용이 변경된 것을 확인해볼 수 있음

 

 

원본을 삭제하면 심볼릭 링크 파일 사용 불가능

 

 

★ 복사 & 심볼릭 링크 차이 ★

 

cp 명령 : 원본과 복사본이 별개의 파일

             → 하나의 파일을 수정해도 다른 파일에 영향을 주지 않음

              같은 파일을 별도로 수정해 작업할 때 사용함

 

심볼릭 링크 파일 ( ln -s ) : 원본 파일의 경로 파일

                                    원본 파일을 수정하면 나머지 파일도 같이 수정됨

                                     파일을 공동으로 관리하거나 긴 이름을 간단히 줄여 편리하게 사용

 

 

touch

빈 파일을 생성하거나 파일 관련 시각을 변경

: 인자로 주어진 파일이 존재하지 않으면 내용이 없는 빈 파일 생성

: 파일이 존재하면 현재 시각 또는 옵션에 지정한 시각으로 파일의 관련 시각을 변경

 

touch [ -acm] [ -r ref_file | -t time ] 파일

 

 

  • 파일 생성

 

test 파일이 존재하지 않음을 확인

 

 

→ touch 명령어를 통해 새로운 파일 생성

    : 파일의 크기는 0으로 아무 내용도 없이 파일 정보만 존재

 

 

→ 한 번에 여러 파일 생성도 가능함

 

 

  • 파일 접근 및 수정 시각 변경

      : 인자로 지정한 파일이 존재하면 해당 파일의 접근 및 수정 시각을 변경함

 

  • 현재 시각으로 변경하기

옵션 없이 touch 명령어를 사용하면 현재 시각으로 변경

 

 

  • -t : 지정한 시각으로 변경하기 
[[CC]YY]MMDDhhmm[.ss]

CC : 연도의 첫 두 자리

YY : 연도의 마지막 두 자리

MM : 달(01 ~ 12 범위내 지정)

DD : 날짜(01~31 범위내 지정)

hh : 시각(00~23 범위내 지정)

mm : 분(00~59 범위내 지정)

ss : 초(00~59 범위내 지정)

 

 

★ CC 지정하지 않았을 경우, YY 값에 따라 자동으로 인식 ★

 

YY CC
69 ~ 99 19
00 ~ 38 20
39 ~ 68 ERROR

 

 

→ test의 시간을 7월 26일 오후 4시 41분으로 변경

 

 

test의 시간을 05년 1월 1일 00시 00분으로 변경

    : 연도의 마지막 두 자리만 지정하면 위 표 규칙에 의해 앞 두자리가 지정

 

 

test의 시간을 2010년 1월 2일 00시 00분으로 변경

    : 연도 네 자리를 모두 지정할 수 있음

 

 

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

t1 파일의 시간을 기준으로 test 파일의 시간을 변경함

 

 

  • -m, -a : 수정, 접근 시간 선택 변경

 touch 명령으로 수정 시각만 변경하는 경우는 -m, 접근 시각만 변경하는 경우는 -a 옵션을 사용

 

ls -l의 결과로 보이는 시각은 파일 최종 수정 시각

    : -a 옵션으로 접근 시각만을 변경하면 ls -l로는 결과 확인 불가능

-u 옵션을 사용하면 접근 시각을 볼 수 있음

반응형

'Linux' 카테고리의 다른 글

디렉토리 명령어  (0) 2021.09.21
경로명(상대경로 / 절대경로)  (0) 2021.09.20
디렉토리(Directory)  (0) 2021.09.20
유닉스 파일 시스템  (0) 2021.09.19
유닉스 기본 명령어  (0) 2021.09.19