본문 바로가기

CentOS/Study

[Study28]파일 관리를 위한 3가지 필수 Linux 명령 - diff / sort / file

반응형

diff 명령어

diff 명령어는 두 개 이상의 파일을 비교하는 데 사용됩니다. diff 명령어를 사용하면 파일의 내용과 구조를 분석하여 두 파일 간의 차이점을 출력할 수 있습니다. 이 명령어는 파일로만 작동하지 않고 디렉토리도 비교할 수 있습니다.

diff 명령어는 파일의 변경 사항을 비교하기 위해 일반적으로 사용됩니다. 예를 들어, 프로그래머는 코드의 이전 버전과 새 버전을 비교함으로써 변경 내용을 알 수 있습니다. 또한, 시스템 관리자는 구성 파일의 이전 버전과 새 버전을 비교하여 변경 사항을 확인할 수 있습니다.

 

[명령어 형식]

# diff file1 file2/* 두 개의 파일에 대한 간단한 차이점 확인 */
# diff -c file1 file2 /* 두 개의 파일에 대한 자세한 차이점 확인 */
# diff -i file1 file2 /* -i : 대소문자를 구분하지 않습니다. A와 a는 같은 것으로 간주합니다. */

diff 명령어는 앞서 언급한 바와 같이 파일을 비교할 수 있습니다. 두 파일 간의 차이점을 비교하면서, diff 명령어는 다음과 같은 세 가지 출력 형식 중 하나를 사용합니다.

  • Unified format (-u): 변경된 내용의 전후 내용을 모두 출력합니다.
  • Context format (-c): 변경된 내용의 전후 내용을 일부 출력하고, 변경된 부분만 자세히 출력합니다. 이 형식은 기본 출력 형식입니다.
  • Normal format (-n): 변경된 내용만 출력합니다.

diff 명령어는 cmp 명령어와 다르게 파일의 틀린 부분을 좌우로 표시해줍니다.

 

옵션 설명
-brief 두 파일의 내용이 같은지 다른지 알아봅니다.
-c 파일의 이름, 날짜 등 파일의 차이점을 상세히 출력합니다.
-d 두 디렉토리간의 차이점 출력합니다.
-H 용량이 큰 파일 비교 시 속도를 빠르게 비교합니다.
-i 대소문자를 구분하지 않습니다. A와 a는 같은 것으로 간주합니다.
-r -recursive 두 디렉토리를 비교할 때, 모든 서브디렉토리는 재귀적으로(recursively) 비교합니다.

 

diff 명령어를 사용하려면, 비교할 파일 또는 디렉토리를 준비해야 합니다. 이 때, 두 파일 또는 디렉토리 모두 원하는 결과를 얻기 위해 준비되어야 합니다. diff 명령어는 이렇게 준비된 파일들을 비교하며, 두 파일 간의 차이점을 보여줍니다. 이를 통해 사용자들은 파일의 변경 부분만을 효과적으로 확인할 수 있습니다. 따라서, diff 명령어는 프로그래머나 개발자들이 소스 코드를 비교하고, 변경 내용을 추적하는 데 유용하게 사용됩니다.

# cd /test 
# cat > file1
11111
22222
33333
<Ctrl + D>
# cat > file2
11111
22222
33333
<Ctrl + D>
# cat > file3
11111
22222
44444
<Ctrl + D>

이 명령어는 /test 디렉토리에서 실행되며, 총 3개의 파일을 생성합니다. 각 파일은 cat 명령어를 사용하여 파일 내용을 입력합니다.

먼저 file1을 생성하고, 11111, 22222, 33333 내용을 입력합니다. 그리고 file2를 생성하고, 11111, 22222, 33333 내용을 입력합니다. 마지막으로 file3을 생성하고, 11111, 22222, 44444 내용을 입력합니다.

이렇게 생성된 파일들은 이후에 diff 명령어 등을 이용하여 파일 내용을 비교하거나, 파일 변경 이력을 확인하는 등의 용도로 사용될 수 있습니다.

 

파일 비교

먼저 /test 디렉토리에서 실행되며, 총 3개의 파일을 생성합니다. 각 파일은 cat 명령어를 사용하여 파일 내용을 입력합니다.

먼저 file1을 생성하고, 11111, 22222, 33333 내용을 입력합니다. 그리고 file2를 생성하고, 11111, 22222, 33333 내용을 입력합니다. 마지막으로 file3을 생성하고, 11111, 22222, 44444 내용을 입력합니다.

# cd /test
# cat > file1
11111
22222
33333
<Ctrl + D>
# cat > file2
11111
22222
33333
<Ctrl + D>
# cat > file3
11111
22222
44444
<Ctrl + D>

diff 명령어를 이용하여 파일을 비교합니다. file1과 file2를 비교한 결과, 두 파일은 동일합니다. file1과 file3를 비교한 결과, 3번째 라인이 다릅니다.

# diff file1 file2
# diff file1 file3

3c3
< 33333
---
> 44444

diff 명령어를 -c 옵션을 사용하여 출력합니다.

# diff -c file1 file3

*** cmpfile1    Wed Jan 27 00:54:39 2010
--- cmpfile3    Wed Jan 27 00:55:05 2010
***************
*** 1,3 ****
  11111
  22222
! 33333
--- 1,3 ----
  11111
  22222
! 44444

 

대소문자 구별 없이 파일 비교

먼저 /test 디렉토리에서 실행되며, dir1과 dir2 디렉토리를 생성합니다. 그리고 각 디렉토리에 file1을 생성합니다. file1의 내용은 dir1은 "1111"이고, dir2는 "2222"입니다.

# cd /test
# rm -rf /test/*

# mkdir dir1
# echo "1111" > dir1/file1
# mkdir dir2
# echo "2222" > dir2/file1

diff 명령어를 이용하여 두 디렉토리를 비교합니다.

# diff --recursive dir1 dir2
diff --recursive dir1/file1 dir2/file1

1c1
< 1111
---
> 2222

두 디렉토리를 비교할 때, -r 옵션을 사용하여 재귀적으로 비교할 수 있습니다. 또한, Only in dir2: file2와 같이 출력되는 경우 두 디렉토리에서 파일이 다르다는 것을 의미합니다.

# echo "1111" >  dir2/file1
# touch dir2/file2
# diff --recursive dir1 dir2

Only in dir2: file2

 

디렉토리 비교시

디렉토리를 비교할 때, -r 옵션을 사용하여 재귀적으로 비교할 수 있습니다. 또한, Only in dir2: file2와 같이 출력되는 경우 두 디렉토리에서 파일이 다르다는 것을 의미합니다.

먼저 /test 디렉토리에서 실행되며, dir1과 dir2 디렉토리를 생성합니다. 그리고 각 디렉토리에 file1을 생성합니다. file1의 내용은 dir1은 "1111"이고, dir2는 "2222"입니다.

# cd /test
# rm -rf /test/*

# mkdir dir1
# echo "1111" > dir1/file1
# mkdir dir2
# echo "2222" > dir2/file1

diff 명령어를 이용하여 두 디렉토리를 비교합니다.

# diff --recursive dir1 dir2
diff --recursive dir1/file1 dir2/file1

1c1
< 1111
---
> 2222

두 디렉토리를 비교할 때, -r 옵션을 사용하여 재귀적으로 비교할 수 있습니다. 또한, Only in dir2: file2와 같이 출력되는 경우 두 디렉토리에서 파일이 다르다는 것을 의미합니다.

# echo "1111" >  dir2/file1   <----- '2222 -> 1111' 변경
# touch dir2/file2
# diff --recursive dir1 dir2 두 디렉토리를 비교할 때 사용한다
Only in dir2: file2

 

파일 비교

파일을 비교하기 위해서는 diff 명령어를 사용합니다. 파일 비교를 위한 명령어이기 때문에, 두 개의 파일을 비교하는 것이 주요한 목적입니다.

예를 들어, 원본 파일과 백업 파일이 있는 경우, 두 파일이 동일한지를 확인하기 위해 diff 명령어를 사용할 수 있습니다.

diff 명령어를 사용하여 파일을 비교하는 가장 기본적인 방법은 다음과 같습니다.

# diff file1 file2

위의 명령어는 file1과 file2를 비교한 결과를 출력합니다. 만약 두 파일이 동일하다면, 아무런 출력도 나타나지 않습니다. 그러나 두 파일이 다르다면, 다음과 같은 출력이 나타납니다.

3c3
< 33333
---
> 44444

위의 출력은 두 파일에서 3번째 라인이 다르다는 것을 나타냅니다. '<' 기호는 첫 번째 파일에서 나타난 내용을, '>' 기호는 두 번째 파일에서 나타난 내용을 나타냅니다.

또 다른 예시로, httpd.conf 파일을 수정하는 경우를 살펴보겠습니다. httpd.conf 파일의 ServerName을 수정하기 위해서는 다음과 같은 명령어를 입력합니다.

# vi httpd.conf
/ServerName -> n
[수정전]
#ServerName www.example.com:80
[수정후] [192.168.10.200 서버에서 작업]
ServerName 192.168.10.200:80
> 파일 저장

위의 명령어는 ServerName을 수정하고, 파일을 저장합니다. 그리고 다음과 같이 diff 명령어를 사용하여 원본 파일과 수정된 파일을 비교할 수 있습니다.

# diff httpd.conf httpd.conf.old

이를 통해 두 파일을 비교하면, 수정된 내용이 출력됩니다.

 

디렉토리 마이그레이션 작업

데이터의 이동을 위해 디렉토리를 마이그레이션하는 경우, diff 명령어를 사용하여 데이터 무결성을 검사할 수 있습니다.

디렉토리 내의 파일들의 자료 무결성을 검사하기 위해, diff 명령어와 디렉토리 전체 비교 옵션을 사용할 수 있습니다.

# diff --recursive /was1 /was2

위의 명령어는 /was1 디렉토리와 /was2 디렉토리를 비교하고, 두 디렉토리의 파일들의 자료 무결성을 검사합니다.

추가적인 작업이 필요한 경우, du 명령어를 사용하여 각 디렉토리의 용량을 확인할 수 있습니다.

# du -sk /was1
# du -sk /was2

위의 명령어는 /was1 디렉토리와 /was2 디렉토리의 용량을 확인합니다. 이를 통해, 이동한 데이터의 용량이 동일한지를 확인할 수 있습니다.

 

sort 명령어

파일의 정렬을 처리하는 명령어이다. sort 명령어는 하나 또는 그 이상의 파일의 텍스트 줄을 스크린 상에서 정렬하는 데 사용된다. 출력 내용을 정렬하여 보기좋게 표현하고자 할 때 유용하다. sort 명령어를 옵션 없이 사용하면 숫자나 알파벳 순으로 정렬하여 준다. 그러나 sort 명령어는 공백 문자(white space: space, Tab)를 필드 구분자로 인식하기 때문에, 공백 문자가 있는 경우에는 출력 결과가 이상하게 나올 수 있다. 따라서 필요한 경우에는 -t 옵션을 사용하여 필드 구분자를 지정해주어야 한다. 또한, sort 명령어는 전체 파일을 한번에 정렬하는 것이 아니라, 메모리에 올릴 수 있는 한도 내에서 정렬을 수행하기 때문에 매우 큰 파일의 경우 정렬이 어려울 수 있다. 이런 경우에는 --merge 옵션을 사용하여 파일을 정렬한 후에 병합하는 방법을 사용할 수 있다.

 

[명령어 형식]

# sort /etc/passwd
이 명령어는 /etc/passwd의 내용을 오름차순으로 정렬합니다.

# sort –r /etc/passwd
이 명령어는 /etc/passwd의 내용을 내림차순으로 정렬합니다.

# sort -k 3 filename
이 명령어는 "filename" 파일의 내용을 세 번째 필드를 기준으로 정렬합니다.

# sort -t : -k 3 –n /etc/passwd
이 명령어는 /etc/passwd의 내용을 ":"으로 구분되는 세 번째 필드를 기준으로 숫자 순으로 정렬합니다.

이외에도 "sort" 명령어는 다양한 옵션을 제공하여 더 구체적인 정렬 작업을 수행할 수 있습니다. 예를 들어 "-u" 옵션은 중복을 제거하는 데 사용되며, "-f" 옵션은 대소문자를 구분하지 않는 정렬을 수행합니다.

 

[명령어 옵션]

dhqtus 설명
-n 숫자로 정렬한다.
-r 내림차순으로 정렬한다. 기본은 오름차순으로 정렬하는 것이다.
-o 출력 결과를 파일에 저장한다.
-t 필드 구분자를 지정한다. (기본값은 공백이 기준이 된다)
-k 정렬할 필드를 지정한다.

 

sort 정렬 실습

우선, sort 명령어를 사용하기 위해 샘플 파일을 만들어봅니다. 해당 파일은 다음과 같은 내용을 가지고 있습니다.

linux100 10 20 31 50
linux200 20 25 31 20
linux300 30 20 30 40
linux400 50 20 30 80

위 파일은 sort 명령어를 사용하는데 필요한 샘플 파일입니다. sort 명령어는 파일을 정렬하는데 사용되며 아래와 같은 옵션을 사용할 수 있습니다.

 

옵션 설명
-n 숫자로 정렬합니다.
-r 내림차순으로 정렬합니다.
-o 출력 결과를 파일에 저장합니다.
-t 필드 구분자를 지정하며, 기본값은 공백입니다.
-k 정렬할 필드를 지정합니다.

다음은 sort 명령어의 사용 예시입니다.

# sort sortfile1 /* 첫 번째 필드를 기준으로 정렬 */
linux100 10 20 31 50
linux200 20 25 31 20
linux300 30 20 30 40
linux400 50 20 30 80

위 명령어는 sortfile1 파일을 첫 번째 필드를 기준으로 정렬합니다.

# sort -r sortfile1 /* 내림차순으로 정렬 */
linux400 50 20 30 80
linux300 30 20 30 40
linux200 20 25 31 20
linux100 10 20 31 50

위 명령어는 sortfile1 파일을 내림차순으로 정렬합니다.

# sort -k 3 -n sortfile1 /* 세 번째 필드를 기준으로 숫자로 정렬 */
linux100 10 20 31 50
linux300 30 20 30 40
linux400 50 20 30 80
linux200 20 25 31 20

위 명령어는 sortfile1 파일을 세 번째 필드를 기준으로 숫자로 정렬합니다.

# sort -t : -k 1 /etc/passwd /* -t (seperate) 구분자로 :사용, 기준으로 첫번째 행 정렬 */
adm:x:3:4:adm:/var/adm:/sbin/nologin
amanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
avahi-autoipd:x:101:107:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
cyrus:x:76:12:Cyrus IMAP Server:/var/lib/imap:/bin/bash
..... (중략) .....

위 명령어는 /etc/passwd 파일을 : 구분자를 이용해 첫번째 필드를 기준으로 정렬합니다.

# sort -t : -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
..... (중략) .....

위 명령어는 /etc/passwd 파일을 : 구분자를 이용해 세 번째 필드를 기준으로 숫자 순으로 정렬합니다. 이와 같은 방식으로 sort 명령어를 사용하여 파일을 정렬할 수 있습니다.

 

sort 명령어 활용

단계별로 sort 명령어를 설명해드리겠습니다.

# CMD | sort
# CMD | sort –r
# CMD | sort –nr

위 명령어는 CMD라는 명령어를 입력하여 그 결과를 sort 명령어를 이용해 정렬합니다.

sort 명령어에는 -r 옵션을 이용하여 정렬 결과를 역순으로 출력할 수 있습니다.

-n 옵션을 이용하면 숫자를 정렬할 수 있습니다. -n 옵션을 사용하면 문자열이 들어 있는 필드를 숫자로 인식하여 정렬합니다.

# ps -ef | head | sort
# ps -ef | head | sort –r
# ps -ef | head | sort -k 3
# ps -ef | head | sort -k 3 –r

위 명령어는 ps 명령어를 이용하여 현재 실행중인 프로세스를 출력하고, head 명령어로 상위 10개의 프로세스를 출력합니다. 이후 sort 명령어를 이용하여 프로세스를 정렬합니다.

sort -k 옵션은 필드를 지정하여 정렬할 수 있습니다. -k 3 옵션은 세 번째 필드를 기준으로 정렬하며, -k 3 –r 옵션은 세 번째 필드를 역순으로 정렬합니다.

# df –h | sort -k 4
# df -h | sort -k 4 -r (df 명령어에서 sort 시에는 -h 옵션을 사용하지 말자)

위 명령어는 df 명령어를 이용하여 디스크 사용량을 출력하고, sort 명령어를 이용하여 디스크 사용량을 기준으로 정렬합니다.

-h 옵션을 사용하면 사람이 읽을 수 있는 형식으로 출력됩니다. 디스크 사용량을 기준으로 정렬하므로 -k 4 옵션을 사용합니다. -k 4 -r 옵션은 디스크 사용량을 역순으로 정렬합니다.

# du -sk /var      /* -s : 합산, -k : K바이트 */
191416  /var
# cd /var
# du -sk * | sort
12      account
146552  lib
16      empty
16      ftp
20      gdm
248     named
28      db
30948   cache
3164    log
32      kerberos
356     arpwatch
4       mail
40      yp

위 명령어는 du 명령어를 이용하여 /var 디렉토리의 디스크 사용량을 출력하고, sort 명령어를 이용하여 디스크 사용량을 기준으로 정렬합니다.

# du -sk * | sort -n /* 첫번째 열을 숫자로 정렬 */
4       mail
8       crash
8       cvs
8       games
8       local
8       nis
8       opt
8       preserve
8       racoon
8       tmp
8       tux
12      account
16      empty
16      ftp
20      gdm

위 명령어는 du 명령어를 이용하여 /var 디렉토리의 디스크 사용량을 출력하고, sort 명령어를 이용하여 첫 번째 필드를 숫자로 정렬합니다.

# du -sk * | sort -nr | more /* 첫번째 필드열 역순으로 정렬 */
146552  lib
30948   cache
8920    www
3168    log
464     run
436     spool
356     arpwatch
248     named

위 명령어는 du 명령어를 이용하여 /var 디렉토리의 디스크 사용량을 출력하고, sort 명령어를 이용하여 첫 번째 필드를 역순으로 정렬합니다.

 

file 명령어

file 명령어는 파일의 종류(File Type)를 확인하는 명령어입니다. 일반적으로는 많이 사용되지 않지만 특정한 경우에 유용하게 사용될 수 있습니다. 예를 들어, 인터넷에서 다운로드 받은 파일이 어떤 종류인지 확인할 때 사용합니다.

Unix와 Linux에서는 파일의 확장자(Extension)가 특별한 의미를 가지지 않는 경우가 대부분입니다. 인터넷에서 다운로드 받은 대부분의 프로그램 파일들은 filename.tar.gz 형태로 되어 있습니다. filename.tar.gz라는 이름은 제작자가 잘못 배포하는 경우 filename.tar로만 배포되는 경우가 발생할 수 있습니다. 이러한 경우 파일의 형식을 정확히 알지 못하면 프로그램을 사용할 수 없게 됩니다. file 명령어를 사용하여 파일의 형식을 정확히 확인한 후, 파일의 원래 확장자로 복구한 다음 압축을 해제하고 아카이브(Archive)을 풀어서 사용하면 문제가 해결됩니다.

또한, file 명령어는 다양한 옵션과 함께 사용할 수 있습니다. 예를 들어 -i 옵션을 사용하면 파일의 MIME 타입을 확인할 수 있습니다. -z 옵션을 사용하면 gzip으로 압축된 파일의 경우 압축을 해제한 다음 파일의 형식을 확인할 수 있습니다. file 명령어는 사용자가 파일의 종류를 확인하는 데 도움이 되는 다양한 정보를 제공합니다.

하지만, file 명령어 역시 모든 파일을 정확하게 확인할 수 있는 것은 아닙니다. 특정한 파일 형식에 대해서는 제대로 인식하지 못할 수도 있습니다. 이러한 경우에는 다른 도구를 사용하여 파일의 형식을 확인해야 합니다.

 

Windows / Unix 계열의 파일 확장자

Windows에서는 파일에 확장자를 덧붙입니다. (예: file.txt, hwp.exe, ....) 그러나 Unix와 Linux에서는 파일의 확장자가 거의 의미가 없습니다.

 

[명령어 형식]

다음 명령어는 /etc/passwd 파일의 내용을 표시하는 데 사용됩니다:

$ file /etc/passwd

/etc/passwd 파일은 시스템의 사용자에 대한 중요한 정보를 포함하는 텍스트 파일입니다. 사용자 이름, 사용자 ID, 그룹 ID, 홈 디렉토리 및 로그인 셸과 같은 정보가 포함되어 있습니다. 이것은 사용자 계정을 관리하는 데 사용되는 중요한 시스템 파일입니다.

위 명령어를 사용하면 /etc/passwd 파일의 파일 유형을 확인할 수 있습니다. 이는 파일과 관련된 문제, 예를 들어 권한 오류 또는 손상과 같은 문제를 해결하는 데 도움이 될 수 있습니다.

/etc/passwd 파일을 수동으로 수정하는 것은 시스템의 보안 및 안정성에 심각한 영향을 미칠 수 있습니다. 숙련된 사용자만이 이 파일을 수정하도록 해야하며, 그러한 경우에도 극도의 주의가 필요합니다.

 

파일의 종류 확인 with file 명령어

file 명령어는 파일의 종류(File Type)를 확인하는 명령어입니다. 일반적으로는 많이 사용되지 않지만 특정한 경우에 유용하게 사용될 수 있습니다. 예를 들어, 인터넷에서 다운로드 받은 파일이 어떤 종류인지 확인할 때 사용합니다.

Unix와 Linux에서는 파일의 확장자(Extension)가 특별한 의미를 가지지 않는 경우가 대부분입니다. 인터넷에서 다운로드 받은 대부분의 프로그램 파일들은 filename.tar.gz 형태로 되어 있습니다. filename.tar.gz라는 이름은 제작자가 잘못 배포하는 경우 filename.tar로만 배포되는 경우가 발생할 수 있습니다. 이러한 경우 파일의 형식을 정확히 알지 못하면 프로그램을 사용할 수 없게 됩니다. file 명령어를 사용하여 파일의 형식을 정확히 확인한 후, 파일의 원래 확장자로 복구한 다음 압축을 해제하고 아카이브(Archive)을 풀어서 사용하면 문제가 해결됩니다.

또한, file 명령어는 다양한 옵션과 함께 사용할 수 있습니다. 예를 들어 -i 옵션을 사용하면 파일의 MIME 타입을 확인할 수 있습니다. -z 옵션을 사용하면 gzip으로 압축된 파일의 경우 압축을 해제한 다음 파일의 형식을 확인할 수 있습니다. file 명령어는 사용자가 파일의 종류를 확인하는 데 도움이 되는 다양한 정보를 제공합니다.

하지만, file 명령어 역시 모든 파일을 정확하게 확인할 수 있는 것은 아닙니다. 특정한 파일 형식에 대해서는 제대로 인식하지 못할 수도 있습니다. 이러한 경우에는 다른 도구를 사용하여 파일의 형식을 확인해야 합니다.

 

명령어 형식

file 명령어를 사용하여 파일의 종류를 확인하는 방법은 매우 간단합니다. 다음과 같은 형식으로 명령어를 입력합니다.

$ file filename

위 명령어는 filename 파일의 형식을 확인합니다. filename은 확인하려는 파일의 이름입니다. 예를 들어, 다음 명령어는 /etc/passwd 파일의 내용을 표시하는 데 사용됩니다.

$ file /etc/passwd

/etc/passwd 파일은 시스템의 사용자에 대한 중요한 정보를 포함하는 텍스트 파일입니다. 사용자 이름, 사용자 ID, 그룹 ID, 홈 디렉토리 및 로그인 셸과 같은 정보가 포함되어 있습니다. 이것은 사용자 계정을 관리하는 데 사용되는 중요한 시스템 파일입니다.

위 명령어를 사용하면 /etc/passwd 파일의 파일 유형을 확인할 수 있습니다. 이는 파일과 관련된 문제, 예를 들어 권한 오류 또는 손상과 같은 문제를 해결하는 데 도움이 될 수 있습니다.

/etc/passwd 파일을 수동으로 수정하는 것은 시스템의 보안 및 안정성에 심각한 영향을 미칠 수 있습니다. 숙련된 사용자만이 이 파일을 수정하도록 해야하며, 그러한 경우에도 극도의 주의가 필요합니다.

 

예시

다음은 file 명령어를 사용하여 다양한 파일의 종류를 확인하는 예시입니다.

# file /etc/passwd /* ASCII파일 (# cat /etc/passwd) */
/etc/passwd: ASCII text
# file /bin/ls /* Binary 파일 (# strings /bin/ls) */
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
# file /var/run/utmp /* Date 파일 */
/var/run/utmp:data
# file /etc/rc.d/init.d/sendmail /* Script 파일 */
/etc/rc.d/init.d/sendmail: Bourne-Again shell script text executable
# file /etc/hosts /etc /* 여러개의 파일 지정 */
/etc/hosts: ascii text
/etc: directory                   /* Directory 파일 */
# cd /etc
# file *
DIR_COLORS:                    ASCII English text
DIR_COLORS.xterm:              ASCII English text
Muttrc:                        ASCII English text
Muttrc.local:                  empty
NetworkManager:                directory
Pegasus:                       directory
X11:                           directory
a2ps-site.cfg:                 ASCII English text
a2ps.cfg:                      ASCII English text
acpi:                          directory
adjtime:                       ASCII text
aide.conf:                     ASCII English text
..... (중략) .....

file 명령어는 파일의 종류(File Type)를 확인하는 명령어입니다. 파일의 확장자가 의미가 없는 Unix와 Linux에서는 인터넷에서 다운로드 받은 파일이 어떤 종류인지 확인할 때 유용하게 사용됩니다. 예시를 보면 ASCII 파일, Binary 파일, Data 파일, Script 파일, 그리고 Directory 파일 등 다양한 파일의 종류를 확인할 수 있습니다. file 명령어는 다양한 옵션과 함께 사용할 수 있으며, -i 옵션을 사용하면 파일의 MIME 타입을 확인할 수 있고, -z 옵션을 사용하면 gzip으로 압축된 파일의 경우 압축을 해제한 다음 파일의 형식을 확인할 수 있습니다. 단, file 명령어 역시 모든 파일을 정확하게 확인할 수 있는 것은 아니며, 특정한 파일 형식에 대해서는 제대로 인식하지 못할 수도 있습니다. 이러한 경우에는 다른 도구를 사용하여 파일의 형식을 확인해야 합니다.

반응형