Journaling on estrip is easy and free. sign up here

Tinypliny's Journal

tinypliny
My Podcast Link

07/16/2011 13:38 #54713

Greppetty Grep
Category: linux
Another set of commands I need to burn into my brain:

Find all files in the current directory that contain blah in their file names
  • ls |grep blah

Wildcards in grep: all files that start with a b and end in a g with ONLY one character in between
  • grep b.g file

The asterisk * in a grep command stands for repetition. .* means "repeat any character any number of times"
  • grep "b.*g" file

Escaping characters. Preceding backslashes either remove an implied special meaning from a character or add special meaning to a "non-special" character
  • grep 'hello\.gif' file

An expression consisting of a character followed by an escaped question mark matches one or zero instances of that character.
  • bugg\?y matches bugy , buggy but not bugggy

An expression surrounded by "escaped parentheses" is treated as a single character.
  • Fred\(eric\)\? Smith matches Fred Smith or Frederic Smith

Match a selection of characters, use []
  • [Hh]ello matches lines containing hello or Hello
  • [A-Ca-k] is the same as [ABCabcdefghijk]
  • [[:alpha:]] is the same as [a-zA-Z]
  • [[:upper:]] is the same as [A-Z]
  • [[:lower:]] is the same as [a-z]
  • [[:digit:]] is the same as [0-9]
  • [[:alnum:]] is the same as [0-9a-zA-Z]
  • [[:space:]] matches any white space including tabs

The [] may be used to search for non-matches. This is done by putting a carat ^ as the first character inside the square brackets.
  • grep "([^()]*)a"

matches (hello)a, (aksjdhaksj d ka)a But not
x=(y+2(x+1))a (I don't get this part, does it match (y+2(x+1))a?)

This matches phone numbers, possibly containing a dash or whitespace in the middle.
  • grep "[[:digit:]]\{3\}[ -]\?[[:digit:]]\{4\}" file

The $ character matches the end of the line. The ^ character matches the beginning of the line.
  • grep "^From.*mscharmi" /var/spool/mail/elflord
  • grep "^[[:space:]]*hello[[:space:]]*$" file

The expression consisting of two expressions seperated by the or operator \| matches lines containing either of those two expressions.
  • grep "I am a \(cat\|dog\)" matches lines containing the string "I am a cat" or the string "I am a dog"

The expression \n where n is a number, matches the contents of the n'th set of parentheses in the expression
"Mr \(dog\|cat\) came home to Mrs \1 and they went to visit Mr \(dog\|cat\) and Mrs \2 to discuss the meaning of life matches the respective dog/cat pairs

The following characters are considered special and need to be "escaped":
? \ . [ ] ^ $

A $ sign loses its meaning if characters follow it and the carat ^ loses its meaning if other characters precede it.

Square brackets behave a little differently. The rules for square brackets go as follows:
  1. A closing square bracket loses its special meaning if placed first in a list. for example []12] matches ] , 1, or 2.
  2. A dash - loses it's usual meaning inside lists if it is placed last.
  3. A carat ^ loses it's special meaning if it is not placed first
  4. Most special characters lose their meaning inside square brackets
  • grep "$HOME" file searches file for the name of your home directory, while
  • grep '$HOME' file searches for the string $HOME


Find with specific strings on filenames
  • find . -name "*.jpg"
  • find . -iname "*.jpg" #case insenstive version

Look for specific filetypes
  • find . -type d #directories
  • find . -type f #files
  • find . -type l #links (wth?)
  • find . -type s #sockets (wth?)

Find by size:
  • find ~/Movies/ -size +1024M

Find by last modified time (last 1 day)
  • find /etc/ -user root -mtime 1
Arguments
-atime: when the file was last accessed
-ctime: when the file's permissions were last changed
-mtime: when the file's data was last modified
-amin: when (in minutes) the file was last accessed
-cmin: when (in minutes) the file's permissions were last changed
-mmin: when (in minutes) the file's data was last modified

!
exclude everything that comes after this...

Collect files that are not owned by valid users and delete them
  • find / -nouser -print0 | xargs -0 rm

Clean the images off of your *nix desktop
  • find ~/Desktop -name "*.jpg" -o -name "*.gif" -o -name "*.png" -print0 | xargs -0 mv --target-directory ~/Pictures
  • The -print0 option terminates results with a null character instead of the default newline, making it cleaner and less likely to balk in many cases

Correct the permissions on your web directory
  • find /your/webdir/ -type d -print0 | xargs -0 chmod 755
  • find /your/webdir -type f | xargs chmod 644

Show a list of files in /etc that have been modified since last month
  • find /etc -mtime -30


Refs (~completely taken with gratitude from)

07/16/2011 11:37 #54712

We are the Custard Pie Appreciation Consortium!
Category: music
This gem by The Kinks is SO (e:matthew). haha

We are the Skyscraper Condemnation Affiliates
God save Tudor houses, antique tables, and billiards!



(But I love the Kate Rusby version a lot!)


She infuses something indescribably rustic and precise into the classic.

The already super-awesome Classic:


07/16/2011 10:32 #54711

Candara and Droid Sans
Category: i-tech
Welcome to my Candara and Droid Sans Obsession. I am completely sold on these fonts.
Candara
image

Droid Sans
image

Love the way the letters curve, everything about these fonts is so perfect.

Candara is native to windows and droid sans is native to Android. But I want them both on both of my windows and linux systems. So here goes:

Installing both fonts on Linux.
From:
  • Copy the fonts in their own folders under /usr/share/fonts/truetype
  • Make these fonts available to the system: chmod 0775 -R droid/ candara/
  • Cache the fonts so they are loaded on all the applications: chmod 0775 -R candara/ droid/


Installing droid fonts on Windows.
This is way simpler.
  • Just download the fonts from this
  • Extract to the Windows/Fonts folder.


While hunting for stuff, I found this, a complete image of a running android system ripe for hacking.
Hmm...

07/16/2011 09:53 #54710

The TermKit Philosophy
Category: linux
I read with interest this nifty commentary by Steven Wittens on his extreme redesign of the concept of the bland linux terminal.

One of the Unix principles is nobly called "Least Surprise", but in practice, from having observed new Unix users, I think it often becomes "Maximum Confusion".


From:

And I can't help laughing. How true.

I would love this on my system. I think it's still in development (on not). It's SO confusing to find out what's good to install and what isn't on linux sometimes...


I also want the CLICompanion: But again, is there a Debian port? or isn't there? Who knows... See the confusion here? Basic questions like "Alright, can I install this application now?" grow into gargantuan complex flowcharts on linux. For eg. the simple question above can only be answered after ALL the following have been sorted.
  • What distro are you on?
  • What kernel are you on?
  • What architecture are you on?
  • What are the dependencies of the program you want?
  • What are the versions of these dependencies specific to the program you want to install?
  • Do you have the source repository of the versions of the dependencies that is best suited to the program in your sources.list?
  • Do you have an updated sources.list?

Fine then, you can install the program but... I can only give you the source code because I am SO open source. Here you go, my precious tarball lovingly gift-wrapped in some cryptic archival format for you: Sourcecodeblablaobscureversion000.tar.bz

Which leads to:
  • Can you compile this source code on your system?
  • What are the developer tools you need to compile the code?
  • What are the dependencies of the developer tools you need?
  • Are these dependencies in the repositories on your sources.list?
  • Do you have the requisite linux kernel headers (what the hell does that even mean?)
And finally, you compile the source into an executable binary and you are met with more challenges because some of the other dependencies can STILL be missing and you have go hunt all round the internet and repeat the above algorithm for each dependency.

God forbid, you find an easy way to do things on Linux. Because you see, the great Linus Torvalds didn't plan on the system being used and abused by novices and nobodies like you.

07/15/2011 21:02 #54709

Google actually increases our IQ
Category: science
I took a break and read some fun studies that came out this week in Science (pdfs below). A professor at Columbia conducted some experiments about how our memories operate in the presence and absence of assured information sources online such as Google and Wikipedia.

She found, not surprisingly, that our priorities have moved not towards memorizing trivia but towards more efficient ways to retrieve this trivia from where it might be stored online. And since remembering trivia is a relatively easier task than remembering techniques and algorithms to retrieve this trivia, our IQs are actually getting sharper as technologies progress and our environments become richer with information.

As (e:paul) said to me not long ago, Google has pretty much become everyone's mother. And we are constantly thinking of ways to jog her memory and get relevant information out.

Science is an interesting magazine/journal. For people in academia, publishing in Science and Nature are the pinnacle of achievement. But somehow, a large number of studies from humanities and behavioural sciences which do get published in these journals (Science way more than Nature) seem to get away with the simplest of experiments, approaches and super-obvious hypotheses. More arduous basic and clinical science that takes a ton of effort to perform gets rejected routinely.

I often wonder if we, as basic and clinical scientists, place undue importance to getting published in these so-called lofty journals, and agonize too much about where we get published. After all, some of the finest nobel-winning impact-making science was not published in these journals but obscure journals with lowly impact factors when they first came out. (It's another matter however that these "lowly journals" have since become really prominent and elitist.)

Academia is a funny twisted world.
---
Refs:
::READ PDF::
::READ PDF::