For Bash you can use Bash Completion feature. Install the bash_completion package from your distro. There are good chances that you will have completion for /etc/init.d scripts already. If not, you can read how to make a completion yourself around the net. Here is one link.
Another way is to use a predefined functions like these:
if [[ ${EUID} == 0 ]] ; then # available only for root user
# rc scripts managing
rc() { /etc/init.d/$*; }
complete -o filenames -W "$(cd /etc/init.d/ && echo *)" rc
rc-start() { for arg in $*; do rc $arg start; done }
rc-restart() { for arg in $*; do rc $arg restart; done }
rc-stop() { for arg in $*; do rc $arg stop; done }
rc-status() { for arg in $*; do rc $arg status; done }
fi
Here you can use the rc command to call the init.d scripts like: rc apache2 start. This will translate to /etc/init.d/apache2 start. The command also have autocompletion for the files in your init.d directory, i.e. when you type: rc apa[TAB] it will autocomplete to rc apache2.
The other short commands are for convenience: rc-start apache2 will call rc apache2 start and therefore /etc/init.d/apache2 start
Edit: you can change the /etc/init.d path to /etc/rc.d if your distro is using rc.d for services.