[유닉스] 파일 내용 보기


파일 내용 보기



cat (concatenate)

  • 파일 내용을 연속적으로 화면에 출력
  • 형식 : cat [옵션] 파일명…
  • 옵션
    • -n : 행번호를 붙여서 출력
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ksshin
......
$ cat –n /etc/hosts
1 127.0.0.1 localhost
2 127.0.1.1 ksshin
3 ......
$

cat의 다른 기능

  • 표준 입력으로부터 데이터를 입력받아 화면에 출력

    • 옵션이나 파일명 없이 cat 명령만 입력
    • 문자열 입력 후 엔터(Enter) 키를 치면 화면에 그대로 복사하여 보여줌
    • Ctrl + D를 입력하여 종료
$ cat
hello
hello
unix
unix
^D
$
  • 표준 입력 대신 파일에 있는 데이터를 화면에 출력

    • 리다이렉션 기호 “<” 사용
    • 첫 번째 cat 기능과 같이 “<” 생략하고 파일명만 사용
$ cat < file1
unix1
unix2
$ cat file1
unix1
unix2
$
  • 리다이렉션 기호 “>”를 사용하여 짧은 파일 작성

    • 내용을 모두 적은 후 Ctrl + D를 입력하여 종료
$ cat > testfile
unix
linux
test
^D
$
  • 리다이렉션 기호 “»” 사용하여 이미 존재하는 파일에 내용 추가
$ cat >> testfile
This is the end.
^D
$ cat testfile
unix
linux
test
This is the end.
$
  • cat을 이용하여 파일 복사
$ cat < testfile > newfile
$

more

  • 파일 내용을 화면 단위로 출력
  • 형식 : more [옵션] 파일명…
  • 옵션

    • +행 번호 : 출력을 시작할 행번호를 지정
  • 화면 단위로 내용을 출력한 뒤 ‘–More–(00%)’를 보여줌

    • 스페이스바(SpaceBar) : 다음 화면을 출력
    • 엔터(Enter) : 행 단위로 스크롤
    • /문자열 : 해당 문자열을 검색
    • q : more 명령 종료
$ more /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
......
--More--(38%)
  • 현재 디렉토리의 파일목록이 많아서 한 화면에서 볼 수 없을 때 ls와 more를 파이프로 연결해서 사용
$ ls /etc | more
acpi
adduser.conf
alternatives
......
--More--

tail

  • 파일의 뒷부분 몇 행을 출력
  • 형식 : tail [옵션] 파일명
  • 옵션

    • -n +행번호 : 지정한 행부터 끝까지 출력
    • -숫자 : 화면에 출력할 행의 수를 지정 (기본값은 10)
    • -f : 파일 출력이 종료되지 않고, 주기적으로 계속 출력
  • “-숫자” 옵션을 이용한 출력

    • 파일 뒷부분 5행 출력
$ tail –5 etc_files
X11
xdg
xml
xul-ext
zsh_command_not_found
$
  • “-n +행번호“ 옵션을 이용한 출력

    • 210번 라인부터 끝까지 출력
$ tail –n +210 etc_files
systemd
terminfo
......
X11
xdg
xml
xul-ext
zsh_command_not_found
$
  • -f 옵션을 이용한 출력

    • 파일 출력이 종료되지 않고 대기 상태가 됨
    • 파일 내용 주기적으로 반복 출력
    • 파일 뒷부분에 내용 추가되면 자동 출력하므로 파일의 내용 변화를 확인할 때 사용하면 편리
    • 무한 반복되므로 ^C(Ctrl + C)키로 명령 종료
$ tail –f etc_files
vim
vtrgb
wgetrc
wodim.conf
wpa_supplicant
X11
xdg
xml
xul-ext
zsh_command_not_found
  • 파일의 앞부분 몇 행을 출력
  • 형식 : head [옵션] 파일명
  • 옵션 :

    • -숫자 : 화면에 출력할 행의 수를 지정 (기본값은 10)
$ ls /etc > etc_files
$ head etc_files
acpi
adduser.conf
anacrontab
apg.conf
apm
apparmor
apparmor.d
apport
apt
$

wc (word count)

  • 파일에 저장된 라인, 단어, 문자의 개수를 세어서 출력
  • 형식 : wc [옵션] 파일명
  • 옵션

    • -c : 바이트 수 출력
    • -m : 문자 수
    • -l : 라인 수 출력
    • -w : 단어 수 출력
    • -c : 문자(바이트) 수 출력
$ wc etc_files
226 226 2171 etc_files
$   
  • 파일이 영어로만 되어 있으면, 바이트 수와 문자 수가 같고, 한글이 포함되어 있으면 바이트 수와 문자 수가 다름


파일 내용 보기



###cmp 명령

  • 두 파일의 내용 비교 후 결과 출력
  • diff 명령의 간단한 버전
  • 두 파일의 내용이 다른 부분에 대해 첫 번째 위치와 행번호를 보여줌

    • 첫 번째 라인 6번째 바이트부터 다르다는 의미
$ cat > compare1
This is a test file.
^D
$ cat > compare2
This si a test file.
^D
$ cmp compare1 compare2
compare1 compare2 differ: byte 6, line 1
$

comm 명령

  • 행별로 정렬된 파일 비교
  • 대상 파일이 미리 정렬되어 있어야 함
    • 첫 번째 파일에만 있는 행들이 첫 번째 열(column)에 표시됨
    • 두 번째 파일에만 있는 행들이 두 번째 열에 표시됨
    • 두 파일에 모두 있는 행들이 세 번째 열에 표시됨
$ cat > file1
line 1
line 2
line 3
^D
$ cat > file2
line 1
line 3
line 4
^D
$ comm file1 file2
line 1
line 2
line 3
line 4
$

diff 명령

  • 매우 강력하고 유연한 파일 비교 유틸리티
  • 대상 파일들을 줄 단위로 차례차례 비교
  • 예제 파일 만들기
$ cat file1
line 1
line 2
line 4
$ cat file2
line 1
line 2
line 3
line 5
$
  • diff 명령
    • file1의 3 라인을 file2의 3, 4 라인으로 대체하면 두 파일은 같다는 의미
$ diff file1 file2
3c3,4
< line 4
------
> line 3
> line 5
$
  • diff 명령 결과의 의미

    • n1 a n3, n4 : 첫 번째 파일의 n1 라인 이후에 두 번째 파일의 n3부터 n4까지의 라인들을 추가하면 두 파일은 서로 같다.
    • n1, n2 d n3 : 첫 번째 파일의 n1부터 n2까지의 라인을 삭제하면 두 번째 파일의 n3 이후와 서로 같다.
    • n1, n2 c n3, n4 : 첫 번째 파일의 n1부터 n2까지의 라인을 두 번째 파일의 n3부터 n4까지의 라인으로 대체하면 두 파일은 서로 같다.