Command mode ESC
dd delete
u undelete
y yank (copy to buffer)
p/P p before cursor/P after cursor
Ctl-g show current line number
shft-G end of file
n shft-G move to line n
/stuff/ search
n repeat in same direction
N repeat in opposite direction
/return repeat seach forward
?return repeat seach backward
"dyy Yank current line to buffer d
"a7yy Yank next 7 lines to buffer a
or
:1,7ya a Yank [ya] lines 1,7 to buffer a
:1,7ya b Yank [ya] lines 1,7 to buffer b
:5 pu b Put [pu] buffer b after line 5
"dP Put the content of buffer d before cursor
"ap Put the contents of buffer a after cursor
:1,4 w! file2 Write lines 1,4 to file2
:1,3
:set nu Display line numbers
:set nonum Turns off display
:set ic Ignore Case
:e Edit a file in a new buffer
:g//p Print matching regular expression
vim
:split
:split
:sp
:split new
ctl-w To move between windows
ctl-w+
ctl-w- To change size
ctl+wv Split windows vertically
ctl-wq Close window
:only To view only 1 window
vim dictionary - put the following command in ~/.vimrc
set dictionary+=/usr/share/dict/words
set thesaurus+=/usr/share/dict/words
Now, after you type a word and to
go back in the listing
butter
Scripting - you can script vi commands using ex. For example
suppose you want to replace all occurrences of "one" with "two", then
exit the file if there are changes. You would put the following in a file call script
Contents of script
%s/one/two/g|x
If you want to run this on all files with the patten "example*"
for i in $(ls example*); do ex - $i
Red Hat, Fedora, Gnome, KDE, MySQL, PostgreSQL, PostGIS, Slony, Zarafa, Scalix, SugarCRM, vtiger, CITADEL,OpenOffice, LibreOffice,Wine, Apache, hadoop, Nginx Drupla, Joomla, Jboss, Wordpress, WebGUI, Tomcat, TiKi WiKi, Wikimedia, SpamAssassin, ClamAV, OpenLDAP, OTRS, RT, Samba, Cyrus, Dovecot, Exim, Postfix, sendmail, Amanda, Bacula, DRBD, Heartbeat, Keepalived, Nagios, Zabbix, Zenoss,
Monday, October 18, 2010
vi and vim commands
What Network Services are Running
$ netstat -tanup
or if you just want tcp services
$ netstat -tanp
or
$ netstat -ap|grep LISTEN|less
This can be helpful to determine the services running.
Need stats on dropped UDP packets?
$ netstat -s -u
or TCP
$ netstat -s -t
or summary of everything
$ netstat -s
or looking for error rates on the interface?
$ netstat -i
Listening interfaces?
$ netstat -l
awk - common awk commands.
Find device names "sd" or with major number 4 and device name "tty". Print the
record number NR, plus the major number and minor number.
$ awk '$2 == "sd"||$1 == 4 && $2 == "tty" { print NR,$1,$2}' /proc/devices
Find device name equal to "sound".
$ awk '/sound/{print NR,$1,$2}' /proc/devices
Print the 5th record, first field, in file test
$ awk 'NR==5{print $1}' test
Print a record, skip 4 records, print a record etc from file1
$ awk '(NR-1) % 4 == 0 {print $1}' file1
Print all records except the last one from file1
$ tac file1|awk 'NR > 1 {print $0}'|tac
Print A,B,C ..Z on each line, cycling back to A if greater than 26 lines
$ awk '{ print substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",(NR-1)%26+1,1),$0}' file1
Number of bytes in a directory.
$ ls -l|awk 'BEGIN{ c=0}{ c+=$5} END{ print c}'
Remove duplicate, nonconsecutive line. As an advantage over "sort|uniq"
you can eliminate duplicate lines in an unsorted file.
$ awk '! a[$0]++' file1
Or the more efficient script
$ awk '!($0 in a) {a[$0];print}' file1
Print only the lines in file1 that have 80 characters or more
$ awk 'length < 80' file1
Print line number 25 on an extremely large file -- note it has
to be efficient and exit after printing line number 25.
$ awk 'NR==25 {print; exit}' verybigfile
Using the "find" Command.
List only directories, max 2 nodes down that have "net" in the name
$ find /proc -type d -maxdepth 2 -iname '*net*'
Find all *.c and *.h files starting from the current "." position.
$ find . \( -iname '*.c' -o -iname '*.h' \) -print
Find all, but skip what's in "/CVS" and "/junk". Start from "/work"
$ find /work \( -iregex '.*/CVS' -o -iregex '.*/junk' \) -prune -o -print
Note -regex and -iregex work on the directory as well, which means
you must consider the "./" that comes before all listings.
Here is another example. Find all files except what is under the CVS, including
CVS listings. Also exclude "#" and "~".
$ find . -regex '.*' ! \( -regex '.*CVS.*' -o -regex '.*[#|~].*' \)
Find a *.c file, then run grep on it looking for "stdio.h"
$ find . -iname '*.c' -exec grep -H 'stdio.h' {} \;
sample output --> ./prog1.c:#include
./test.c:#include
Looking for the disk-hog on the whole system?
$ find / -size +10000k 2>/dev/null
Looking for files changed in the last 24 hours? Make sure you add the
minus sign "-1", otherwise, you will only find files changed exactly
24 hours from now. With the "-1" you get files changed from now to 24
hours.
$ find . -ctime -1 -printf "%a %f\n"
Wed Oct 6 12:51:56 2010 .
Wed Oct 6 12:35:16 2010 Linux_and_Open_Source.txt
Or if you just want files.
$ find . -type f -ctime -1 -printf "%a %f\n"
Details on file status change in the last 48 hours, current directory. Also note "-atime -2").
$ find . -ctime -2 -type f -exec ls -l {} \;
NOTE: if you don't use -type f, you make get "." returned, which
when run through ls "ls ." may list more than what you want.
Also you may only want the current directory
$ find . -ctime -2 -type f -maxdepth 1 -exec ls -l {} \;
To find files modified within the last 5 to 10 minutes
$ find . -mmin +5 -mmin -10
Subscribe to:
Posts (Atom)