2P by neo 4달전 | favorite | 댓글 1개

인사말

  • 인간 중심의 디자인과 간단한 부품들이 함께 작동하는 것의 중요성.
  • 프로그램 간 일관성과 충분한 정보 제공의 필요성.
  • 발견의 용이성과 대화형 인터페이스의 표준화.
  • 견고함과 공감 능력의 중요성.
  • 혼돈을 인정하고 지침을 제공하는 것의 가치.

철학

  • 사용자 중심의 디자인과 간단한 부품들이 함께 작동하는 것을 강조.
  • 프로그램 간 일관성 유지와 필요한 정보만 제공하는 것의 중요성.
  • 사용자가 쉽게 기능을 발견할 수 있도록 하는 것과 대화형 인터페이스의 중요성.
  • 견고함과 사용자에 대한 공감을 강조하며, 혼돈 속에서도 지침을 제공.

지침

  • 기본적인 규칙을 따르는 것의 중요성.
  • 도움말, 문서화, 출력, 오류, 인자 및 플래그, 상호작용, 하위 명령어, 견고함, 미래 지향적 설계, 신호 및 제어 문자, 구성, 환경 변수, 명명, 배포, 분석 등에 대한 구체적인 지침 제공.

GN⁺의 의견

  • 이 가이드는 커맨드 라인 인터페이스(CLI)를 사용하는 소프트웨어 개발자들에게 매우 유용함. 사용자 친화적인 CLI를 만드는 데 필요한 철학과 구체적인 지침을 제공하기 때문.
  • CLI는 여전히 개발자들에게 강력한 도구이며, 이 가이드는 그러한 도구를 더욱 효과적으로 사용할 수 있도록 돕는다.
  • 이 문서는 CLI의 미래 지향적인 설계를 위한 중요한 자료로, 개발자들이 사용자 경험을 향상시키고, 견고하며, 확장 가능한 프로그램을 만드는 데 기여할 것임.
Hacker News 의견
  • 현재 많은 사람들이 커맨드 라인이 무엇인지 모르며, 왜 그것을 사용해야 하는지에 대해서도 관심이 없음.

    • 1980년대에도 이러한 상황은 마찬가지였지만, 현재는 그 어느 때보다 커맨드 라인을 아는 사람들이 많아졌음. CLI(커맨드 라인 인터페이스)의 황금기라고 할 수 있음.
  • 스크립트에서는 서브커맨드의 임의 축약을 허용하지 말 것. 예를 들어, mycmd install 대신 mycmd ins 또는 mycmd i를 허용하면, i로 시작하는 새로운 커맨드를 추가할 수 없게 됨.

    • 스크립트에서 짧은 인자 사용을 피해야 함. 짧은 인자는 사람이 사용할 때 타이핑을 줄이기 위한 편의성을 제공하지만, 스크립트에서는 명시적으로 작성하는 것이 비용이 적고, 읽기와 쓰기 비율을 고려할 때 더 바람직함.
  • --dry-run 옵션을 고려해볼 것. 실제 변경을 하지 않고 어떤 작업이 수행될지 미리 보여주는 기능은 도구를 배우고 복잡한 옵션을 올바르게 설정했는지 확인하는 데 매우 유용함.

  • stdout이 대화형 터미널이 아닌 경우, 애니메이션을 표시하지 말 것. 이는 CI 로그 출력에서 진행 상황 바가 크리스마스트리처럼 변하는 것을 방지함.

    • stdout에서는 절대 애니메이션을 표시하지 말 것. stderr는 로깅, 정보 제공 등을 위한 것이며, stdout은 tty 여부와 관계없이 유용한 출력을 제공해야 함.
  • 심볼과 이모지는 명확성을 높일 때만 사용할 것.

    • 심볼과 이모지는 터미널 간에 렌더링이 일관되지 않을 수 있으며, 사용자의 취향에 따라 호불호가 갈릴 수 있으므로 매우 신중하게 사용해야 함.
  • 현재 Unix 커맨드 라인은 한편으로는 "놀라울 정도로 유용"하고 다른 한편으로는 "설계상의 결함"이 있음.

    • Unix 커맨드 라인이 유용한 이유는 C나 Rust로 같은 작업을 수행하는 데 걸리는 시간을 생각해보면 알 수 있음.
    • 설계상의 결함은 커맨드 라인 인터페이스가 동시에 인간과 기계가 읽을 수 있어야 한다는 점에서 비롯됨. 이 문제를 해결하는 정석적인 방법은 없음.
  • CLI가 매우 크고 중첩이 필요한 경우(예: aws)를 제외하고, 대부분의 앱은 모든 옵션을 도움말에 출력하고 사용자가 less를 사용하여 필요한 내용을 찾게 하는 것을 선호함.

  • 전통적으로 UNIX 명령어는 다른 프로그램에 의해 주로 사용될 것이라고 가정하에 작성됨.

    • 실제로는 대화형 로그인 쉘 내에서 상호작용적으로 사용되기 위해 의도되었음. 출력을 생성하는 프로그램과 "조용한" 텍스트 필터로 나뉘며, 복잡한 프로그램은 C로 작성됨.
  • 환경 변수에서 비밀번호를 읽지 말 것.

    • 비밀번호는 크리덴셜 파일, 파이프, AF_UNIX 소켓, 비밀 관리 서비스 또는 다른 IPC 메커니즘을 통해서만 받아야 함.
  • CLI 가이드라인에 대한 가장 포괄적인 책은 Eric Raymond의 저서임.

    • 오랜 시간이 지났지만, clig.dev를 훑어보니 시간이 지남에 따라 의견이 많이 변화했음을 알 수 있음.