10 Tips and Tricks for Linux users.....
1: Editing without an editor
Very long files are often hard
to manipulate with a text editor. If you need to do it regularly,
chances are you'll find it much faster to use some handy command-line
tools instead, like in the following examples.To print columns eg 1 and 3
from a file file1 into file2, we can use awk:
awk '{print $1, $3}' file1 > file2
To output only characters from column 8 to column 15 of file1, we can use cut:
cut -c 8-15 file1 > file2
To replace the word word1 with the word word2 in the file file1, we can use the sed command:
sed "s/word1/word2/g" file1 > file2
This is often a quicker way to get results than even opening a text editor.
2: Backup selected files only
Want
to use tar to backup only certain files in a directory? Then you'll
want to use the -T flag as follows. First, create a file with the file
you want to backup:
cat >> /etc/backup.conf # /etc/passwd # /etc/shadow # /etc/yp.conf # /etc/sysctl.conf EOF
Then run tar with the -T flag pointing to the file just created:
tar -cjf bck-etc-`date +%Y-%m-%d`.tar.bz2 -T /etc/backup.conf
Now you have your backup.
3: Merging columns in files
While
splitting columns in files is easy enough, merging them can be
complicated. Below is a simple shell script that does the job:
#!/bin/sh length=`wc -l $1 | awk '{print $1}'` count=1 [ -f $3 ] && echo "Optionally removing $3" && rm -i $3 while [ "$count" -le "$length" ] ; do a=`head -$count $1 | tail -1` b=`head -$count $2 | tail -1` echo "$a $b" >> $3 count=`expr $count + 1` done
Give to this script the name merge.sh and make it executable with:
chmod u+x merge.sh
Now, if you want to merge the columns of file1 and file2 into file3, it's just matter of executing
/path/to/merge.sh file1 file2 file3
where /path/to has to be replaced with the location of merge.sh in your filesystem.
4: Case sensitivity
Despite
the case of a word not making any difference to other operating
systems, in Linux "Command" and "command" are different things. This can
cause trouble when moving files from Windows to Linux. tr is a little
shell utility that can be used to change the case of a bunch of files.
#!/bin/sh for i in `ls -1`; do file1=`echo $i | tr [A-Z] [a-z] ` mv $i $file1 2>/dev/null done
By executing it, FILE1 and fiLe2 will be renamed respectively file1 and file2.
5: Macros in Emacs
When
editing files, you will often find that the tasks are tedious and
repetitive, so to spare your time you should record a macro. In Emacs,
you will have to go through the following steps:
- Press Ctrl+X to start recording.
- Insert all the keystrokes and commands that you want
- Press Ctrl+X to stop when you're done.
Now, you can execute that with
Ctrl -u <number> Ctrl -x e
where
<number> is the number of times you want to execute the
macro. If you enter a value of 0, the macro will be executed until the
end of the file is reached. Ctrl -x e is equivalent to Ctrl -u 1 Ctrl-x
e.
6: Simple spam killing
Spam, or unsolicited bulk
email, is such a widespread problem that almost everyone has some sort
of spam protection now, out of necessity. Most ISPs include spam
filtering, but it isn't set to be too aggressive, and most often simply
labels the spam, but lets it through (ISPs don't want to be blamed for
losing your mails).The result is that, while you may have anti-spam
stuff set up on the client-side, you can make its job easier by writing a
few filters to remove the spam that's already labelled as such. The
label is included as a header. In KMail, you can just create a quick
filter to bin your mail, or direct it to a junk folder. The exact header
used will depend on the software your ISP is using, but it's usually
something like X-Spam-Flag = YES for systems like SpamAssassin.
Simply
create a filter in KMail, choose Match Any of the Following and type in
the header details and the action you require. Apply the filter to
incoming mail, and you need never be troubled by about half the volume
of your spam ever again.
7: Read OOo docs without OOo
Have
you ever been left with an OOo document, but no OpenOffice.org in which
to read it? Thought you saved it out as plain text (.txt), but used the
StarOffice .sxw format instead? The text can be rescued. Firstly, the
sxw file is a zip archive, so unzip it:
unzip myfile.sxw
The
file you want is called 'content.xml'. Unfortunately, it's so full of
xml tags it's fairly illegible, so filter them out with some Perl magic:
cat content.xml | perl -p -e "s/<[^>]*>/ /g;s/\n/ /g;s/ +/ /;"
It may have lost lots of formatting, but at least it is now readable.
8: Find and execute
The
find command is not only useful for finding files, but is also useful
for processing the ones it finds too. Here is a quick example.Suppose we
have a lot of tarballs, and we want to find them all:
find . -name '*.gz'
will
locate all the gzip archives in the current path. But suppose we want
to check they are valid archives? The gunzip -vt option will do this for
us, but we can cunningly combine both operations, using xargs:
find . -name '*.gz' | xargs gunzip -vt
9: Use the correct whois server
The
whois command is very useful for tracking down Internet miscreants and
the ISPs that are supplying them with service. Unfortunately, there are
many whois servers, and if you are querying against a domain name, you
often have to use one which is specific to the TLD they are using.
However, there are some whois proxies that will automatically forward
your query on to the correct server. One of these is available at http://whois.geektools.com.
whois -h whois.geektools.com plop.info
10: Where did that drive mount?
A
common problem with people who have lots of mountable devices (USB
drives, flash memory cards, USB key drives) is working out where that
drive you just plugged in has ended up? Practically all devices that
invoke a driver - such as usb-storage - will dump some useful
information in the logs. Try
dmesg | grep SCSI
This will filter out recognised drive specs from the dmesg output. You'll probably turn up some text like:
SCSI device sda: 125952 512-byte hdwr sectors (64 MB)
So your device is at sda.
Thanks...
0 comments:
Post a Comment