복잡한 쉘 명령이 AWK로 텍스트 출력을 구문 분석 할 때 항상 어색하다는 것을 알았습니다 . 기본적으로 구조화 된 데이터를 텍스트로 변환 한 다음 텍스트를 다시 구문 분석하여 구조화 된 데이터로 돌아갑니다.
PowerShell 은 텍스트 대신 쉘 명령간에 유형이 지정된 개체를 파이프 할 수있게함으로써 이러한 문제를 방지하는 Windows 셸입니다.
PowerShell과 같이 텍스트 기반이 아닌 객체 기반의 유닉스 셸이 있습니까?
복잡한 쉘 명령이 AWK로 텍스트 출력을 구문 분석 할 때 항상 어색하다는 것을 알았습니다 . 기본적으로 구조화 된 데이터를 텍스트로 변환 한 다음 텍스트를 다시 구문 분석하여 구조화 된 데이터로 돌아갑니다.
PowerShell 은 텍스트 대신 쉘 명령간에 유형이 지정된 개체를 파이프 할 수있게함으로써 이러한 문제를 방지하는 Windows 셸입니다.
PowerShell과 같이 텍스트 기반이 아닌 객체 기반의 유닉스 셸이 있습니까?
답변:
아니요, 다른 방법입니다. 숟가락 ^ H ^ H ^ H 구조화 된 데이터가 없습니다. 텍스트 만 있습니다.
유닉스 철학의 큰 부분은 텍스트를 출력하고 텍스트를 입력으로 받아들이는 아이디어를 기반으로합니다. 이에 대한 좋은 설명이있는 " The Unix Programming의 기술 "을 읽어 보는 것이 좋습니다.
오해하지 마십시오. 나는 당신의 요점을 이해하고 당신이 무엇을 얻으려고 노력하는지 알고 있습니다. 셸로 사용할 수있는 Ruby 및 Python의 대화식 인터프리터와 같은 것이 있지만 Bash만큼 기본 작업에는 적합하지 않습니다. 예를 들어 디렉토리를 시도하고 변경하십시오.
또한 쉘에서 객체를 사용하는 것이 전부는 아닙니다. 유일한 경우 쉘 이 지원, 유닉스에, 당신은 손실 될 것이다. grep, awk, sed 등과 같은 모든 표준 Unix 텍스트 조작 도구를 변경해야합니다.
몇 년 전에 이와 같은 것을 만들려고 시도했지만 이름을 기억할 수 없으며 오랫동안 들어 보지 못했습니다. 아마 이륙하지 않을 것입니다.
ls(1)
. 완전히 쓸모없는.
나는 당신이 많은 해석 (또는 컴파일 된) 스크립트를 작성한 다음 인터프리터의 쉘 내에서 호출하여 객체를 반환하거나 보존하는 등의 방법으로 대부분을 달성 할 수 있다고 생각합니다.
적어도 Ruby, Perl, Python, Haskell (예 : GHCi), JavaScript (예 : node.js), Matlab 및 기타 언어로이 작업을 수행 할 수 있습니다.
3 년 후의 또 다른 생각 : XML 또는 JSON을 사용하여 텍스트 스트림이있는 객체를 표현할 수 있습니다. 저는 JSON (단순)을 선호하며 실제로 * NIX 유틸리티 JSON 지원을 제공하는 프로젝트가 있습니다. 예를 들면 다음과 같습니다. https://github.com/step-/JSON.awk
AWK와 같은 클래식 * NIX 프로그램에 객체 유형 모델을 사용할 때의 한 가지 문제는 실제로 OO 지원이 없다는 것입니다. 예를 들어 AWK에는 연관 배열이 있지만 배열은 다차원이 아닙니다 (AWK 배열의 각 요소는 숫자 또는 문자열이어야하며 배열은 AWK의 배열 객체가 될 수 없음).