As well as the SWC presentations themselves, it was good to get tips from fellow programmers as well as "UNIX and Perl to the Rescue!: A Field Guide for the Life Sciences (and Other Data-rich Pursuits)", which I brought along for some browsing. Here is half a dozen random things that I picked up over the two days...
1. Useful grep flags. I've used
grep to pull out matches from text files a fair amount and was familiar with a few of the flags that I use a lot:I learnt a few more useful ones, though:-i= case-insensitive search
-v= inverse search
-A n= return n lines after match
-B n= return n lines before match
2. Useful ls flags.-w= match whole words only
-n= show line numbers
--color= highlight matches in colour
-r= search subdirectories (recursive)
ls is another must-have part of the UNIX users toolkit. There were still a few useful flags with which I was unfamiliar and am likely to use in future, though:Along with my old favourites, of course:-G= colour-code directory contents
-F= appends / to directories
-R= recursive ls including subdirectory contents
-1= one entry per line
-a= show all files including hidden files
3. Catching the standard error and standard output. I've seen this a few times but for some reason this was the first time it really sunk in. Most UNIX users will be familiar with redirecting the standard output from a command into a file using-l= "long" mode (more info)
-r= reverse sort
-t= sort by time
-S= sort by size
-h= user-friendly file sizes
> file (or >> to append). Catching the standard error is less obvious/common. This can be done using 2> to catch the stderr alone, or &> to catch both stdout and stderr at the same time. If you want to redirect them both into different files, do something like this:[cmd] 2> error.txt > stdout.txt4. Navigating the terminal. This one actually came from "UNIX and Perl to the Rescue" but I discovered it at the boot camp:
UsingCtrl+a= move to start of line
Ctrl+e= move to end of line
Ctrl+w= delete previous word
Ctrl+l= clear screen (clearworks too)
Ctrl+r= search through previous commands one letter at a time (this was an SWC revelation)
Ctrl+a and Ctrl+e seems to work in a number of other Mac editors too - including this blogger HTML window! If you are a Mac user, just make sure that you don't use cmd+w by mistake - this will close the current terminal window with much wailing and gnashing of teeth!5. Reversing Python strings. In the past, I have reversed a python string by converting into a list, using the
list.reverse() method and then string.join() to convert it back. But there is a better way!string[::-1]range() method! (string[::-1] translates as string[start=end:end=start:step=-1].) Now I am wondering where else in my code I can use this knowledge!6. Changing the command prompt to $. Sometimes, the command prompt is too long (or the terminal window too narrow) so that almost every command wraps around in an annoying fashion. To replace with a simple $ character, just type:
PS1="\s"
PS1="\$ "
pwd gives you the full path to the working directory.There were more but I think that's enough for now! If this is the sort of thing that floats your boat, you can find useful stuff like this plus a whole bunch of lessons at the Software Carpentry website:

If you get the chance to attend a boot camp yourself, my advice is: do!
 
 
Nice collection of the many things we learned during the past two days, some of those were also new for me and are really useful. It seems I usually stick to the reduced set of options I have readily available in mind, making strange combinations to make it work, but there were a couple of tips there that I have immediately and effortlessly internalized (the shortcut is my usual friend to search bash history but I've been doing 'history' followed by '!number_from_history' since the Monday session).
ReplyDeleteYes, the old !history trick is a good one!
DeleteCtrl-U and Ctrl-K for editing (cut from start to cursor, or cursor to end) and Ctrl-R for recursive search through the history are ones I use a lot.
ReplyDeleteThanks for those extra tips. That's "cut" as in "delete" rather than "cut to clipboard", right?
DeleteHi Richard,
ReplyDeleteGlad you found it useful --- you might find Haddock and Dunn's "Practical Computing for Biologists" useful as well (http://www.amazon.com/Practical-Computing-Biologists-Steven-Haddock/dp/0878933913/). And if you're interested in helping us teach future boot camps, please give us a shout (gvwilson@software-carpentry.org).
Thanks again,
Greg Wilson
Mozilla Foundation / Software Carpentry
I think one of my students has that book. Looks useful. When I move to Oz later this year, I am probably going to make the Mac move and might invest in a copy. Could be interested in helping run a boot camp Down Under!
DeleteRecommendation: Don't go down the PERL rabbit hole.... That train has left the station!
ReplyDeleteDon't worry, I cut my teeth on Perl but I'm a Python man through and through now!
DeleteThanks for sharing a six useful things and shortcut keys about camp software.
ReplyDelete