# bash completion for strace # $Id: strace 389 2007-05-22 20:50:56Z guillomovitch $ _strace() { local cur prev offset i syscalls # check if we're stil completing strace offset=0 for (( i=1; i <= COMP_CWORD; i++ )); do case ${COMP_WORDS[$i]} in -@(o|e|p)) i=$((i+1)) continue ;; -*) continue ;; esac offset=$i break done if [ $offset -gt 0 ]; then _command_offset $offset else COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} case $prev in -e) if [[ "$cur" == *=* ]]; then prev=${cur/=*/} cur=${cur/*=/} syscalls=$(awk '/^#define __NR/ {print $2}' \ /usr/include/asm/unistd.h | sed -e \ 's/__NR_//') if [ "$prev" = 'trace' ]; then COMPREPLY=( $( compgen -W "$syscalls \ file process network signal ipc desc \ all none" -- $cur) ) else COMPREPLY=( $( compgen -W "$syscalls \ all none" -- $cur) ) fi else COMPREPLY=( $( compgen -W 'trace= abbrev= \ verbose= raw= signal= read= write=' \ -- $cur ) ) fi return 0 ;; -o) _filedir return 0 ;; -p) _pids return 0 ;; esac if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W '-c -d -f -ff -F -h -i -q \ -r -t -tt -ttt -T -v -V -x -xx -a -e -o -O -p \ -s -S -u -E' -- $cur ) ) else COMPREPLY=( $( compgen -c -- $cur ) ) fi fi } complete -F _strace strace