Some powerful commands for Linux
pixelbeat.org
pixelbeat.org
http://www.pixelbeat.org/docs/power_of_the_default.html
http://www.pixelbeat.org/docs/web/access_log/monitoring.html
[chronomex@gir ~]$ mkdir test1 test2
[chronomex@gir ~]$ cd test2
[chronomex@gir ~/test2]$ pwd
/home/chronomex/test2
[chronomex@gir ~/test2]$ pushd ../test1
~/test1 ~/test2
[chronomex@gir ~/test1]$ pwd
/home/chronomex/test1
[chronomex@gir ~/test1]$ pushd
~/test2 ~/test1
[chronomex@gir ~/test2]$ pwd
/home/chronomex/test2
[chronomex@gir ~/test2]$mv somefile -t /somedir
cd !$ # now you are in /somedir
Repeat this key combo to fetch the last argument from further back in your command history.
I use this all the time (almost as much as tab completion).
shopt -s histverify
then if you type !$<enter> will replace !$ with /somedir but not hit return, so you could then modify it. Then you could do...
mv somefile -t /somedir
vim !$<enter>/somefile
$if Bash
Space: magic-space
$endif
Now the history expansion will be done when 'space' is pressed.http://www.caliban.org/bash/ (Under bash Tips and Tricks)
One other good cd trick:
# Shamelessly stolen from Learning the Bash Shell (3ed), Cameron Newham
# & Bill Rosenblatt
my_cd() {
case "$#" in
0|1)
builtin cd $1
;;
2)
newdir=${PWD//$1/$2}
case "$newdir" in
$PWD)
echo "bash: my_cd: bad substitution" >&2
return 1
;;
*)
builtin cd "$newdir"
;;
esac
;;
*)
echo "bash: my_cd: wrong arg count" 1>&2
return 1
;;
esac
}
The function allows you to do simple search/replace on your current working directory and cd to the replaced version, all in one step. This is a built-in ksh feature, but easy enough to enable in bash. If you have directories with relatively deep nesting and very similar names (e.g. school/2009-2010/compsci1/grades versus school/2010-2011/compsci2/grades), it's a godsend. An example: $ pwd
/Users/telemachus/mmt/2010-2011/compsci2
$ my_cd compsci2 compsci4
$ pwd
/Users/telemachus/mmt/2010-2011/compsci4And an oldie but a goodie:
- http://www.commandlinefu.com/commands/browse/sort-by-votes
- http://twitter.com/commandlinefu
- http://twitter.com/commandlinefu3 ( 3+ votes)
- http://twitter.com/commandlinefu10 (10+ votes)
Explanation from a user on the site:
>the ':()' shows that we're making a new function named ':'. Everything inside the '{}' is the function body, it makes two recursive calls to the ':' function and puts them into the background with the '&' so that execution continues instead of waiting for them to exit. Then it ends that command with the ';' and executes the function ':'. That makes 2 calls to ':' which each make 2 calls, and so on until ulimit or your hardware capabilities stop it.
Comment by stuart 91 weeks and 2 days ago
Without an explanation it's humor for people who know, malicious to those who don't, and at best undermines the trustworthiness of the average comment on this site, which is abnormally high for the internet.