One of the commenters mentions the `say` command, which is super-useful, but they use it like so: `scp file some-host:~; say 'copy done'`, which will notify you even if the command fails. You should use && so the notification only happens on success, or conditionally say something else.
I use this constantly in deploy, etc, scripts so I can run my compile + rsync + deploy command in a terminal, background it, and go work on something else until the process finishes. I'd say it's generally useful for anything that takes longer than 10 seconds but less than an hour (after an hour you tend to forget what's going on; might as well just email yourself.)
I remember issues arising due to weird default permissions when I tried to use beep, or bell (don't remember if it was the command or character [ctrl+g]). I think festival or the command used to play the startup sound in ubuntu where the easiest alternatives, as getting beep/bell to work is weird.
Pre-Edit: /usr/bin/canberra-gtk-play , according to my Ubuntu's startup applications preferences.
My favorite trick is using DTerm[1] to hybridize graphical and textual interactions. More of a meta-Terminal trick, with a keyboard command it brings up a floating input for terminal entry with some intelligence to the context you initialize it from.
Common uses include starting up Terminal with a command instead of just carte blanche, using a globbed rm to clean a folder I'm viewing in Finder, using ls/grep to find files in a current Finder window, &c. &c.
A lot of key emacs bindings--C-a, C-e, C-n, C-p, C-f, C-b--work in any text field (even, say, the Hacker News comment box). But M-f and M-b (which are really useful since they get you forward/backwards a word instead of just a letter or a whole line) don't work. When I try to type option and then a letter, I get weird symbols:
Here's option-b: ∫
Here's option-f: ƒ
To get make M-f and M-b work, go to Preferences->Settings->Keyboard and check the "Use option as meta key" box.
It has nothing to do with Terminal.app, but I consider the ease of making those symbols one of the nice things about text entry on a Mac—I miss it sorely on Ubuntu (where I'm sure the equivalent exists, but (1) I don't know it and (2) it likely requires memorising code points). You can see which keystrokes will produce which funny symbols by turning on Keyboard Viewer (under Input Menu, which itself can be turned on from the International tab under System Preferences.app; or there's probably some way to invoke it directly).
The list is a bit old, but maybe it helps with some odd keys. Now that unicode is pretty common, I try to stick to the ellipsis for example… I have to say that the compose position for dieresis is a bit more logical (compose-" as opposed to macs alt-u), which is quite useful if I don't want to switch keyboard layouts when typing a bit of German (or write a lot about Motörhead and Queensrÿche).
X11 also has "level 3" support, which is straight-forward additional characters when pressing a certain key, as opposed to combining multiple key presses. Mac's alt key basically does both to a certain degree. The fact that it's turned on by default and the keyboard viewer makes it a lot more common usage in my experience.
1. Change your layout from "USA" to "USA International (AltGr dead keys)". Then use right-alt+key to make various special characters (you can look at what each character does at "Show Current Layout").
2. Enable the "compose key" -- I use the Menu key for this -- which is described at http://sivers.org/compose-key (it's simple to enable: Keyboard Preferences→Layouts→Options→Compose Key Position). Both of these are customizable, so you can add your own combinations if you want.
There are some other ways:
3. Ctrl-Shift-U in a GTK+ text input to enter a code point, as you said.
4. Alternative input methods that let you type special characters in in various other ways, such as LaTeX names, if you prefer that.
I use Visor, which is a quake-style dropdown terminal plugin for Terminal. It takes up a Terminal window, but doesn't interfere with other such windows.
There's a plugin for Terminal that implements copy-on-select, which I like, but Visor has it bundled, so I'm not sure what it's called, offhand.
For uninstalling things, pkgutil is a useful tool to know about. You can list all installed packages with pkgutil --pkgs and uninstall them by doing pkgutil --unlink pkgid
I wondered for a long time how to uninstall packages from OS X until I discovered pkgutil.
Possibly but at the same time most people who will be using the terminal at all on Mac are the same people who have been using the terminal on linux. For people that have been using the terminal on linux Bash is more user friendly (it is what they already know).
By that logic, windows is more user friendly then OSX because it is what people already know.
Most of the stuff you would use in bash just works in fish as well, except that fish gives you nice help information when tabcompleting, a better command history that you can use filters on, colour feedback (red = invalid command, green is a-okay) and lots more.
Sure, some people will always stick to what they know, but that does not say as much about user friendliness as it does about resistance to change.
An interesting github project I recently discovered on github has some nice fish extensions, it's called fish-nuggets and you can find it here: http://github.com/zmalltalker/fish-nuggets/
See also zsh, another great shell that gets little attention.
Recent versions of zsh (though not the version that ships with OS X) have a feature called vcs_info that will pull information from git, svn, cvs, hg, darcs, bzr (& more) for use in your prompt.
http://superuser.com/questions/52483/terminal-tips-and-trick... doesn't work for me; it seems I can hold ESC for arbitrarily long without evoking Terminal's interest. I'm using the Vi keymappings (set -o vi), so I guess that's no surprise; but is there a Vi equivalent?
Ah, silly me. Somehow I read “only built-ins” instead of “including built-ins”, and so thought that it was something more than (or at least different from) ordinary tab-completion.
I use this constantly in deploy, etc, scripts so I can run my compile + rsync + deploy command in a terminal, background it, and go work on something else until the process finishes. I'd say it's generally useful for anything that takes longer than 10 seconds but less than an hour (after an hour you tend to forget what's going on; might as well just email yourself.)
Festival (http://www.cstr.ed.ac.uk/projects/festival/) is something similar for *NIX users.