유닉스 유틸리티는 얼마나 똑똑합니까?

유닉스 유틸리티는 얼마나 똑똑합니까?

sort, find, grep, diff 등과 같은 Unix 유틸리티는 때로는 코드를 전혀 작성하지 않고도 빠른 작업을 수행하는 데 매우 편리합니다.

내부적으로 어떤 알고리즘을 사용하는지, 특정 작업에 대해 특정 알고리즘을 지능적으로 결정하는 방법을 알고 싶습니다. 예를 들어, sort가 거대한 입력 파일을 얻는 경우 다양한 데이터 크기에 대해 서로 다른 알고리즘을 사용합니까?

다양한 데이터 세트를 검색할 때 grep이 지능적으로 알고리즘을 전환할 수 있습니까?

답변1

유닉스는 구현이 무엇을 해야 하는지를 지정하는 표준일 뿐, 어떻게 해야 하는지는 지정하지 않습니다.

따라서 grep/sort/find 구현은 서로 다른 시스템에서 서로 다른 방법을 사용할 가능성이 높습니다(그리고 Linux와 같은 한 시스템에서도 동시 구현이 있습니다).

Linux의 경우 언제든지 소스 코드를 볼 수 있습니다.

답변2

당신은 이것에 관심이 있을 수 있습니다메일링 리스트 게시물일부 GNU grep 최적화를 설명하는 GNU grep의 원저자가 작성했습니다. 다른즐거운 탐험저자: Ridiculous Fish (Hex Fiend의 저자)

답변3

UNIX 표준은 드문 경우를 제외하고는 표준 시스템 도구의 구현 세부 사항을 지정하지 않습니다. 최신 Single Unix 사양 버전을 찾을 수 있습니다.여기(경고: 등록이 필요합니다).

이를 염두에 두고 모든 UNIX(System V 및 BSD, Solaris, Mac OS X 등과 같은 직계 자손) 또는 UNIX 기반 운영 체제(먼 세대 또는 유사: Linux, Minix)에는 고유한 유틸리티 구현인 UNIX 사양이 있습니다. 예를 들어. 보세요FreeBSD그리고Linux/GNU Coreutils. 일부 도구는 그 자체로 전체 프로젝트입니다.GNU 차이점또는GNU grep. 또 다른 사실은 이러한 도구의 일부 구현이 다른 UNIX 유사 시스템과 원래 작성된 시스템의 표준으로 자리잡을 수 있다는 것입니다.freebsd의 일부 gnu coreutils아니면 GCC.

보너스: UNIX 가계도를 이해하려면 다음을 살펴보십시오.이 사진.

답변4

다양한 데이터 세트를 검색할 때 grep이 지능적으로 알고리즘을 전환할 수 있습니까?

나는 그렇게 생각하지 않습니다. 그러나 -f 플래그가 주어지면(또는 fgrep이라고 불림) "빠른" 비RE 알고리즘으로 전환됩니다.

관련 정보