In the source directory under contrib/completions there is a bash completions directory. After sourcing that file you can then git <tab> <tab> and get all the git commands. You can also setup $PS1 to show you what branch is currently active with:
export PS1='[...]$(__git_ps1 "(%s)")[...]'
Make sure you use single quotes on the outside or it won’t work.
At some point I mistyped my google login and the username field always showed me the wrong one and the right one. Turns out you can prune out the form by arrowing down to the wrong entry and hitting shift+delete!
Here’s a nice trick to zero out a file that’s in use:
cat /dev/null > /path/to/file
The reason for this is that if you simply remove a file that’s in use by some process on the system, the disk space will not be released until the process closes the file or terminates.
By cating /dev/null and redirecting it to the file, it magically guts out the contents of the file while keeping the same inode. The process that has that file open will continue writing to it without knowing any better, and the disk space will be released.
Update: A simple test using python to keep a file handle open showed me that while the cat trick zeros out the file, python keeps track of the last position written to within the file. The next time the python process writes to the file, you’ll end up with null bytes at the beginning of the file.
In a standard sized shell, the dpkg command truncates the package name. That’s not very useful if you’re trying to remove a package and need the full name. A way around this is to use the COLUMNS environment variable, for example: