Hello, I wrote a bash completion script for lpr (lp) and lprm commands.
Best regards, Marcin Szamotulski
# lpr(1) and lprm(1) completions by Marcin Szamotulski <msza...@gmail.com> March 2011 # This script uses two functions from 'base': _known_hosts_real and _user_at_host. # to complete -H and -U switches of the lpr command (-h and -U of lprm). _lpr() { local cur prev opts comp_opts configfile COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" comp_opts="+o default +o filenames" if [[ ${prev} == "=" ]];then prev="${COMP_WORDS[COMP_CWORD-2]}" fi if [[ ${cur} == "-" ]];then opts="-E -H -C -T -J -P -U -# -h -l -m -o -p -q -r" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) else case ${prev} in -o) opts="scaling= media= sides= Collate= orientation-requested= job-sheets= job-hold-until= page-ranges= page-set= number-up= page-border= number-up-layout= outputorder= cpi= lpi= ppi= columns= page-left= page-right= page-top= page-bottom= position= natural-scaling= hue= saturation= penwidth= landscape mirror raw fitplot prettyprint nowrap blackplot";; sides) opts="two-sided-long-edge two-sided-short-edge one-sided";; Collate) opts="True False";; job-hold-until) opts="indefinite day-time night second-shift third-shift weekend";; job-sheets) opts="none classified confidential secret standard topsecret unclassified";; media) opts="Letter Legal A4 COM10 DL Transparency Upper Lower MultiPurpose LargeCapacity Custom\.";; number-up-layout) opts="btlr btrl lrbt lrtb rlbt rltb tblr tbrl";; outputorder) opts="normal reverse";; page-border) opts="double none double-thick single single-thick";; page-set) opts="odd even";; position) opts="center top left right top-left top-right bottom bottom-left bottom-right";; orientation-requested) opts="3 4 5 6";; -P) opts=`lpstat -a | awk '{print $1}'`;; -i) opts=`lpstat -R | awk '{print $2}' | sed 's/^[a-zA-Z0-9\-]*\-//'`;; -H) comp_opts="no compreply" _known_hosts_real "$cur";; -U) comp_opts="no compreply" _user_at_host;; -C) comp_opts="-o filenames";; -J) comp_opts="-o filenames";; -T) comp_opts="-o filenames";; -#) comp_opts="-o filenames";; *) opts="" if [[ ${cur} != "=" ]];then compopt +o filenames _filedir comp_opts="no compreply" else return 0 fi;; esac fi [[ ${cur} == "=" ]] && cur="" if [[ ${comp_opts} != "no compreply" ]];then if [[ ${comp_opts} != "" ]];then compopt ${comp_opts} fi COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ); fi # For options from opt_array do not append a white space after completin opt_array=("scaling media sides Collate orientation-requested job-sheets job-hold-until page-ranges page-set number-up page-border number-up-layout outputorder cpi lpi ppi columns page-left page-right page-top page-bottom position natural-scaling hue saturation penwidth") nospace=0 for i in ${COMPREPLY};do for j in ${opt_array};do if [[ $i =~ $j ]];then nospace=1; fi done done [[ $nospace == 1 ]] && compopt -o nospace return 0; } complete -F _lpr lpr lp _lprm() { local cur prev opts configfile COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" [[ ${prev} == "=" ]] && prev="${COMP_WORDS[COMP_CWORD-2]}" if [[ ${cur} == "-" ]];then opts="-E -P -U -h" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) else case ${prev} in -P) opts=`lpstat -a | awk '{print $1}'` COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) );; -h) _known_hosts_real "$cur";; -U) _user_at_host;; *) opts=`lpstat -R | awk '{print $2}' | sed 's/.*-\([0-9\-]*\)$/\1/'` COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) );; esac fi return 0; } complete -F _lprm lprm
_______________________________________________ Bash-completion-devel mailing list Bash-completion-devel@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/bash-completion-devel