simple tricks to speed you up on the command line
DESCRIPTION
A few simple but very effective practical tips that should make you lightning fast on the command line. I use these literally every minute I spend in the shell. All the tips should work in Linux, UNIX, BSD and similar.TRANSCRIPT
time-saving trickson the command line
$ cd /usual/path/to/work/on/projectx$ screen -R projectx$ tail -f my.log
ctrl-a c$ less config.sh
gimme a new window
Hm... what's in config.sh?Gimme a new window!
gimme a new windowgimme a new windowgimme a new windowgimme a new windowgimme a new window
$ tail -f /some/logctrl-a c$ less /some/filectrl-a c$ man some_docctrl-a c
gimme another window
ctrl-a is the command keyc stands for create window
ctrl-a nctrl-a pctrl-a w
Next windowPrevious windowWindow list
next prev window
C-a p C-a n
C-a p C-a n
detach/reattach
I want to get out!
I want to go back!
Terminal crashed!
My sessions?
# detach
ctrl-a d# reattach
$ screen -R label # detach and reattach
$ screen -R label -D
$ screen -ls
ctrl-a ?
search history with ctrl-r
...I want that for loop I used a while ago...
ctrl-r and type "for"
ctrl-r again...
ctrl-r again...
$ history | grep for 362 for i in *; do mv "$i" "$(echo $i | iconv -f iso8859-1 -t us-ascii//translit)" -v; done 364 for i in *; do mv "$i" "$(echo $i | iconv -f utf-8 -t us-ascii//translit)" -v; done
(reverse-i-search)`for': history |grep for
(reverse-i-search)`for': for i in *; do mv "$i" "$(echo $i | iconv -f utf-8 -t us-ascii//translit)" -v; done
(reverse-i-search)`for': for i in *; do mv "$i" "$(echo $i | iconv -f iso8859-1 -t us-ascii//translit)" -v; done
ctrl-w
ctrl-k
ctrl-y
ctrl-c
Delete last word
Delete until line end
Paste deleted stuff
Cancel entire line
editing quickly
ctrl-a
ctrl-e
Jump to line start
Jump to line end
moving quickly
ctrl-a a inside screen
man bashSearch for: "READLINE"
"Commands for Moving""Commands for Changing Text"
/error
n
N
g
G
Search for "error"
Next match
Previous match
Jump to first line
Jump to last line
moving quickly in less
m a
' a
-i
:n
Mark line in register "a", "b"
Jump to register "a", "b"
Toggle case sensitive search
Go to next file
moving quickly in less
m b
' b
h
mail it to me# mail me the relevant stuff
$ grep stuff /var/log/messages | mailx -s "stuff from logs" [email protected]# mail me the whole file
$ uuencode /var/log/messages messages.txt | mailx -s "system logs on $HOST" [email protected]
# after the loooong task, mail me
$ rsync --progress /disk1/iso/* /disk2/iso/; ls -lha /disk2/iso/ | mailx -s "copy isos done" [email protected]
mail me when finished
# infinite loop until file appears and then mail me
$ while :; do date; test -f file.txt && break; sleep 300; done; ls -lh file.txt | mailx -s "file appeared" [email protected]
mail me when file appears
# infinite loop until matching line appears and then mail me
$ while :; do date; grep pattern /path/to/log && break; sleep 300; done; { date; grep -B50 -A50 pattern /path/to/log; } | mailx -s "log snippet" [email protected]
mail me when log matches
$ openssl des3 < secret.bin > secret.bin.des3enter des-ede3-cbc encryption password:Verifying - enter des-ede3-cbc encryption password:$ openssl des3 -d < secret.bin.des3 > decrypted.binenter des-ede3-cbc decryption password:$ cmp secret.bin decrypted.bin$ # empty output means the two files are identical
encrypt and decrypt simply