앨리어싱 명령 옵션


0

명령 옵션의 별칭을 지정할 수있는 방법이 있습니까? 예를 들어, 나는 종종 옵션 -mindepth-maxdepthwith find를 사용하지만 각각 9 자 정도로 길고 짧은 형식이 없습니다. -mnand과 같은 것을 입력하기에 더 빠른 별칭을 지정하고 싶습니다 -mx. 물론 항상 새로운 옵션 이름으로 사용자 정의 바이너리를 만들 수는 있지만이 동작을 제공하는 셸 내장 / 유틸리티에 관심이 있습니다 ( alias명령 별칭 지정 방법과 유사 ).


옵션을 신중하게 구문 분석하는 함수 래퍼라고 생각합니다. `alias rm = "rm -i"에 의존하지 않는 것처럼 여기서는 경고하지 않겠다.
Jeff Schaller

답변:


0

쉘 함수 또는 스크립트를 작성하십시오. 유일한 문제는 코너 케이스에 얼마나 관심이 있는지입니다. 전혀 신경 쓰지 않으면

 #!/bin/bash
 args=()
 while (($# > 0))
 do
      case "$1" in
      ("-mn") args=("${args[@]}" "-mindepth") ;;
      ("-mx") args=("${args[@]}" "-maxdepth") ;;
      (*) args=("${args[@]}" "$1") ;;
      esac
      shift
 done
 exec find "${args[@]}"

조금 더 신경 쓴다면

      ("-mn") args=("${args[@]}" "-mindepth" "$2") ; shift ;;

매개 변수를 사용하는 다른 모든 찾기 옵션에 대해 유사한 경우를 추가하여 변환하지 마십시오

  find / -name -mn -print

으로

  find / -name -mindepth -print

find 또는보다 짧은 옵션이 필요할 수 find있으므로이 스크립트를 호출하지 마십시오 . 찾은 전화를하면 작동하게 할 수 있지만 주석에서 언급했듯이 표준 프로그램의 동작을 변경하는 것은 아닙니다.fndmyfind


1
배열에 추가하려면을 사용할 수 있습니다 args+=('-mindepth').
벤자민 W.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.