簡體   English   中英

自定義bash完成的提示

[英]Hints for custom bash completion

我正在開發一個自定義bash完成命令,以從調度系統(LSF,PBS,SLURM)捕獲作業ID。 我已經有了基本功能,但是現在我想用運行zsh時看到的“提示”擴展它。

例如,當我在下面的grep示例中按TAB時,我得到:

grep -<TAB>
     --after-context          -A           -- specify lines of trailing context
     --basic-regexp           -G           -- use basic regular expression
     --before-context         -B           -- specify lines of leading context
...

--之后的第三列是我想添加到自己的bash補全中的內容。 正確的技術術語是什么? 提示? compgen是否提供執行此功能的功能?

我附上我當前的工作示例,該示例僅提供ID。 該示例使用LSF。

# LSF Job ID completion
function _mycurrentjobs()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "$(bjobs -noheader -u $USER -o JOBID)" -- $cur))
    return 0
}
complete -F _mycurrentjobs bkill bjobs bstatus bpeek bstop bresume

提供ID和所需提示的命令是: bjobs -noheader -u $USER -o "JOBID JOB_NAME"

在回顧了有關主機完成bash自動完成的類似帖子之后:添加了可能完成的描述,我或多或少地得到了正確的行為。 我正在使用-作為作業ID查詢命令中的定界符

function _mycurrentjobs()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local OLDIFS="$IFS"
    local IFS=$'\n'
    COMPREPLY=( $(compgen -W "$(bjobs -noheader -u $USER \
        -o "JOBID JOB_NAME delimiter='-'")" -- $cur))
    IFS="$OLDIFS"
    if [[ ${#COMPREPLY[*]} -eq 1 ]]; then   #Only one completion
        COMPREPLY=( ${COMPREPLY[0]%%-*} )   #Remove the separator and everything after
    fi
    return 0
}
complete -F _mycurrentjobs bkill bjobs bstatus bpeek bstop bresume

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM