Monthly Archives: September 2011


OpenSuse: Sudo Error: Cannot Connect to X Server 3

When you call a command like this:

sudo someCommand

and you get an error message saying Cannot Connect to X Server, while if you executed that command without the sudo it would execute properly, you can resolve this issue by replacing “sudo” with “xgd-su -u root -c” resulting the following command:

xgd-su -u root -c someCommand

xdg-su provides a graphical dialog that prompts the user for a password to run a command as another user.


Include more filetypes to a WordPress Installation Media Library

In the folder <Installation Path>/wp-includes/ there is a file called functions.php, inside this file there is a function called get_allowed_mime_types().
This function is in charge of defining an Array of mime types keyed by the file extension with a regex corresponding to those types.

So in order to add a new file-type to the white-list you just have to add a new line with the following format in the list:

'jpg|jpeg|jpe' => 'image/jpeg',

Where, on the left you define the extensions you want to be accepted separated by the vertical bar character (“|”) and on the right you give a file definition.


Bash: Read a file, line by line

The following script will accept from the keyboard a filename, later it will read it and process it line by line.
In this example we will just number the lines, print them and count the total number of lines in the file.

#!/bin/sh
echo Enter the Filename to process
read filename
exec<$filename
lineNumber=0
while read line
do
	lineNumber=`expr $lineNumber + 1`;
	echo $lineNumber - $line;
done
echo "Total Lines Number: $lineNumber";


Remove leading characters/information from line using sed

Remove leading numbering from line

We had these log files that on most lines at the beginning there was a number followed by a dot and some times it had space characters.
The following sed command removes that prefix. and leaved intact the rest of the lines that do not have the prefix.

cat $log | sed '/^[0-9]*. */!d; s///;q';

e.g

Input: 123. Some text here.
Output:Some text here.

Remove leading whitespace (space and tabs) from line:

The following sed script will remove all leading whitespace from each line by using a regular expression to match space characters and tabs.

cat $log | sed 's/^[ t]*//';

e.g

Input:       Some text here.
Output:Some text here.

Extract filename from full path filename / Get file extension

The first command strips down the full path filename to the filename only ising the basename command.

filename=$(basename $filenamefullpath)

Afterwards you can see how to extract the file extension from the filename.  There is no need to do this after issuing the above command since this command will just remove everything after the first from right dot (‘.’) — so make sure that the filename you are parsing has a dot or you will end up with wrong results (like the full path or a part of the full path if it contains a dot somewhere).

extension=${filename##*.}

Finally, by issuing the following command you remove everything after the first dot on the right (including).

filename=${filename%.*}

 


List the contents of a tar or tar.gz file

List the contents of a tar file

<code>tar -tvf file.tar</code>

List the contents of a tar.gz file

<code>tar -ztvf file.tar.gz</code>

List the contents of a tar.bz2 file

<code>tar -jtvf file.tar.bz2</code>

Options:
-t
List the contents of an archive
-v
Verbose mode
-z
Use gzip so that you can process a compressed (.gz) tar file
-j
Use bzip2, use to decompress .bz2 files
-f
filename Use archive file called filename


Linux: Check if a User or a Group Exists 2

You can find out if user exists by searching in the /etc/passwd file using the following command:

egrep -i "^useraccount:" /etc/passwd

The above command will print the matching record from /etc/passwd if the user exists or nothing if the user does not exist.
The ^ symbol is used to make sure there is no characters before the username and the : character is used as the delimiter in the file (which indicates the end of the username). By wrapping the username with these characters we are sure that if we matched a record, we matched the correct record with the full username.

A very simple way to use this code in a script is by utilizing the $? (question mark) variable. The question mark variable contains the exit status of the last command that executed. Specifically, egrep will return 0 if there was a match or else it will return a a positive number (usually 1).
Taking advantage of this behavior, after executing the above command, we check the $? variable to see the result with an if statement.

egrep -i "^useraccount:" /etc/passwd;
if [ $? -eq 0 ]; then
   echo "User Exists"
else
   echo "User does not exist -- Invalid Username"
fi

You can also find out if a group exists by searching in the /etc/group file. Similar to the approach we showed before, we can check if a group exists using the following:

egrep -i "^groupname" /etc/group;
if [ $? -eq 0 ]; then
   echo "Group Exists"
else
   echo "Group does not exist -- Invalid Group name"
fi