The Bash shell does tab completion executables, bash commands, and files/folders out of box. But it's completion can be extended to support even more types of completion including arguments for commands and things like hostnames through the use of programmable completion.
There is a package called bash-completion which includes a set of completions for various utilities. For example, for Subversion, if you type svn <tab><tab> (replacing svn rev<tab> it will complete it to svn revert. For ssh, if you type ssh <tab><tab> it will list all the hostnames and IP addresses it knows about (it looks like it uses a combination of what's in /etc/hosts and ~/.ssh/known_hosts). You can of course do ssh username@<tab><tab> if you are using a specific username.
Once the bash-completion package is installed, you can copy additional completion scripts to /etc/bash_completion.d and they will be automatically included. I did this with the Maven 2.x completion script.
Git has a completion script that is included in its standard distribution. Find out where you have Git installed, and source the script <i>GIT_INSTALL_DIR</i>/contrib/completion/git-completion.bash in your .bash_profile. For example, I have Git installed via the binary installer for OS X Leopard, and thus I added this line to my .bash_profile:
source /usr/local/git/contrib/completion/git-completion.bash
Note that this is independent of the bash-completion package described above and does not require it (since we are sourcing it directly).
Django also has bash completion script included in its distribution. Replacing $DJANGO_DIR where you have the release extracted (or checked out from version control):
source $DJANGO_DIR/extra/django_bash_completion
With this, you get completion for django-admin.py and manage.py. For manage.py you need to set execute permissions and run it as ./manage.py on the command line rather than python manage.py in order to get completion for it.
Update: VMWare Fusion 2.0.5 now supports Ubuntu 9.04. I recommend upgrading to 2.0.5 and installing the latest VMWare tools in your Ubuntu 9.04 guest, rather than following these instructions.
Update 2: Since upgrading to 2.0.5, I have been experiencing problems. Shutting down my Linux VM often causes VMWare Fusion to crash and once locked up my entire system, forcing me to hard boot and my Linux VM was corrupted in the process. I am reverting back to 2.0.4 for now, and have restored my Linux VM from a backup that I made before I upgraded to 2.0.5 which uses the VMWare Tools as modified in these instructions.
For an Ubuntu 9.04 (Jaunty Jackalope) guest, VMWare Tools does not work perfectly in VMWare Fusion 2.0.4 out-of-box (I had problems with mouse ungrab and window resizing, and the file sharing module doesn't even compile), but there is a way to get things working better. Someone at VMWare posted this blog which helped me get things working (along with the article and forum posting it linked to).
Here's what I did:
There have been reports that Ben Forta of Adobe has indicated that Flex Builder for Linux is "on hold."
There was a feature request created on Adobe's issue tracker to collect votes to show how many people want Flex Builder for Linux:
http://bugs.adobe.com/jira/browse/FB-19053
Vote on this issue if you want to see Flex Builder for Linux.
I upgraded a Ubuntu VM that I use in VMWare Fusion from 8.04 to 8.10 ("Intrepid Ibex") and was having mouse issues. On a single-click the mouse would act like it was initiating a drag-lock. I could work around it by using the keyboard or rapidly clicking the mouse until it sent a single-click. The solution was to configure the vmmouse driver in xorg.conf.
My xorg.conf mouse configuration originally looked like this:
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" EndSection
I changed the driver to vmmouse:
Section "InputDevice" Identifier "Configured Mouse" Driver "vmmouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" EndSection
I had a problem with Evince not being able to read PDF's. I was getting this error:
Unhandled MIME type: 'application/x-extension-pdf'
From what I read here there is a problem with files in /usr/share/mime not being readable, so I corrected that (sudo chmod -R +r /usr/share/mime) and it works now. I also deleted ~/.local/share/mime just in case.
---UPDATE 2: I no longer use JavaHL or Subclipse. I now use the pure-Java SVNKit (formerly known as JavaSVN) and Subversive. See my latest blog on the subject for details.
---UPDATE: The instructions in this entry are no longer necessary in Dapper, as they now have a JavaHL package. Just install "libsvn-javahl" then make sure you add the following to your Eclipse launcher parameters:
-vmargs -Djava.library.path=/usr/lib/jni
Note that the JavaHL library is stored in /usr/lib/jni, which is different than what happens with the custom package I had described in this entry.
Also, see comments below if you are having problems with this.
---
I've been considering switching from Debian sid/unstable to Ubuntu. I've been using Debian unstable for a few years now, and overall its been great. Apt is an excellent package manager. There are a huge number of packages available in the repository and I can almost always find what I'm looking for. Some of the packages are very bleeding edge, for example they had a PostgreSQL 8.1 package the day it went final. Though in other cases, usually when they are nearing a stable release, some packages are far from bleeding edge and very much trailing edge. There have been occasional broken packages which are fixed in a few days, especially when massive changes are in progress such as gcc or KDE upgrades. Lately things have been especially bad.
I just came across a CosmoPOD which is a free online desktop. It is a Linux system, running NoMachine NX Server, with KDE desktops (appears to be using kiosk mode which restricts what you can do, and it looks like no shell access). You have to download the NX client to remote access it. This is a great way to try out Linux, KDE, and apps like OpenOffice 2.0. It is also a good demo of NX, which is very fast.
Using rsync in combination with hard links, its very simple and easy to setup incremental backups in Linux (and UNIX). You end up with a full snapshot of each increment, accessible as if they were the original copy that was backed up.
Update 2005-09-27: I've unpinned all these packages. It turns out there was a package for 2.6.12 kernel, but they have changed the names used for the packages. For images, the package names start with "linux-image". For source the package names start with "linux-source". For headers, the package names start with "linux-headers". I've had some problems getting CUPS to work again, though, so I might try pinning gs-esp again...
Debian unstable has actually been a bit unstable lately. It normally isn't this way. I've had to pin a few packages to testing. Here is my /etc/apt/preferences: