# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- # ex: ts=8 sw=8 noet filetype=sh # # bash completion for screen # screen(1) completion # have screen && _screen() { local cur prev preprev COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} [ "$COMP_CWORD" -ge 2 ] && preprev=${COMP_WORDS[COMP_CWORD-2]} if [ "$preprev" = "-d" -o "$preprev" = "-D" -a "$prev" = "-r" -o \ "$prev" = "-R" ]; then # list all COMPREPLY=( $( command screen -ls | \ sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*$|\1|p' ) ) else case "$prev" in -[rR]) # list detached COMPREPLY=( $( command screen -ls | \ sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Detached.*$|\1|p' ) ) ;; -[dDx]) # list attached COMPREPLY=( $( command screen -ls | \ sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Attached.*$|\1|p' ) ) ;; -s) # shells COMPREPLY=( $( grep ^${cur:-[^#]} /etc/shells ) ) ;; *) ;; esac fi return 0 } && complete -F _screen $default screen