вторник, ноември 24, 2009

Sony MDR-RF800

Явно съм свикнал с удобството и комфорта от безжичното аудио... След като на предните слушалки им се счупи лявото "слушало" и опита за поправянето му беше не успешен се добих с тези.
Това което ми харесва:
1. По-леки са (спрямо предните)
2. Обхвата е по-голям
3. По-"гъвкави" и предполагам по-чупливоустойчиви
4. Качеството на звука е по-добро (ниодимовите магнити явно оказват влияние)
5. При липса на сигнал не се чува никакъв "бял" шум
Това което не ми харесва (спрямо предните и по принцип):
1. Не стоят толкова стегнати на главата колкото предните (може и да не е толкова голям минус колкото ми изглежда в момента)
2. Нямат стойка на която да ги прибирам което означава, че ще се мандахерцат из бюрото насам-натам
3. Зареждането на батериите става през семплият предавател с едно 20 см кабелче хардкоднато в малкият и лекият предавател
4.Индикатора за заряд на батерията е ... червено светодиодче - сиреч пак нямам дори ориентировъчна индикация на това колко време слушане ми остава
5. Няма индикатор кога работят (приемат сигнал) така, че не мога да разбера дали се изключват при липса на входящ сигнал

петък, ноември 13, 2009

Useful *nix commands - grep

Get a Grip on the Grep! – 15 Practical Grep Command Examples

by SathiyaMoorthy on March 26, 2009
Grip on the Unix Grep Command
Photo courtesy of Alexôme's

This is part of the on-going 15 Examples series, where 15 detailed
examples will be provided for a specific command or functionality.
Earlier we discussed 15 practical examples for Linux find command, Linux
command line history and mysqladmin command.


In this article let us review 15 practical examples of Linux grep
command that will be very useful to both newbies and experts.


First create the following demo_file that will be used in the examples
below to demonstrate grep command.

$ cat demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.

1. Search for the given string in a single file

The basic usage of grep command is to search for a specific string in
the specified file as shown below.

Syntax:
grep "literal_string" filename

$ grep "this" demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.

2. Checking for the given string in multiple files.

Syntax:
grep "string" FILE_PATTERN


This is also a basic usage of grep command. For this example, let us
copy the demo_file to demo_file1. The grep output will also include the
file name in front of the line that matched the specific pattern as
shown below. When the Linux shell sees the meta character, it does the
expansion and gives all the files as input to grep.

$ cp demo_file demo_file1

$ grep "this" demo_*
demo_file:this line is the 1st lower case line in this file.
demo_file:Two lines above this line is empty.
demo_file:And this is the last line.
demo_file1:this line is the 1st lower case line in this file.
demo_file1:Two lines above this line is empty.
demo_file1:And this is the last line.

3. Case insensitive search using grep -i

Syntax:
grep -i "string" FILE


This is also a basic usage of the grep. This searches for the given
string/pattern case insensitively. So it matches all the words such as
"the", "THE" and "The" case insensitively as shown below.

$ grep -i "the" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.

4. Match regular expression in files

Syntax:
grep "REGEX" filename


This is a very powerful feature, if you can use use regular expression
effectively. In the following example, it searches for all the pattern
that starts with "lines" and ends with "empty" with anything in-between.
i.e To search "lines[anything in-between]empty" in the demo_file.

$ grep "lines.*empty" demo_file
Two lines above this line is empty.

From documentation of grep: A regular expression may be followed by one
of several repetition operators:

* ? The preceding item is optional and matched at most once.
* * The preceding item will be matched zero or more times.
* + The preceding item will be matched one or more times.
* {n} The preceding item is matched exactly n times.
* {n,} The preceding item is matched n or more times.
* {,m} The preceding item is matched at most m times.
* {n,m} The preceding item is matched at least n times, but not more
than m times.

5. Checking for full words, not for sub-strings using grep -w

If you want to search for a word, and to avoid it to match the
substrings use -w option. Just doing out a normal search will show out
all the lines.

The following example is the regular grep where it is searching for
"is". When you search for "is", without any option it will show out
"is", "his", "this" and everything which has the substring "is".

$ grep -i "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.


The following example is the WORD grep where it is searching only for
the word "is". Please note that this output does not contain the line
"This Line Has All Its First Character Of The Word With Upper Case",
even though "is" is there in the "This", as the following is looking
only for the word "is" and not for "this".

$ grep -iw "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

6. Displaying lines before/after/around the match using grep -A, -B and -C

When doing a grep on a huge file, it may be useful to see some lines
after the match. You might feel handy if grep can show you not only the
matching lines but also the lines after/before/around the match.


Please create the following demo_text file for this example.

$ cat demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

* e - go to the end of the current word.
* E - go to the end of the current WORD.
* b - go to the previous (before) word.
* B - go to the previous (before) WORD.
* w - go to the next word.
* W - go to the next WORD.

WORD - WORD consists of a sequence of non-blank characters, separated
with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.1 Display N lines after match

-A is the option which prints the specified N lines after the match as
shown below.

Syntax:
grep -A "string" FILENAME


The following example prints the matched line, along with the 3 lines
after it.

$ grep -A 3 -i "example" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.2 Display N lines before match

-B is the option which prints the specified N lines before the match.

Syntax:
grep -B <N> "string" FILENAME


When you had option to show the N lines after match, you have the -B
option for the opposite.

$ grep -B 2 "single WORD" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

6.3 Display N lines around match

-C is the option which prints the specified N lines before the match. In
some occasion you might want the match to be appeared with the lines
from both the side. This options shows N lines in both the side(before &
after) of match.

$ grep -C 2 "Example" demo_text
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

7. Highlighting the search using GREP_OPTIONS

As grep prints out lines from the file by the pattern / string you had
given, if you wanted it to highlight which part matches the line, then
you need to follow the following way.

When you do the following export you will get the highlighting of the
matched searches. In the following example, it will highlight all the
this when you set the GREP_OPTIONS environment variable as shown below.

$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

$ grep this demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

8. Searching in all files recursively using grep -r

When you want to search in all the files under the current directory and
its sub directory. -r option is the one which you need to use. The
following example will look for the string "ramesh" in all the files in
the current directory and all it's subdirectory.

$ grep -r "ramesh" *

9. Invert match using grep -v

You had different options to show the lines matched, to show the lines
before match, and to show the lines after match, and to highlight match.
So definitely You'd also want the option -v to do invert match.

When you want to display the lines which does not matches the given
string/pattern, use the option -v as shown below. This example will
display all the lines that did not match the word "go".

$ grep -v "go" demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

WORD - WORD consists of a sequence of non-blank characters, separated
with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

10. display the lines which does not matches all the given pattern.

Syntax:
grep -v -e "pattern" -e "pattern"

$ cat test-file.txt
a
b
c
d

$ grep -v -e "a" -e "b" -e "c" test-file.txt
d

11. Counting the number of matches using grep -c

When you want to count that how many lines matches the given
pattern/string, then use the option -c.

Syntax:
grep -c "pattern" filename

$ grep -c "go" demo_text
6


When you want do find out how many lines matches the pattern

$ grep -c this demo_file
3


When you want do find out how many lines that does not match the pattern

$ grep -v -c this demo_file
4

12. Display only the file names which matches the given pattern using
grep -l

If you want the grep to show out only the file names which matched the
given pattern, use the -l (lower-case L) option.

When you give multiple files to the grep as input, it displays the names
of file which contains the text that matches the pattern, will be very
handy when you try to find some notes in your whole directory structure.

$ grep -l this demo_*
demo_file
demo_file1

13. Show only the matched string

By default grep will show the line which matches the given
pattern/string, but if you want the grep to show out only the matched
string of the pattern then use the -o option.

It might not be that much useful when you give the string straight
forward. But it becomes very useful when you give a regex pattern and
trying to see what it matches as

$ grep -o "is.*line" demo_file
is line is the 1st lower case line
is line
is is the last line

14. Show the position of match in the line

When you want grep to show the position where it matches the pattern in
the file, use the following options as

Syntax:
grep -o -b "pattern" file

$ cat temp-file.txt
12345
12345

$ grep -o -b "3" temp-file.txt
2:3
8:3


Note: The output of the grep command above is not the position in the
line, it is byte offset of the whole file.
15. Show line number while displaying the output using grep -n

To show the line number of file with the line matched. It does 1-based
line numbering for each file. Use -n option to utilize this feature.

$ grep -n "go" demo_text
5: * e - go to the end of the current word.
6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.

Useful *nix commands - find

**1. Find Files Using Name

This is a basic usage of the find command. This example finds all files
with name — MyCProgram.c in the current directory and all it's
sub-directories.
# find -name "MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c
2. Find Files Using Name and Ignoring Case
This is a basic usage of the find command. This example finds all files
with name — MyCProgram.c (ignoring the case) in the current directory
and all it's sub-directories.
# find -iname "MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c
3. Limit Search To Specific Directory Level Using mindepth and maxdepth
Find the passwd file under all sub-directories starting from root directory.
# find / -name passwd
./usr/share/doc/nss_ldap-253/pam.d/passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd
Find the passwd file under root and one level down. (i.e root — level 1,
and one sub-directory — level 2)
# find -maxdepth 2 -name passwd
./etc/passwd
Find the passwd file under root and two levels down. (i.e root — level
1, and two sub-directories — level 2 and 3 )
# find / -maxdepth 3 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd
Find the password file between sub-directory level 2 and 4.
# find -mindepth 3 -maxdepth 5 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
4. Executing Commands on the Files Found by the Find Command.
In the example below, the find command calculates the md5sum of all the
files with the name MyCProgram.c (ignoring case). {} is replaced by the
current file name.
# find -iname "MyCProgram.c" -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c
d41d8cd98f00b204e9800998ecf8427e ./backup/mycprogram.c
d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c
d41d8cd98f00b204e9800998ecf8427e ./MyCProgram.c
5. Inverting the match.
Shows the files or directories whose name are not MyCProgram.c .Since
the maxdepth is 1, this will look only under current directory.
# find -maxdepth 1 -not -iname "MyCProgram.c"
./MybashProgram.sh
./create_sample_files.sh
./backup
./Program.c
6. Finding Files by its inode Number.
Every file has an unique inode number, using that we can identify that
file. Create two files with similar name. i.e one file with a space at
the end.
# touch "test-file-name"
# touch "test-file-name "
[Note: There is a space at the end]
# ls -1 test*
test-file-name
test-file-name
From the ls output, you cannot identify which file has the space at the
end. Using option -i, you can view the inode number of the file, which
will be different for these two files.
# ls -i1 test*
16187429 test-file-name
16187430 test-file-name
You can specify inode number on a find command as shown below. In this
example, find command renames a file using the inode number.
# find -inum 16187430 -exec mv {} new-test-file-name \;
# ls -i1 *test*
16187430 new-test-file-name
16187429 test-file-name
You can use this technique when you want to do some operation with the
files which are named poorly as shown in the example below. For example,
the file with name — file?.txt has a special character in it. If you try
to execute "rm file?.txt", all the following three files will get
removed. So, follow the steps below to delete only the "file?.txt" file.
# ls
file1.txt file2.txt file?.txt
Find the inode numbers of each file.
# ls -i1
804178 file1.txt
804179 file2.txt
804180 file?.txt
Use the inode number to remove the file that had special character in it
as shown below.
# find -inum 804180 -exec rm {} \;
# ls
file1.txt file2.txt
[Note: The file with name "file?.txt" is now removed]
7. Find file based on the File-Permissions
Following operations are possible.
* Find files that match exact permission
* Check whether the given permission matches, irrespective of other
permission bits
* Search by giving octal / symbolic representation
For this example, let us assume that the directory contains the
following files. Please note that the file-permissions on these files
are different.
# ls -l
total 0
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
---------- 1 root root 0 2009-02-19 20:31 no_for_all
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
Find files which has read permission to group. Use the following command
to find all files that are readable by the world in your home directory,
irrespective of other permissions for that file.
# find . -perm -g=r -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read
Find files which has read permission only to group.
# find . -perm g=r -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
Find files which has read permission only to group [ search by octal ]
# find . -perm 040 -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
8. Find all empty files (zero byte file) in your home directory and it's
subdirectory
Most files of the following command output will be lock-files and place
holders created by other applications.
# find ~ -empty
List all the empty files only in your home directory.
# find . -maxdepth 1 -empty
List only the non-hidden empty files only in the current directory.
# find . -maxdepth 1 -empty -not -name ".*"
9. Finding the Top 5 Big Files
The following command will display the top 5 largest file in the current
directory and it's subdirectory. This may take a while to execute
depending on the total number of files the command has to process.
# find . -type f -exec ls -s {} \; | sort -n -r | head -5
10. Finding the Top 5 Small Files
Technique is same as finding the bigger files, but the only difference
the sort is ascending order.
# find . -type f -exec ls -s {} \; | sort -n | head -5
In the above command, most probably you will get to see only the ZERO
byte files ( empty files ). So, you can use the following command to
list the smaller files other than the ZERO byte files.
# find . -not -empty -type f -exec ls -s {} \; | sort -n | head -5
11. Find Files Based on file-type using option -type
Find only the socket files.
# find . -type s
Find all directories
# find . -type d
Find only the normal files
# find . -type f
Find all the hidden files
# find . -type f -name ".*"
Find all the hidden directories
# find -type d -name ".*"
12. Find files by comparing with the modification time of other file.
Show files which are modified after the specified file. The following
find command displays all the files that are created/modified after
ordinary_file.
# ls -lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all
# find -newer ordinary_file
./everybody_read
./all_for_all
./no_for_all
13. Find Files by Size
Using the -size option you can find files by size.
Find files bigger than the given size
# find ~ -size +100M
Find files smaller than the given size
# find ~ -size -100M
Find files that matches the exact given size
# find ~ -size 100M
Note: – means less than the give size, + means more than the given size,
and no symbol means exact given size.
14. Remove big archive files using find command
The following command removes *.zip files that are over 100M.
# find / -type f -name *.zip -size +100M -exec rm -i {} \;"
Remove all *.tar file that are over 100M using the alias rm100m (Remove
100M). Use the similar concepts and create alias like rm1g, rm2g, rm5g
to remove file size greater than 1G, 2G and 5G respectively.
# alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
# alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
# alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
# alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"

# rm100m
# rm1g
# rm2g
# rm5g