рдХрдорд╛рдВрдб рд▓рд╛рдЗрди, рджреЗрд╢реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдмреИрд╢ рд╕рдорд╛рдкреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рднрд╛рдЧ реи

рд╣рд╛рдм рдкрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдБ рд▓рд┐рдЦрд╛ рдерд╛ , рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдВрдд рдореЗрдВ рдЦреБрдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдврд╝ рд╕рд╛рд▓ рдерд╛, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рд╣рд╛рде рдореЗрд░реА рдирд┐рд░рдВрддрд░рддрд╛ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдореНрдорд╛рдирдЬрдирдХ рдХрд░реНрддрд╡реНрдп рдХреЛ рд╣реЗрдмреНрд░рд╛рдЗрдЬрд╝рд░ рдЗрдиреНрдлреЗрдВрдЯреА рджреНрд╡рд╛рд░рд╛ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рдЙрдирдХреА рдУрд░ рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред



рдореИрдВ рдЙрд╕ рдореЙрдбрд▓ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рдСрдЯреЛ-рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦреА рдереАрдВред рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐ рд╣реИ:



рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддреАрди рдЙрдк-рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдЗрди рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдХрд╛рд░реНрдп, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реЗрд╖ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдк-рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдЗрддрд┐рд╣рд╛рд╕ рдЖрдпрд╛рдд рдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдЭрдВрдбреЗ рдХреЗ рдиреАрдЪреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдкрд╛рд░рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдорджрдж рдХрд╛рдо, рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдорджрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддреА рд╣реИред

рдЕрдм рдХреИрд╕реЗ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрд╡рдд: рдкреВрд░реНрдг рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмреИрд╢ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рд╕рдВрднрд╡ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди (рдЪрд▓реЛ рдЗрд╕реЗ _my_command рдХрд╣рддреЗ рд╣реИрдВ) рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИ) рдЬрд╛рджреВ рдкреВрд░реНрдг рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде:

complete -F _my_command script

рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрд▓рдмреНрдз рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЖрдк рдСрдЯреЛ-рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЪрд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрджрдореА рд╕реЗ рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

COMPREPLY
рдпрд╣ рдПрдХ рдРрд╕рд╛ рдРрд░реЗ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдмреИрд╢ рдХреЛ рд╕рдВрднрд╡ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

COMP_WORDS
рдпрд╣ рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рддрд░реНрдХ рд╣реИрдВред рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ, рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

COMP_CWORD
рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рддрд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдЕрдм рдЖрдЗрдП рдЗрди рдЪрд░реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЗрдирдкреБрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдкрд╣рд▓рд╛ рддрд░реНрдХ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреВрд░рдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
  _my_command(){ # ,      COMPREPLY=() #    ,   ,    . cur="${COMP_WORDS[COMP_CWORD]}" #    subcommands_1="work history help" #    - .     . if [[ ${COMP_CWORD} == 1 ]] ; then #   ,     COMPREPLY=( $(compgen -W "${subcommands_1}" -- ${cur}) ) #some magic return 0 #COMPREPLY ,   fi } 


рдпрджрд┐ рдЕрдм рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ред/complete.sh, рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдмреИрд╢ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред ./ рдЕрдкреВрд░реНрдг рд╢, рдФрд░ "рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реБрдП, рдЯреИрдм 2 рдмрд╛рд░ рджрдмрд╛рдПрдВ, рдмреИрд╢ рд╣рдореЗрдВ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:
 $ script help history work 

рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдмрдХреЛрдореИрдВрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП wo рдФрд░ рдЯреИрдм рджрдмрд╛рдПрдВ, рддреЛ рдСрдЯреЛ-рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдЬрд╛рджреВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН

  COMPREPLY=( $(compgen -W "${subcommands_1}" -- ${cur}) ) #some magic 


рдпрд╣рд╛рдВ рд╣рдо рдмрд┐рд▓реНрдЯ-рдЗрди bash compgen рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реМрдЯреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рднрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рддрд░реНрдХ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддрд░реНрдХ рдХреЗ рднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ, рдФрд░ рдЙрди рдорд╛рдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ рдЬрд┐рдирдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдП рдЧрдП рднрд╛рдЧ рдХреЛ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрд░реНрдХ рдХрд╛ рдЗрдирдкреБрдЯ рд╣рд┐рд╕реНрд╕рд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджреЛрдВ рдХреА рджреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди (-W рдзреНрд╡рдЬ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд) рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, subcommands_1 = "рдХрд╛рд░реНрдп рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╣рд╛рдпрддрд╛") рд╕реЗ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╣рд╛рдБ рдЖрдк рдЕрдиреНрдп рдЭрдВрдбреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, -d - рдФрд░ рдлрд┐рд░ compgen рдорд╢реАрди рдкрд░ рдореМрдЬреВрджрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреВрд░рдХ рд╣реЛрдЧрд╛, рдпрд╛ -f - рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкреВрд░рдХ рд╣реЛрдЧрд╛ред

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:
 $ compgen -W "qwerty qweasd asdfgh" -- qwe qwerty qweasd 


рддрджрдиреБрд╕рд╛рд░, рдСрдЯреЛ-рдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреА рд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрд┐рдпрд╛рдБ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд╛рде рдореЗрдВ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ (рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП) рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ "$ {HOME} / рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕" рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
COMPREPLY=($(compgen -W "`ls ${HOME}/projects`" -- ${cur}))

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ: рд╣рдо рдореМрдЬреВрджрд╛ рдПрдХ рдХреЗ рдкрд╣рд▓реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рд╣рдо рд╡рд░реНрддрдорд╛рди рддрд░реНрдХ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрд╡реЗрджрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреИрд╢ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡реЗрджрдХ рдЕрдХреЗрд▓рд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдорд╛рд░реЗрдВ рдФрд░ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдВред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ - рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдХреЗрддрд┐рдд рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдСрдЯреЛ-рд╕рдорд╛рдкрди рдХрд╛ рдореЗрд░рд╛ рдЕрдирд╛рдбрд╝реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:

 _my_command() { COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" subcommands_1="work history help" #    subcommands_history="import export" #   history if [[ ${COMP_CWORD} == 1 ]] ; then #         COMPREPLY=( $(compgen -W "${subcommands_1}" -- ${cur}) ) return 0 fi subcmd_1="${COMP_WORDS[1]}" #       ,        case "${subcmd_1}" in # ,      work) COMPREPLY=() #     return 0 ;; history) if [[ ${COMP_CWORD} == 2 ]] ; then # script history;   import  export COMPREPLY=( $(compgen -W "${subcommands_history}" -- ${cur}) ) return 0 fi #     ,  :    subcmd_2="${COMP_WORDS[2]}" if [[ ${COMP_CWORD} == 3 ]] ; then #        . COMPREPLY=($(compgen -W "`ls ${HOME}/projects`" -- ${cur})) return 0 fi case "${subcmd_2}" in #        .     ,      -    ,  -     . import) case "${COMP_WORDS[COMP_CWORD-1]}" in -src) COMPREPLY=($(compgen -d -- ${cur})) #      return 0 ;; -file) COMPREPLY=($(compgen -f -- ${cur})) #     return 0 ;; *) COMPREPLY=($(compgen -W "-src -file" -- ${cur})) #   return 0 ;; esac ;; export) #     -o,    -      ,  ,  -     if [[ ${COMP_WORDS[COMP_CWORD-1]} == "-o" ]] ; then COMPREPLY=($(compgen -f -- ${cur})) return 0 fi COMPREPLY=($(compgen -W "-o" -- ${cur})) return 0 ;; *) ;; esac ;; help) #    help      ,   . COMPREPLY=( $(compgen -W "${subcommands_1}" -- ${cur})) return 0 ;; esac return 0 } complete -F _my_command script 


рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд░рдВрддрд░ рдЖрдзрд╛рд░ рдкрд░ рдмреИрд╢ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ред рдпрд╣ рдпрд╛ рддреЛ (рдЕрдирд╛рдбрд╝реА) рд╣рдорд╛рд░реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ .bashrc, рдпрд╛ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рд╣реИ) :) / / bash_completion рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рд▓рд┐рдЦрддреЗ рд╣реБрдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ /etc/bash_completion.d рдореЗрдВ рдбрд╛рд▓рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдБ рд╕реЗ / рдЖрджрд┐ / bash_completion рд╣реБрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯред

рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдлреЗрдВрдЯреА рдХреЗ рдХрд░реНрдо рдореЗрдВ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЫреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП

Source: https://habr.com/ru/post/In115886/


All Articles