ls에 대한 일반 추상화

ls에 대한 일반 추상화

안경

운영 체제: OS X; 클라이언트: 터미널: sh, bash

질문

Commands에 추상화 계층을 추가하기 위해 쉘 스크립트를 작성 중입니다 ls. 나는 그것을 "깨지지 않게" 만들고 싶었기 때문에 먼저 ls([ls(1) - Linux 매뉴얼 페이지][1]을 통해) 허용되는 모든 가능한 명령을 파악하여 전달된 옵션에 대해 또 다른 레이어를 수행할 수 있었습니다. 명령줄을 통해 제어합니다.

스크립트를 시작하기 전에 ls특정 긴 옵션(이중 하이픈)의 일반적인 기능이 무엇인지 알아보기로 결정했습니다. 나는 이러한 방법 중 몇 가지를 시도했지만 각각 어떤 면에서는 실패했습니다. 예를 들어, 실행 결과는 다음 ls --ignore-backups과 같습니다.

<dir> <username>$ ls --ignore-backups
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

위의 내용은 sh를 통해 실행하든 bash를 통해 실행하든 동일합니다(경험이 많은 사용자에게는 이것이 분명해야 한다는 것을 알고 있습니다).

이 시점에서 이것을 실행했는데 내 컴퓨터의 버전이 man ls단일 문자 옵션만 허용하는 것으로 나타났습니다.ls

질문

  • 내 스크립트를 범용으로 만들려면 어떻게 해야 합니까?
  • 일반적으로 기본 UNIX/Linux 명령에 명령줄 인수를 전달할 때 작업에 사용할 수 있는 표준 라이브러리가 있습니까?
  • UNIX/Linux 명령 라이브러리에 대한 기본적인 이해가 부족합니까?

참고: 저는 쉘 스크립팅을 처음 접했고 올바른 질문을 하고 있는지 잘 모르겠습니다.

답변1

lsOS X를 개발하고 대상으로 삼는 경우 Linux 매뉴얼 페이지보다는 OS X 매뉴얼 페이지를 살펴보고 거기에 설명된 옵션을 따르는 것이 좋습니다 .

또는 스크립트가 모든 Unix 구현에서 "깨지지 않게" 작동할 것으로 기대한다면 다소 불운한 것입니다. 모든 구현에서 찾을 수 있는 공통 옵션 세트가 있지만POSIX에 의해 정의됨물론 GNU 이중 하이픈 확장과 같은 많은 비표준 확장이 있지만 ls방언 및/또는 운영 체제에 따라 다를 수 있는 단일 문자 옵션도 있습니다. 특정 명령 구현에서 지원되는 옵션을 식별하는 일반적이고 이식 가능한 방법은 없습니다.

답변2

이식 가능한 스크립트 작성을 선호한다면 GNUismseg를 사용하지 마십시오 long options.

일반적으로 정의된 옵션이면 POSIX충분합니다. 대부분의 GNU 긴 옵션은 어디에서나 사용되는 공식 짧은 옵션의 별칭일 뿐입니다.

관련 정보