![많은 매개변수가 필요한 유틸리티에 권장되는 인터페이스는 무엇입니까? [폐쇄]](https://linux55.com/image/122441/%EB%A7%8E%EC%9D%80%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%9C%20%EC%9C%A0%ED%8B%B8%EB%A6%AC%ED%8B%B0%EC%97%90%20%EA%B6%8C%EC%9E%A5%EB%90%98%EB%8A%94%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
제대로 작동하려면 6가지 정보가 필요한 명령줄 유틸리티를 작성 중입니다. 다음과 같습니다.
fm-git filename repository path comment username password
그러나 모든 개별 시스템에서는 일정 username
합니다 password
.
유틸리티를 실행할 때 빌드가 어렵다는 것을 알았습니다. 예를 들어 다음은 이 유틸리티에 대한 테스트 호출입니다(가독성을 위해 여러 줄로 구분).
/Users/chuck/Projects/fm-git/fm-git.py chiv-lib
/Users/chuck/Projects/chiv-lib/ Chivalry/ "continued testing"
Administrator abc1234
나는 이러한 주장을 전달하는 다양한 방법을 생각하고 있습니다. 예를 들어, fm-git -f filename -r repository ...
또는 fm-git --filename filename --repository repository...
. 또한 구성 설정은 일반적으로 변경되지 않고 유틸리티 호출에서 제거될 수 있으므로 구성 설정을 만들고 매개변수화하는 것을 username
고려 하고 있습니다 .password
유틸리티 매개변수가 많지만 필수인 경우 유틸리티 호출의 가독성을 유지하기 위해 허용되는 방법은 무엇입니까?
답변1
일반적으로 Unix 응용 프로그램에서는 이 정보를 제공하는 다양한 방법을 허용하며, 덜 구체적인 방법보다 "구체적인" 방법이 우선 적용됩니다.
그래서 당신은:
그래픽 응용 프로그램의 경우 사용되는 툴킷은 거의 항상 리소스를 얻는 방법(예:
xrdb
순수 X의 스타일 등) 을 제공합니다.구성 파일(툴킷에서 아직 제공되지 않은 경우)
짧고 긴 명령줄 옵션(
getopt
C에서 사용하기 쉬움)정보가 제공되지 않으면 경로의 현재 디렉터리와 같은 합리적인 기본값
위치 매개변수는 파일 목록이 뒤에 올 수 있는 몇 가지 필수 매개변수에 대해서만 의미가 있습니다(와일드카드 사양이 여러 매개변수로 확장되기 때문입니다). 6개의 개별 조각이 너무 많으면 순서를 기억하기 어려울 수 있으므로 이 옵션을 사용하십시오.
--password -
비밀번호의 경우 특수 값(예: 또는 ) 을 사용하여 애플리케이션이 stdin에서 비밀번호를 읽을 수 있는 방법을 제공하는 것이 도움이 될 수 있습니다 -p -
.
애플리케이션을 사용하는 사람은 누구나 하드코드된 비밀번호, 구성 파일의 비밀번호 또는 사용자가 비밀번호를 입력하도록 하는 것이 특정 사용 사례에 가장 적합한 옵션인지 선택할 수 있습니다.
답변2
일반적으로 다음을 수행하는 것이 가장 좋습니다.
- 종속성 매개변수를 계산하지만 이를 재정의할 수 있도록 허용합니다. 예를 들어, 예에서는
filename
와 동일한 매개변수가 있으므로$(basename repository)
저장소만 필요할 수 있지만 선택적으로--filename
대체 파일 이름을 제공할 수 있습니다. - 명령줄 및 출력
ps
에서 인증을 숨깁니다 . 파일에 넣으세요. 아마도 파일에서 읽는 것과$HOME/.fm-git.conf
같이 파일에 더 많은 제약을 가할 수도 있습니다.chmod 600 $HOME/.fm-git.conf
때로는 환경 변수에서 사용자 이름과 비밀번호를 얻을 수도 있지만(예: 기본 사용자 이름은 시스템 사용자 이름 또는 입니다SUDO_USER
), 귀하의 경우는 그렇지 않을 수도 있습니다.
따라서 두 번의 최적화 후에는 3개의 cli 매개변수만 남게 되는데, 이는 허용 가능하다고 생각합니다. 위치 인수로 자유롭게 사용하거나 일부 플래그를 제공하십시오. 예 --comment
: 스크립트에서 프로그램을 추가로 사용하는 경우 긴 플래그를 제공하면 가독성이 향상되지만 주로 cli에서 프로그램을 수동으로 실행하는 경우 더 많은 것을 입력해야 합니다. .
어쨌든, Python으로 프로그램을 작성할 때 다음을 사용하는 것이 좋습니다.인수 모듈-- 매개변수를 구문 분석하고 원하는 경우 나중에 변경하는 데 도움이 됩니다.