column
The other day I wanted some prettier (tabularized) output and of course someone has already wanted this and of course there are tools for that
bash_completion
This is so frakking cool! I’ve built this little shellscript “vault.sh” which is a simple wrapper script for mounting and unmounting encfs mounts.
It takes two parameters: operation and target, where operation can be one of “lock” and “unlock”, and target—at present—resolves to “thunderbird” (signifying my .thunderbird directory).
Since I intend to expand this with more encrypted directories as I see fit, I don’t want to hard-code that.
What I did want, however, was to be able to auto complete operation and target. So I looked around, and found this post, and although I couldn’t derive enough knowledge from it to solve my particular problem, having multiple levels of completion, the author was gracious enough to provide references to where s/he had found the knowledge (here, here and here). That second link was what did it for me.
My /etc/bash_completion.d/vault.sh
now looks like this:
_vault() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" first="lock unlock" second="thunderbird" if [[ ${cur} == * && ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${second}" -- ${cur}) ) return 0 fi if [[ ${cur} == * && ${COMP_CWORD} -eq 1 ]] ; then COMPREPLY=( $(compgen -W "${first}" -- ${cur}) ) return 0 fi } complete -F _vault vault.sh
And all the magic is happening in the two if-statements. Essentially: if current word (presently half typed and tabbed) is whatever, and this is the second argument to the command, respond with suggestions taken from the variable $second
.
Otherwise, if current word is whatever, and this is the first parameter, take suggestions from the variable $first
.
Awsum!
awk for great good
Another great use for awk: viewing selected portions of source code. For instance, in Perl, if you just want to view a specific subroutine, without getting distracted by all the other crud, you could do: $ awk '/sub SomeSubName/,/}/' somePerlModule.pm
Links
If PHP were British, perhaps it’s just me, but I find it hilarious.
PayPal just keeps working their charm…
Preserving space, neat!
Fuzzy string matching in Python
If you aren’t embarrassed by v1.0 you didn’t release it early enough
The makers schedule, oldie but goldie
CSS Media Queries are pretty cool
Static site generator using the shell and awk
Comparing images using perceptual hashes