file(명령어)

file (command)
파일
File-example-command-gimp.gif
사용 예file
개발자AT&T 벨 연구소
초기 릴리즈Unix Research Version 4의 일부로 1973년(1973년); 1986년(1986년) 오픈 소스 재실장
저장소github.com/file/file
기입처C
운영 체제Unix, Unix like, Plan 9, IBM i
플랫폼크로스 플랫폼
유형파일 유형 디텍터
면허증.BSD 라이선스, CDDL
계획 9: MIT 라이선스
웹 사이트darwinsys.com/file/

명령어는 컴퓨터 파일에 포함된 데이터 유형을 인식하기 위한 Unix 및 Unix 유사 운영 체제의 표준 프로그램입니다.

역사

의 원래 버전file는 1973년 Unix Research 버전[1] 4에서 시작되었습니다.System V는 몇 가지 중요한 변경사항과 함께 메이저업데이트를 했습니다.특히 파일타입 정보를 바이너리 자체에 컴파일하지 않고 외부 텍스트파일로 이동했습니다.

대부분[2] 주요 BSD 및 Linux 배포판은 Ian Darwin이 1986-87년에 작성한 무료 오픈 소스 재실장을 사용합니다.1989년 Geoff Collyer에 의해 확장되었고, 그 이후 Guy Harris, Chris Lowth 및 Eric Fischer를 포함한 많은 다른 회사로부터 입력을 받았다. 1993년 말부터 이 회사의 유지보수는 Christos Zoulas에 의해 조직되었다.오픈비SD 시스템은 자체 서브셋 구현이 처음부터 작성되어 있지만, 여전히 매직 파일 형식의 정보의 Darwin/Zoulas 컬렉션을 사용합니다.

file명령어가 IBM i 운영 [3]체제에도 이식되었습니다.

사양

Single Unix Specification(SUS; 싱글유닉스 사양)은 명령줄에서 지정된 파일에 대해 일련의 테스트를 수행하도록 규정하고 있습니다.

  1. 파일을 읽을 수 없거나 UNIX 파일 유형이 결정되지 않은 경우file프로그램은 파일이 처리되었지만 파일 유형이 결정되지 않았음을 나타냅니다.
  2. file디렉토리, FIFO, 소켓, 블록 특수 파일 및 문자 특수 파일의 유형을 결정할 수 있어야 합니다.
  3. 길이가 0인 파일은 다음과 같이 식별됩니다.
  4. 파일의 첫 번째 부분이 고려되고file위치 감응 테스트를 사용하는 것입니다.
  5. 전체 파일이 고려되고file상황에 맞는 테스트를 사용하는 것입니다.
  6. 이 파일은data파일

file의 위치 의존 테스트는 일반적으로 파일 내의 다양한 위치를 매직넘버의 텍스트 데이터베이스와 대조함으로써 구현됩니다(「사용방법」섹션 참조).이것은 파일 확장자 및 MIME과 같은 체계와 같은 다른 간단한 방법과는 다릅니다.

대부분의 구현에서는file명령어는 데이터베이스를 사용하여 리드 바이트의 프로브를 실행합니다.이 데이터베이스는 다음 파일에 구현됩니다.magic(보통 로케이션은,/etc/magic,/usr/share/file/magic또는 이와 유사한 장소.

사용.

SUS 에서는[4], 다음의 옵션이 필요합니다.

위치 의존형 테스트를 포함하는 특별한 형식의 파일을 지정합니다-M file.기본 위치 의존형 테스트 및 컨텍스트 의존형 테스트는 실행되지 않습니다.
단, 디폴트테스트는 에 기재되어 있는 테스트 후에 실행됩니다-m file.file.
지정된 파일에 대해 디폴트 위치 의존 테스트 및 컨텍스트 의존 테스트를 수행합니다-d.또는 를 지정하지 않으면 이것이 기본 동작입니다.
기존 파일 또는 디렉토리를 가리키는 심볼릭링크는 참조 해제하지 마십시오-h.
기존 파일 또는 디렉토리를 가리키는 심볼릭링크를 참조 해제합니다-L.
존재하지 않는 파일, 블록 특수 파일, 문자 특수 파일, 디렉토리, FIFO, 소켓, 심볼릭 링크 또는 일반 파일 중 하나로 파일을 더 이상 분류하지 마십시오-i.리눅스[5] 및 BSD[6] 시스템은 이 옵션을 사용하면 다르게 동작하며 대신 인식된 파일 형식을 식별하는 인터넷 미디어 유형("MIME 유형")을 출력합니다.

다른 Unix 및 Unix 유사 운영 체제에서는 '특수 파일', '계속' 또는 '원시'와 같은 추가 옵션을 추가할 수 있습니다(아래 예).

명령어는 파일의 모양만 알려주고 파일의 모양은 알려주지 않습니다(파일이 내용을 보는 경우).내용이 일치하지 않는 파일에 매직넘버를 넣으면 프로그램을 속이기 쉽다.따라서 이 명령어는 특정 상황 이외에는 보안 도구로 사용할 수 없습니다.

$ file file.c file.c: C 프로그램텍스트
$파일 프로그램: ELF 32비트 LSB 실행 파일, 인텔 80386, 버전 1(SYSV), 동적 링크(공유 lib 사용), 제거
$ file /dev/hda1 /dev/hda1 : 블록스페셜 (0/0)
$ file - s / dev / hda1 / dev / hda1 : Linux / i386 ext2 파일 시스템

-s는 일부 플랫폼에서만 사용할 수 있는 비표준 옵션입니다.file디바이스 파일을 읽어내, 그 내용을 식별하기 위해서만 사용하는 것이 아닙니다.보통.file는 디바이스 파일을 읽으면 바람직하지 않은 부작용이 발생할 수 있으므로 이러한 파일을 읽으려고 하지 않습니다.

$ file - k - r libmagic - dev _ 5 . 35 - 4 _ armhf . deb # ( Linux ) libmagic - dev _ 5 . 35 - 4 _ armhf . deb : Debian 바이너리 패키지 ( 포맷 2.0 ) - current archive - 데이터

비표준 옵션을 통해 프로그램은 첫 번째 히트 후에 중지되지 않고 일치하는 다른 패턴을 찾습니다.일부 버전에서 사용할 수 있는 옵션을 사용하면 인쇄할 수 없는 문자가 8진 표기가 아닌 원시 형식으로 표시됩니다.

$file compressed.gz compressed.gz: gzip 압축 데이터, 압축 해제, 원래 파일 이름, 'compressed', 마지막 변경:2006년 1월 26일 () 14:08:23, os: Unix
$ file - i compressed . gz # ( Linux ) ) compressed . gz : application / x - gzip ; charset = displicate
$ file data . files data . files :Netpbm PPM "rawbits" 이미지 데이터
$ file / bin / cat / bin / cat :2개의 아키텍처를 가진 마하오 유니버설 바이너리 (아키텍처 ppc7400용):Mach-O 실행 파일 ppc /bin/cat (아키텍처 i386용):Mach-O 실행 파일 i386
$ 파일 /usr/bin/vi /usr/bin/vi: vim에 대한 심볼 링크

심볼릭 링크 식별은 모든 플랫폼에서 사용할 수 있는 것은 아니며 통과되었거나 설정된 경우 참조되지 않습니다.

Libmagic 라이브러리

Ian Darwin/Christos Zoulas 버전의 버전 4.00 현재,file, 의 기능file에 통합되다libmagic C([7][8]및 C 호환) 링크를 통해 접근할 수 있는 라이브러리 file[9][10]라이브러리를 사용하여 구현됩니다.

레퍼런스

  1. ^ "Source of the UNIX V4 "file" man page". Archived from the original on 2019-12-10. Retrieved 2022-03-13.
  2. ^ 이 프로그램의 초기 이력은 개인 CVS 저장소에 기록됩니다. 메인 프로그램의 로그는 [1] Wayback Machine에서 아카이브된 2017-04-01을 참조하십시오.
  3. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Archived (PDF) from the original on 2021-03-05. Retrieved 2020-09-05.
  4. ^ "The Open Group Base Specifications Issue 7 — file command". Archived from the original on 2018-10-12. Retrieved 2014-08-20.
  5. ^ file(1)Linux 사용자 매뉴얼– 사용자 명령어
  6. ^ file(1)NetBSD 일반 명령어 매뉴얼
  7. ^ libmagic(3)Linux 프로그래머 매뉴얼– 라이브러리 기능
  8. ^ libmagic(3)NetBSD 라이브러리 기능 매뉴얼
  9. ^ Zoulas, Christos (February 27, 2003). "file-3.41 is now available". File (Mailing list). Archived from the original on March 4, 2016. Retrieved January 1, 2013.
  10. ^ Zoulas, Christos (March 24, 2003). "file-4.00 is now available". File (Mailing list). Archived from the original on December 28, 2016. Retrieved January 1, 2013.

외부 링크

수동 페이지

다른.