Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Another useful bash thing: !! (which substitutes the last command you entered)

cat /really/long/path/to/something/only/readable/by/root

cat: Permission denied (goddamnit)

sudo !!



Oh yeah, I sudo bang-bang all the time (it's in other shells, too, zsh for example). I am also fond of !$, which is the object of your last command - lots of times I will ls a file to see the timestamp or confirm it's there; and then want to open it / edit it / rm it, which just looks like

$ ls /long/path/to/file.ext

$ less !$


What if you need to run a third version of the command, or a version that involves deletions, e.g. "less /really/long/path/to/..."?

  bash-3.2$ less /var/log/authd.log.0.gz 
  "/var/log/authd.log.0.gz" may be a binary file.  See it anyway? 
  bash-3.2$ 
I type: control-P control-A meta-D zcat control-E | SPACE less

  bash-3.2$ zcat /var/log/authd.log.0.gz | less
On the OS X terminal, you have to configure it to treat option as meta before the meta-D above will work. I forget whether common Linux terminals require such configuration. (Edit: zless would work just as well here, and on Linux "less" appears to basically have the functionality of zless.)


With set -o vi:

    <ESC> k cw zcat <ESC> A <SPACE> | <SPACE> less <CR>
Very natural for any Vi user: go up a "line", change the first word, then append.


Yes, that's a good one :)

There are zillions more such that can be done in Unix, of course, if one puts one's mind to it and experiments, even without spending a lot of time. Another simple one I use some is to define some environment variables to the value of long directory names to which I need to go often as part of some project. Then I can just do:

cd $short_name_for_that_dir

A shell alias can also be used instead.


Another one I love is that both bash & zsh can edit the current command in $EDITOR. In bash, it's ^X^E by default, and in zsh, I think you have to bind it. (it's edit-command-line, which I strangely can't find in man zshzle.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: