고대의 강력한 명령으로 간주되는 것은 무엇입니까? [폐쇄]

고대의 강력한 명령으로 간주되는 것은 무엇입니까? [폐쇄]

나는 awk와 sed라는 용어를 접했습니다. awk는 모든 라인을 통과하여 라인이 특정 조건을 충족할 때 작업을 수행하고, sed는 더 이상 출력되기 전에 입력 스트림에서 작동합니다. 나는 개인적으로 그것들을 사용하는 목적이 무엇인지 모르지만 그것이 강력하고 심지어 신성한 명령이라고 불린다는 것을 알아차렸습니다. 이 두 가지 외에 이러한 상태를 갖는 다른 명령/응용 프로그램은 무엇입니까?

답변1

일부 "오래된" 명령을 분류하는 한 가지 방법("더 강력한" 명령은 아님)은 내장 명령이라는 것입니다. 즉, 셸에서 호출된 명령이나 기능은 외부가 아닌 셸 자체 내에서 직접 실행됩니다. 실행 셸 실행 가능한 프로그램을 로드하고 실행합니다.
예로는 로그아웃, CD, 에코 및 기록이 있습니다.

해당 명령이 내장 명령인지 확인할 수 있습니다.

builtin [command]

예를 들어

builtin echo

출력이 없다는 것은 내장되어 있음을 의미합니다(유닉스 철학을 사용하면 아무 것도 괜찮습니다).

명령이 ls와 같은 내장 명령이 아닌 경우

builtin ls

반환 오류-bash builtin: cp: not a shell builtin

sed및 와 같은 "가장 강력한" 명령에 대해서는 awk매우 주관적이고 명확한 주장을 제시할 가능성이 거의 없으므로 실제로 질문에서 제거하겠습니다.

답변2

"강력한" 명령을 정의하려면 먼저 그 의미가 무엇인지 결정해야 합니다.

첫 번째 요구 사항은 보편성입니다. 일부 도구는 한 가지에만 집중하지만 매우 광범위한 문제를 해결할 수 있습니다. gnuplot사용하기 매우 쉬워서 과학계에서도 다른 것이 거의 필요하지 않은 매우 기본적인 그리기 도구입니다. 정규식을 처리할 수 있는 도구를 거의 모든 용도로 사용할 수 있는 sed이유가 있습니다. 형식 간 변환, 데이터 추출, 구문 분석, 검색, 교체 등 상상할 수 있는 거의 모든 작업을 수행할 수 있습니다. awk매우 유사하지만 매우 다릅니다. 구조화된 데이터에 더 적합하고 패턴을 기반으로 한 줄씩 구문 분석되며 보다 전통적인 프로그래밍 언어(더 많은 제어 흐름 등)에 더 가깝습니다. 이러한 도구를 숙지하고 나면 이를 사용하여 모든 문제를 해결할 수 있습니다. 둘 다 Turing 완전하며 문자열 처리와 관련이 없더라도 원칙적으로 모든 문제를 해결할 수 있습니다. 일반성은 최고 수준의 힘입니다. 무엇이든 할 수 있습니다. . 하지만 그것을 시도하고 플레이하려면 "원해야" 합니다. 여기에서 다음 요구 사항이 나옵니다.

두 번째 구성 요소는 레거시와 전통입니다. 40년 동안 존재해 왔으며 그 뒤에 거대한 코드 베이스가 있는 명령은 또한 가장 안정적이고(장기적인 개발) 가장 신뢰할 수 있습니다(개발을 중단할 수 없거나 기능을 변경할 수 없는 이유는 다음과 같습니다. 40년의 역사) 스크립트는 충돌할 것입니다. 그리고 놀라운 일을 할 수 있는 수많은 마스터가 있습니다. 이는 많은 사람들이 널리 알고 선호하는 도구가 반드시 시작하기에 가장 좋은 도구는 아니지만 오히려 "고착"되는 도구라는 것을 의미합니다. 그러나 많은 사람들이 사용한다면 나쁘지 않을 것입니다. 물론 어떤 점에서는 더 좋을 수도 있습니다. 여기서는 나이가 중요합니다. python언어로서 매우 강력하지만 아직 오래된 툴킷의 상태에 도달하지 못했습니다 gnu. 여전히 참신한 것처럼 느껴집니다. bash직관적이고 강력할 뿐만 아니라 거의 모든 곳에서 기본 셸로 사용할 수 있고 모든 사람이 사용하기 때문에 최고의 표준입니다.

여기서 컬트 지위는 매우 중요합니다. 사람들은 특정 괴짜 하위 문화의 일부라는 것을 자랑스럽게 생각합니다. 제가 직접적으로 말씀드릴 수 있는 것은 제가 마스터했을 때 : emacs에 대해 latex정말 멋진 느낌을 받았고 vi거의 즉시 증오심이 생겼다는 것입니다. 부분적으로는 그것이 개인적으로 저에게 직관적인 인터페이스가 아니었기 때문이기도 하지만, 물론, 다른 사람들이 이 느낌을 강화할 때 이 느낌은 강화됩니다. 같은 느낌. 내가 말하려는 것은 강력한 도구는 사회적으로도 강력하다는 것입니다. 잘 알려지지 않았거나 제대로 설계되지 않은 도구는 사람들에게 그렇게 강한 감정을 불러일으킬 수 없습니다(부정적이든 긍정적이든 - 그저 밋밋할 뿐입니다). 제가 언급한 도구 중 일부는 Star Trek에 필적하는 기능을 갖추고 있습니다. 이는 소프트웨어로서는 나쁜 성과가 아닙니다. awk이것은 Python의 전신으로 간주될 수 perl있으며 perl확실히 다음과 같은 특징을 가지고 있습니다. 대부분의 사람들은 Python이 perl가독성이 좋지 않고 투박한 특징이 많다는 데 동의합니다. 그것은 또한 가장 강력한 문자열 중심 언어이지만, 컬트적 지위가 없다면 대부분의 사람들은 아마 장난을 치고 세상을 구하고 A를 씹어먹을 것과 같은 도구로 요리하려고 하기보다는 더 빨리 포기할 것입니다. 웹 페이지의 무리.

마지막으로 사람들은 일관성, 우아함, 개성을 좋아합니다. 도구는 강력할 수 있지만 적절하지 않다고 느껴지기 때문에 누구도 사용하고 싶어하지 않습니다. 강력한 도구는 적어도 그것을 즐겨 사용하는 사람들에게는 직관적이어야 합니다. 여기서 말싸움을 시작하려는 것은 아니지만, 대부분의 독자들은 틀림없이 자신만의 불행과 서투른 디자인의 예를 발견하게 될 것입니다.

간단히 말해서: 명확한 목적, 다재다능함, 큰 유산과 추종자, 그리고... "영혼"을 위해 잘 설계되었습니다. 그것이 내 정의입니다.

관련 정보