만들고 배우기 bash 탭 보완, mix 명령을 보완

5952 단어 mixElixirBash
"mix 명령의 보완이 효과가 있으면 좋겠다"라고 생각한 적 없습니까?
bash의 Programmable Completion으로 만들 수 있는 것 같습니다.

이번에는 그것을 만들었으므로 소개합니다.

환경



bash-completion이 설치되어 있다고 가정합니다.
설치되어 있지 않은 경우 다음과 같이 설치합니다.
# debian系
$ sudo apt install bash-completion

만드는 방법



이하가 매우 상세하므로 코코에서는 해설하지 않습니다.
  • Bash 탭 보완 자작 입문

  • compgent 및 complete 명령은
  • 【 complete 】명령――보완의 방법을 지정한다(bash)
  • 【 compgen 】 커맨드――bash의 보완 후보를 생성/사용할 수 있는 커멘드명을 일람 표시한다

  • 이미 만들어진 구현



    검색할 때 동일한 목적의 여러 구현이있었습니다.
    촉촉하고 빨리 사용하고 싶은 경우는 이것들로부터 선택해 사용하는 것도 있다고 생각합니다.
  • htps : // 기주 b. 코 m / 응 b
  • htps : // 기주 b. 코 m / da xj / mi x_ 오토코 mp ぇ
  • htps : // 기주 b. 이 m / bj 네 d / 에어 r_ 어서_이 mp ぇ
  • htps : //민은 준. 코 m / 2016 / 12 / 23 / 바 sh-ko mp ぇ 치온 - sc pt-f r- x /

  • 직접 만들어 보았습니다.



    이미 만들어진 것을 사용하는 것은 간단하다고 생각했지만,
    bash의 탭 보완은 스스로 만들 수 있으면 그 밖에도 응용할 수 있을 것 같았기 때문에 만들어 보았습니다.

    다음을 ~/.bash_completion으로 저장하고 terminal을 다시 열면 사용할 수 있습니다.
    ※디렉토리 이동 후의 1발째가 조금도 붙습니다.
    _mix()
    {
      local cur prev words cword split
      _init_completion || return
      type mix 1> /dev/null || return
    
      make_opts(){
        _mix_opts=""
        readarray -t _mix_task_list < <(mix help)
    
        local task
        for task in "${_mix_task_list[@]}"; do
          task=$(echo "$task" | awk '{print $2}')
          # ignore "mix" self and "iex -S mix"
          case $task in
            "#"|"-S")
            ;;
            *)
              _mix_opts+="$task "
            ;;
          esac
        done
      }
    
      local current_pwd=$(pwd)
      if [[ -z "$_mix_task_list" ]] || [[ $_mix_last_pwd != $current_pwd ]]; then
        make_opts
      fi
      _mix_last_pwd=$current_pwd
    
      if [[ $prev == mix ]] || [[ $prev == help ]]; then
        COMPREPLY=( $(compgen -W "$_mix_opts" -- "$cur") )
      fi
    } && complete -F _mix mix
    



    bash가 전혀 쓸 수 없어서 힘들었습니다
    "좋아요"잘 부탁드립니다.

    좋은 웹페이지 즐겨찾기