KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Say I have a command named "foo" that takes one argument (either "encrypt" or "decrypt") and then a list of files. I want to write a bash completion script that helps with the first argument and then enables standard file completion for the others. The closest I've been able to come is this: complete -F _foo foo function _foo() { local cmds cur if [ $COMP_CWORD -eq 1 ] then cur="${COMP_WORDS[1]}" cmds=("encrypt decrypt") COMPREPLY=($(compgen -W "${cmds}" -- ${cur}) ) else COMPREPLY=($(compgen -f ${COMP_WORDS[${COMP_CWORD}]} ) ) fi } This does the first argument correctly and will chose a filename from the current directory for the subsequent ones. But say the current directory contains a subdirectory bar that contains a file baz.txt. After typing ba-TAB-TAB, completion results in "bar " (space after the "r") and is ready to choose the next argument. What I want is the standard bash completion, where the result is "bar/" (no space after the slash), ready to choose a file in the subdirectory. Is there any way to get that?
Tags (comma-separated)
Save Edits
Cancel