I just decided I want to share a few commands I use on daily basis that help me get around my daily terminal endeavors:
Start With A BANG!!
Use !!
to threaten terminal to do something. Actually, it repeats whatever you typed earlier:
$ some_command -option something
permission denied
# evaluates to sudo some_command -option something
$ sudo !!
Done
Interested In Results
This is like how I perceive bosses and managers: They come in grumpy everyday, and are not interested in hearing about your recent breakthroughs or moments of enlightenments… “Show me some results!!”.
Anyways, while writing a script, you might be interested in the output of a command, rather than the actual execution. Here is an example:
# pwd is a command that prints the current working directory
$ sound_convert_to_caf `pwd`/*.mp3
Here, my dumb python script doesn’t take a relative path, nor resolves the current working directory, hence I must supply it with absolute paths. Using the back-ticks, one can easily resolve the absolute path! :D
Oscillation
Did you ever want to cd
into a directory, but remembered the effort required to cd
back into the current directory? Yeah, a basic solution would probably be:
$ cwd=`pwd`
$ cd other_directory
$ cd $cwd
But! Another, much more elegant way exist that allows you to go back and forth between the two directories
$ cd other_directory
$ cd - # takes us back to initial directory
$ cd - # takes us to the other_directory
Something Like… This?
Oh noes! You haz type cmd you can no longer .. have forgotten!!! Let terminal help you find it!!
Simply, hit Ctrl + r
, and this will trigger the reverse search to allow you to do a fuzzy search on the commands you typed:
Example:
(reverse-i-search)`git ': git pull origin master
Recursion
This blew my mind, as I have never come across it earlier (lair, obviously, I probably just overlooked it). The /**/
syntax seems to be a recursion indication thing, not only in terminal, even in gitignore
, for example.
$ images_convert_to_RGBA8888 directory/**/*.png
Conclusion
This is definitely just a fraction of what is truly helpful in terminal. I must be missing a few, and much, much more that I am still ignorant about…