나는 파이프를 통해 서로(및 다른 도구)에 연결되는 작은 도구 세트가 있는 "Unix Way" 도구 모음을 작성하고 있습니다.
문제(내가 관심을 갖는 이유에 대한 자세한 내용은 아래 참조)는 다음과 같습니다. 다른 표준 Unix 도구에서 쉽게 형식을 지정하고 사용할 수 있는 명령줄의 표 형식 출력에 권장되는 출력 형식이 있습니까?
일부 배경:
저는 명령줄에서 매직 덱을 관리하고 검색하는 도구 세트를 작성 중입니다. 저는 이러한 도구를 더욱 집중적으로 만들어 각각 하나의 작업만 수행하도록 노력하고 있습니다.
세트 이름을 매개변수로 사용하고 세트 이름에 대해 퍼지 검색을 수행하여 가장 좋은 것부터 가장 나쁜 것까지 일치하는 목록을 만드는 mtg-identify-set라는 도구가 있습니다.
"Theros"를 검색하면 다음과 같은 결과가 나옵니다.
- 이거,"테로스",100.00
- tths, "테로스 토큰", 63.15789473684200
- pths,"테로스 프로모션",63.15789473684200
- drk,"어두운",57.14285714285700
- aer, "에테르 반란", 52.63157894736800
따라서 대문자를 무시하고 세트 코드, 세트 이름, 일치율이 출력됩니다.
나는 "cat -v가 유해한 것으로 간주되는" 방식으로 이러한 도구를 작성하려고 합니다(http://harmful.cat-v.org/cat-v/), 도구를 "단일 작업"으로 유지하기 위해 형식 매개변수 없이 사용합니다.
하지만 이로 인해 질문이 생깁니다. 출력이 실제로 어떻게 명령줄로 전송되어야 할까요? Unix 도구 자체는 매우 일관성이 없으며 오늘날 실제 툴킷 프로그램은 완전히 일관성 없는 방식으로 매우 이상한 결과를 출력합니다. 대부분은 매우 일관성이 없는 자체 서식 옵션을 가지고 있습니다.
탭으로 구분된 출력을 사용해 보았지만 "column" 명령은 모든 공백을 동일하게 취급하고 "탭"을 열에 넣으려고 합니다. 구분 기호에는 쉘 블랙 매직이 필요하기 때문입니다. 아마도 포기하고 쉼표를 사용할 수도 있지만 매직의 플레인즈워커 카드 이름에는 쉼표가 있어서 비슷한 문제가 발생할 수 있습니다. 파이프로 구분된 형식은 어떤 것과도 충돌하지 않는다는 것이 거의 보장되지만, 열을 사용하여 콘텐츠를 출력하지 않으면 사람에게 친숙하지 않은 형식이 될 수 있습니다.
나는 인간이나 기계 친화적인 출력을 위해 일종의 파이프라인 계측을 수행하는 것을 피하고 싶습니다.
최악의 경우에는 모든 것을 JSON이나 텍스트에 적합한 다른 형식으로 출력하고 다른 도구의 출력을 가져와 원하는 대로 형식을 지정하는 형식 지정 도구를 제공할 수 있다고 생각합니다. 하지만 이는 복잡성을 가중시킬 뿐입니다.
아마도 대답은 "도구의 일관성을 유지하라"일 것입니다. 그냥 그 길로 가야 할 수도 있겠네요. 하지만 실제로 명령줄 도구에 대한 "권장 출력 형식"에 대한 스타일 가이드가 있었으면 좋겠습니다. 주위를 둘러보았더니 Cat-v Thoughed Harm 웹사이트에는 도구가 수행해서는 안 되는 작업에 대한 불만이 많았지만 수행해야 하는 작업에 대해서는 많지 않았습니다.