Command line tricks for smart geeks

Command line

Everyone knows the answer to the question of life, the universe and everything is "42", but for the first time we can reveal the question. It is this: how many command-line tricks must a man memorise? You see, graphical user interfaces are all well and good, but when you want to get real work done it's time to switch to the terminal.

And so, we squeezed our brain cells, dug through dusty piles of old issues of Linux Format, and sat reflecting quietly over many a pint of ale, all with the goal of bringing you this: 42 awesome new command line tricks we think you ought to commit to memory. We've tried to include a few that are easier for our, er, less-experienced readers to enjoy, but we think even the most hardened Linux veteran will learn something new over the next 12,000 words.

So, strap yourself in and get ready for command-line heaven: it's time to kick ass and chew bubble gum, and we're all out of gum...


(PS: if you're looking for general Linux tips, check out our previous two articles: Linux tips every geek should know and More Linux tips every geek should know. We also have an article with more Bash tips for power users if you're eager to the neighbourhood Bash wizard, and an excellent guide to mastering the Linux command line.)

Make your own Bash wormholes

Even for the Bash aficionado, the mkfifo command is likely to be one of the lesser used in your collection. It creates a pipe for sharing data, connecting two running utilities with a kind of command line wormhole. Data sent into one end will instantaneously appear at the other.

Before we look at how to use it, it's worth going over how we typically see pipes. If you've used the shell for anything other than scaring your friends with cat /dev/random, you'll be used to the idea of pipes. They're most often used to stream the output of one program into the input of another. A common use is when there is too much textual output from one command to read. Piping this output into another - usually either less or more - lets you pause and page through the output in your own time:

cat /var/log/messages | less

In this instance, the pipe is temporarily created for the execution of a single command, but using mkfifo it's possible to create persistent pipes that you can use for similar tasks.

The 'fifo' part of the command refers to the nature of the pipe - the data that's first in is first out. Creating the pipe itself is as easy as typing mkfifo, followed by the name you wish to call it. It's also possible to set the permissions for the pipe (using the --mode parameter) so you can restrict access. Once the pipe is created, you just need to route data into it. Here's a brief example. First we create the pipe, and use tail -f to output any data that's sent to it:

mkfifo fifo_pipe
tail -f fifo_pipe

The next step, usually from another console or user account (if the permissions have been set), is to send data to the pipe. Typing echo "This is a test" >> fifo_pipe will send the test message, which will itself be output by the tail command we attached to the pipe.

Remote control MPlayer

There are two types of people in this world: those who think MPlayer is the best media player in the history of existence, and those who are wrong. One of MPlayer's lesser-known features is the ability to control it from a console, a shell script or even over the network. The secret to this trick is in MPlayer's -slave option, which tells the program to accept commands from the stdin stream instead of keystrokes. Combine this with the -input option, and commands are read from a file, or a FIFO. For instance, try this in one terminal:

mkfifo ~/mplayer-control
mplayer -slave -input file=/home/user/mplayercontrol

Then, in another terminal or from a script, enter:

echo "pause" >~/mplayer-control

This command will pause the currently running MPlayer, and issuing the command again will resume playback. Note that you have to give the full path of the control file to MPlayer, with /home/user and so forth, because ~/mplayer-control alone won't work. There are plenty of other commands you can send to MPlayer - indeed, any keyboard operation in the program triggers a command that you can use in your control script. You can even operate MPlayer from another computer on the network, using SSH or Netcat. See this example:

ssh user@host "echo pause >mplayer-control"

Here, we log in to a remote machine (host) with the username user, and run a command to send pause to the remote machine's MPlayer control file. Of course, this can be made much faster if you have SSH key authentication enabled, as you don't need to give the password each time.

Share files the easy way

File sharing with Samba or NFS is easy once you've got it set up on both computers, but what if you just want to transfer a file to another computer on the network without the hassle of setting up software? If the file is small, you may be able to email it. If the computers are in the same room, and USB devices are permitted on both, you can use a USB flash drive, but there is also another option.

Woof is a Python script that will run on any Linux (or similar) computer. The name is an acronym for Web Offer One File, which sums it up fairly well, as it is a one-hit web server. There's nothing to install; just download the script from the homepage at simon/woof.html and make it executable, then share the file by entering

./woof /path/to/myfile

It will respond with a URL that can be typed into a web browser on another computer on the network - no software beyond a browser is needed. Woof will serve the file to that computer and then exit (you can use the -c option to have it served more times). Woof can also serve a directory, like so:

./woof -z /some/dir

This will send a gzipped tarball of the directory, and you can replace -z with -j or -u to get a bzipped or uncompressed tarball. If others like Woof and want to use it, you can even let them have a copy with

./woof -s

Find lost files

Have you ever saved a file, maybe a download, then been unable to find it? Maybe you saved it in a different directory or with an unusual name.

The find command comes in handy here:

find ~ -type f -mtime 0

will show all files in your home directory modified or created today. By default, find counts days from midnight, so an age of zero means today.

You may have used the -name option with find before, but it can do lots more. These options can be combined, so if that elusive download was an MP3 file, you could narrow the search with:

find ~ -type f -mtime 0 -iname '*.mp3'

The quotation marks are needed to stop the shell trying to expand the wildcard, and -iname makes the match case-insensitive.

Incorrect permissions can cause obscure errors sometimes. You may, for example, have created a file in your home directory while working as root. To find files and directories that are not owned by you, use:

find ~ ! -user ${USER}

The shell sets the environment variable USER to the current username, and a ! reverses the result of the next test, so this command finds anything in the current user's directory that is not owned by that user. You can even have find fix the permissions

find ~ ! -user $USER -exec sudo chown ${USER}:"{}" \;

The find man page explains the use of -exec and many other possibilities.

Bandwidth hogs

Have you ever noticed that your internet connection goes really slowly, even though you're not downloading anything? Because of the way most asymmetric broadband connections are set up, if you saturate the upload bandwidth, downloads become almost impossible.

This is because of the way the traffic is queued by the modem and the ISP. Even the slowest and lowest-bandwidth operations, like using a remote shell or looking up a DNS address, become painfully slow or time out. If you're using something like a BitTorrent client to upload, you can limit the upload rate, which avoids this problem. Some other programs, like rsync, have a similar feature, but many do not. Also, running two such programs will still cause problems, if each has been told it can use 90% of your upstream bandwidth.

One solution is a handy script called Wonder Shaper, which uses the tc (traffic control) command to limit overall bandwidth usage to slightly below the maximum available. Get it from, put the wshaper script somewhere in your path - /usr/ local/bin is a good choice -and edit the start of the script to suit your system. Set DOWNLINK and UPLINK to just below your maximum bandwidth (in kilobits/s) and run it. You should now find that heavy uploads, like putting photos on Flickr, no longer drag your modem to its knees. When you're happy with the settings, set it to run at boot with whatever method your distro uses.

Fix broken passwords with chroot

Whether you're a sysadmin in charge of mission-critical data centres or a home tinkerer, Live CDs are wonderful to have around for when you get into trouble. If you manage to mess something up, you can boot from a Knoppix, Ubuntu, GRML or one of several other Live CDs, mount your hard disk partitions and edit whatever files are needed to recover from your troubles. However, there are some things that can't be fixed this easily, because they need you to be in the system that needs fixing.

The solution is to use the chroot (change root) command, which sets up a working environment within a directory. Note that the root in the name refers to the root directory, not the root user (or superuser) although the root user is the only one allowed to run this command. Chroot sets up a 'jailed' system within the specified directory, one that has no access to the rest of the system and thinks that the given directory is the root directory. To fix a broken password, for example, you could boot from a live CD, mount your disk's root filesystem at /mnt/tmp and do this:

sudo -i
mount --bind /dev /mnt/tmp/dev
mount -t proc none /mnt/tmp/proc
chroot /mnt/bin/bash

The first line is needed to become root on Ubuntu. The next two make the /dev/ and /proc directories available inside the chroot, and the last one enters the chrooted directory, running a Bash shell. Now you can run passwd, or any other command you need, and finish off with logout or press Ctrl-D to exit.

Password-free SSH

Using SSH to connect to a remote computer is convenient, but it has a couple of drawbacks. One is that you have to type the password each time you connect, which is annoying in an interactive shell but unacceptable with a script, because you then need the password in the script. The other is that a password can be cracked. A complex, random long password helps, but that makes interactive logins even more inconvenient. It's more secure to set SSH up to work with no passwords at all. First you need to set up a pair of keys for SSH, using ssh-keygen like this to generate RSA keys (change the argument to dsa for DSA keys).

ssh-keygen -t rsa

This creates two files in ~/.ssh, id_rsa (or id_dsa) with your private key and id_rsa. pub with your public key. Now copy the public key to the remote computer and add it to the list of authorised keys with

cat >>~/.ssh/authorized_keys

You can then log out of the SSH session and start it again. You will not be asked for a password, although if you set a passphrase for the key you will be asked for that. Repeat this for each user and each remote computer. You can make this even more secure by adding

PasswordAuthentication no

to /etc/ssh/sshd_config. This causes SSH to refuse all connection without a key, making password-cracking impossible.

Block script kiddies

Are you fed up with your system log filling up with reports of hundreds (or even thousands) of failed SSH login attempts as script kiddies try to get on your machine?

These do no harm as long as they fail but they're still annoying. Thankfully, there are a number of ways to avoid them. The best - provided you will never need SSH access from outside your network - it to close port 22 on your router, then no-none can get in. Another option is to run a program like Fail2ban (http://fail2ban.sourceforge. net) or DenyHosts ( These watch your log files for repeated failed login attempts from the same IP address, then add that IP address to your firewall rules to block any further contact from there for a while.

The third option is ridiculously easy. Attempts to crack SSH generally assume it runs on the standard port 22; change that to a random, high-numbered port and the crack attempts magically disappear. Edit /etc/ssh/sshd_config and change the Listen directive to something like this:

Listen 31337

and restart sshd. The only drawback of this is the inconvenience of having to add this port number to the ssh command everytime you log in, but you can use an alias to take care of that:

alias myssh ssh -p 31337

Reclaim disk space

Filling a partition to 100% can have an unpleasant effect on your system. When services and other programs cannot write to their log files, or cannot save data in /var, you could be in trouble. These programs won't be able to save their data, and typically quit out (or, in some extreme cases, crash dramatically!). To avoid this, the ext2 and ext3 filesystems reserve 5% of their capacity for only root processes to use. This is a good idea, but 5% is a lot on large drives - for instance, it's 25GB on a 500GB drive. Also, there is no need to reserve any space on a filesystem not used for root files, such as /home.

The good news is that not only is this 5% not hardcoded into the filesystem, it can be changed on the fl y without disturbing the your data and files. Tune2fs is used to tune various parameters of an ext2 (or ext3) filesystem. It can be used to change the volume label or the number of mounts between forced execution of fsck and a host of other, more esoteric settings, but the options we are interested in here are -m and -r. The former changes the percentage of filesystem blocks reserved for the root user, while the latter uses an absolute number of blocks. So:

tune2fs -m 2 /dev/sda1

reduces the reserved area to 2% of the filesystem, which may be more appropriate for if you have a large / or /var filesystem. If you're using a drive of 500GB or larger, this is the best option.

This line of code:

tune2fs -r 0 /dev/sda1

sets the filesystem to have no reserved blocks, a good setting for /home that doesn't need a reserved area for the superuser.

Create packages

Downloading an application's source code and compiling it yourself. This is a straightforward task with 90% of the software out there, but it can cause problems with dependencies. While the various package managers have ways of working around this, there is another way.

When building from source using the standard autotools method of ./configure && make && make install, install CheckInstall first. You can get this from www.asic-linux. although it may well be in your distro's repositories. Run this instead of make install and, instead of installing the new files directly to your filesystem, it first builds a package and then installs that. CheckInstall works with Deb, RPM and Slackware packages. You can specify the type in a config file, or it will ask when you run

./configure && make && checkinstall

Apart from the package type, CheckInstall asks for some other details. Most of these are optional, or can be left at the defaults, but make sure the name matches the older version you are replacing, otherwise your package manager will get confused. Installing with CheckInstall also makes it simpler to remove the package, as there is no need to keep the source directory around, and some programs don't have a make uninstall option anyway.

Get your cds in order

True Unix hackers know that changing directory can be done in all sorts of different ways, and with all sorts of different features, so soon everyone learns that the humble cd command can actually be their best friend. You should already know that cd ~ takes you to your home directory, but real hackers don't waste two keystrokes on nothing: just type cd to get the same result. If you just straighten that squiggle a little, ~ becomes - and you get cd -, the command to navigate to and from the previous directory.

For more advanced users, cd - just isn't enough, because it only lets you go between the current directory and the previous one. A better system is to use pushd and popd in place of cd. So, rather than typing cd mydir use pushd mydir - it remembers the directory where you were, then cds into mydir. You can run this on all sorts of different directories, and Bash will remember your entire trail. When you want to step backwards, just type popd to go to the previous directory.

Finally, don't you hate it when you're in a symlinked directory and you've no idea where you are? Worse, running pwd to print the working directory makes it look like you're not in a symlink at all. If this happens to you, just use the -P parameter (ie pwd -P) to make it resolve the symlink and show you where you really are. And if you want to cd into the real directory rather than the symlink, just use cd `pwd -P`.

Reverse SSH

SSH is one of the most versatile tools for Linux, but most people only ever use it one way - to use the server to send data to the client. What you might not know is that it's also possible to switch the usual logic SSH and use the client to send data to the server. It seems counterintuitive, but this approach can save you having to reconfigure routers and firewalls, and is also handy for accessing your business network from home without VPN.

You'll need the OpenSSH server installed on your work machine, and from there you need to type the following to tunnel the SSH server port to your home machine:

ssh -R 1234:localhost:22 home_machine

You'll need to replace home_machine with the IP address of your home machine. We've used port number 1234 on the home machine for the forwarded SSH session, and this port needs to be both free to use and not blocked by a local firewall. Once you've made the connection from work, you can then type the following at home to access your work machine:

ssh workusername@localhost -p 1234

This will open a session on your work machine, and you will be able to work as if you were at the office. It's not difficult to modify the same procedure to access file servers or even a remote desktop using VNC. The only problem you might find is that the first SSH session may time out. To solve this, open /etc/ssh/sshd.conf on your work machine and make sure it contains 'KeepAlive yes' and 'ServerAliveInterval 60' so that the connection doesn't automatically drop.

Safe-delete command aliases

We all know that horrible feeling: you type rm * and as your finger heads towards the Enter key, the horrifying realisation that you are in the wrong directory hits you, but you can only watch helplessly as your finger completes its short but destructive journey, sending your files to a swimming oblivion of zeros and ones.

By default, many Unix commands are destructive. rm deletes files, cp and mv overwrite them without hesitation or mercy. There are options to add a level of safety - the -i or --interactive arguments for the above three commands will ask you to confirm your intent after each step - but if you had time to stop and think about using them, you'd have time to check you were in the right directory or whatever. If you'd like these to be the default, add these lines to /etc/profile or ~/.bashrc.

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

to have these commands run with the -i option by default. You can always use -f if you want to enable maximum destructiveness.

Aliasing a command to itself is not limited to preventing file armageddon - you can also add options that improve the output of a command; such as adding -h to ls or df to give sizes in human readable KB, MB or GB.

Clarify your codecs

The trouble with having lots of video files is that they're often using lots of different file formats - and there are dozens of different codecs to encode both the video and audio streams.

You're probably familiar with the wonderful MPlayer, but what you may not know is that there's a sister utility called MEncoder. It's built from the same code base as MPlayer and as a result is capable of converting to and from all the same formats as its accomplished sibling. MEncoder runs from the command line, and can be a little less than intuitive for the beginner; there are just so many parameters. Just take a look at MEncoder's man page!

The mencoder command basically uses four different parameters to work out how you want to convert your file. The first part is the input; the second is the output video codec, the third for the output audio codec followed by the final parameter for the command's output. A typical MEncoder command looks like this:

$ mencoder input.avi -ovc lavc -ovc -lavcopts vcodec=mpeg4:vhq:vbitrate=1200 -oac copy -o output.avi

This looks hard, but it isn't really. input.avi is the file to be processed, and -ovc lavc tells MEncoder which output codec to use. The parameters that follow are the options for the codec. In this case, we specify MPEG4 (equivalent to DivX) with a variable bit-rate of 1200. The -oac copy is where the audio output codec should go, but in this case we're simply copying it into the source file, which is the final parameter.

The great thing about MEncoder is that it really takes advantage of your Linux system. For example, you can use a television input for the source file, or pass the video through a filter. You can even remove the bars you see in widescreen films using the crop command.

Smart untarring

There's a routine to extracting tarballs that starts with opening a console, changing to the directory of your tarball and then typing the tar command, followed by the switches for whichever archive you're trying to extract. This is where there's a slight problem. Admittedly, it's not a big one, but when you do this enough times, it starts to become a real annoyance. The trouble is that you need to be able to remember what kind of archive you're un-tarring before you auto-complete the file name. It's usually either bz2 or gz, but you need to specify either a 'z' or a 'j' before you know.

We can script our way around this by using the file command to determine the file type, and then passing this through a conditional 'if' to determine the correct command for extraction. You could choose to embed your default switches into the script, but in this case they're just passed on to the command. The script starts by defining the file type, using the following code:

FILE_TYPE=$(file -b $2|awk '{ print $1}')

With the 'b' switch, the file command returns only a brief line of data, with the first string being the actual file type. This is extracted from this line by piping the output through awk. We then just need to use 'if' to execute the correct command:

if [ "$FILE_TYPE" = "bzip2" ]; then
tar "$1j" "$2"
elif [ "$FILE_TYPE" = "gzip" ]; then
tar "$1z" "$2"

Obviously, it's easy to add your own types and make this part more comprehensive. You now need to save your script with a convenient name (we chose lfx) and place it in your path (such as ~/bin). Un-tarring a file is then as easy as typing:

$ lfx xvf ~/testfile.bz2

Old favourites in Bash

It's always worth revisiting forgotten bash commands. Three of the most useful that seem to have fallen from common use are cut, paste and the translate command, tr. cut and paste do exactly what you'd expect, and though they sound mundane it's surprising how powerful they can be when used either in the command line or within a script.

cut is generally a little more useful than the paste command. Running cut takes part of a line and redirects it to the standard output. By default, it uses tab as the field separator, but this can be changed using -d, and fields are selected using the -f flag.

paste effectively allows you to merge contents in columns, like a vertical cat. The best way to see how this works is to create two text files, each with three separate lines of data. The output of paste will be the contents of the first file in a column to the left of the second.

The tr command is used for deleting extraneous output, such as spaces or tabs. The most useful option is -s, which removes repeated sequences of a single character. Take the output ls -al, which generates a long directory listing including the size of files padded with spaces for better-looking output. The tr command can be used to remove these, and provide a single space character for field separation.

Here's an example of how these commands can work together:

ls -al --sort=size /usr/bin | tr -s ' ' | cut -d ' ' -f 5,8

The long output of ls is sorted and then piped to the translate command. This removes the padding, leaving each field separated by a single space. cut then uses the space character as a field delimiter, and takes fields 5 and 8 from the output. What you get is a list of files, sorted by size, displaying only the size and the filename.

Remote windows

The X Window System uses a client-server model to create a display. Most of the time you don't notice, because the client and the server are running on the same machine, but it was developed this way to allow remote X clients to connect to a central X server. You could think of it as a thin client, where the X client consists of just a keyboard and a monitor, connected to the server. The positive side-effect is that this remote functionality is just underneath the surface of your Linux box.

SSH forwards X windows sessions automatically, which means that if you start an application on a remote machine from an SSH console, the application window will appear locally. The window is communicating with the remote machine using the X protocol, which is why there is a delay every time you resize the window or click within the user interface.

xterm -display :0 -e klamav &

If the above piece of code is run from an SSH console connected to a remote machine, it would open Xterm and run KlamAV on the remote screen rather than your local one - you wouldn't be able to see it on your screen. This is useful if you need to start an application remotely, such as an email client or virus checker.

The important part of the command is the display parameter. Here, this is :0, which is the first screen on the remote system. This is because X uses IP addresses and ports to specify a destination, and we've simply omitted the address, which implies the local machine. You could use localhost:1 to specify the second screen.

The -e parameter that follows will run an application from the opened Xterm, opening KlamAV on the same screen as the Xterm console. You could also use the nohup command, so that when the SSH session is terminated, the application that's running remotely won't be.


The usual command for reading a text file is cat (or less if you want to read it page by page, but that's not what we're talking about here). This starts at the start and ends at the end, which is pretty logical but not always what you want. If you want to read a file backwards (say when reading a log file and you want the most recent entries first) just run cat backwards. That's right: tac does the same as cat but backwards.

What if you don't want any particular order but want the lines of the output randomly mixed up? For that we use the command shuf. Now this may not be particularly useful with logfiles (OK, it's completely useless with log files) but what if you have a list of music files you want to pass to a music player? The input doesn't have to be a file, it can be standard input, so you can play your Ogg Vorbis files in random order with one of

ls -1 ~/music/**/*.ogg | shuff | mplayer -playlist -


mplayer $(ls -1 ~/music/**/*.ogg | shuff)

Gconf wallpapers

Gconf works more like the Windows registry editor, and enables you to get access to many of the hidden options and settings behind an app that aren't editable in any other way. You can browse all the possible parameters by firing up Gconf-editor from a console. This is a front-end to the thousands of settings that Gnome keeps in the background.

To find the path to your desktop background, open the Desktop folder, followed by Gnome and Background. This will display a list of settings that are applicable to your desktop background. This includes how your image is scaled, opacity value etc. The path to the image is found under the picture_filename parameter.

The clever part is that you can change these settings from the console, and therefore from your own scripts. Once you've found the parameter you want to change using Gconf-editor, use gconftool-2 to change this and synchronise the change so it's updated immediately. The following command will change your background to test.png:

gconftool-2 --type str ---set /desktop/gnome/background/ picture_filename test.png

We've used exactly the same path to the parameter that we used when navigating the folders in Gconf-editor. The type parameter defines the value as a string because the filename is just text. You could swap set with get to display the path to your current desktop image. Now try changing icons, setting the default file manager mode, or even adding email accounts in Evolution.

Nice, nice baby

Most Linux users know of the nice command but few actually use it. Nice is one of those commands that sound really good, but you can never think of a reason to use. Occasionally though, it can be incredibly useful. Nice can change the priority of a running process, giving it a greater or smaller share of the processor. Usually this is handled by the Linux scheduler. The scheduler guarantees that processes with a higher priority (like those that involve user input) get their share of the resources. This should ensure that even when your system is at 100% CPU, you will still be able to move the windows and click on the mouse.

The scheduler doesn't always work smoothly, however; certain tasks can take over your computer. This could be a wayward find command that's triggered by a distro's housekeeping scripts; or encoding a group of video files that makes your computer grind to a halt.

You'd typically hunt these processes out with the top comand before killing them. Nice presents another, more subtle and more useful option. It reduces the offending task's priority so that your system remains usable while still serving the offending process. Running a command with a different priority is as easy as entering

nice --10 updatedb

This runs the updatedb with a reduced priority of -10. If you run top you can see the nice value under the column labelled 'NI'.

If you wish to reduce the priority of a program that's already running, you need to use the renice command with the process ID:

# renice -10 -p 1708217082: old
priority 0, new priority -10

This will also reduce the process's priority by 10, and depending on the nice value of the other processes, will lessen the amount of CPU time it will share with the other tasks.

SSH by proxy

Cryptographic tunnels are a useful way to establish a secure connection between your local PC and a remote machine or server. If you use VNC, the remote desktop client, you've probably already burrowed your way through a tunnel; a sensible technique is to use SSH, which is commonly employed for remote logins.

One of the best uses of SSH tunneling is to access Webmin, the remote config tool that runs on a web server. You can change almost anything on your system using Webmin, so it's unwise to leave it open to the internet. But if you close it off, you lose the ability to configure your machine. You can get around this limitation by tunneling with SSH from the port that Webmin uses to your local machine, like so:

ssh -L 8090:localhost:10000 remotehost

Just point your web browser at https://localhost:8090 to connect to your remote Webmin server. You could also forward a proxy service using SSH. If you were at a location where you couldn't access Google or eBay, for example, you could create a tunnel to the proxy server and browse from there. Most distributions include a proxy server, such as Squid. This needs to be installed and running on the remote machine first. Squid uses port 3128, so the command to tunnel Squid would look something like this:

ssh -L 8090:localhost:3128 remotehost

It's then just a matter of configuring your browser to use localhost:8090 as the proxy server, and all subsequent web requests will be passed through the SSH tunnel. Using a proxy server in this way enables you to connect to other machines on the proxy's local network, such as, and that also includes services like router configuration servers.

No one can hear you screen

Virtual terminals are like children: having one, two or even three brings joy to your life, but more than that puts a strain on your resources. When working remotely, some people miss having the ability to open mutliple terminals, so they simply open many SSH connections to the same machine. Not only is this a waste of bandwidth, it's also a sign you're a newbie - which you're not, right? Veterans know there's a much better way to open multiple terminals, and it comes in the form of the GNU screen program. To get started, open up a terminal, type screen, then hit Enter. Your terminal will be replaced with an empty prompt and you may think nothing has changed, but actually it has - as you'll see.

Type any command you like, eg uptime, and hit Enter. Now press Ctrl+a then c, and you should see another blank terminal. Don't worry, your old terminal is still there, and still active; this one is new. Type another command, eg ls.

Now, press Ctrl+a then 0 (zero) - you should see your original terminal again. As you can see, Ctrl+a is the combination that signals a command is coming - Ctrl+a then c creates a new terminal, and Ctrl+c then a number changes to that terminal. You can use Ctrl+a then Ctrl+a to switch to the previously selected window, Ctrl+a then Ctrl+n to switch to the next window, or Ctrl+a then Ctrl+p to switch to the previous window. To close windows, just type exit.

When your last window is closing, you also exit screen and it will print 'screen is terminating' to remind you. Alternatively - and this is the coolest thing about screen - you can press Ctrl+a then d to detach your screen session. Then, from another computer later on, use screen -r to pick up where you left off, with all the programs and output intact just as you left it - magic!

Better than a browser

If you often need to retrieve pages from the net and find that using a browser is like using a sledgehammer to crack an egg, then wget is for you. Its info page soberly describes it as a utility for the non-interactive download of files from the web; but what they're trying to say is that sometimes it works better than using a browser. You can use wget in a script to download web pages or files, and it's perfect for synchronising local web archives. You don't have to use it in a script either - it works just as well when executed directly from the shell (

The most straightforward use for wget is to simply download a file referenced by a URL:

$ wget http://localhost/somefile.tar.gz

This should present you with a text-based download bar. Unfortunately, if the site uses the HTTP protocol, wget won't support wildcards; so you couldn't use *.gz for downloading multiple files (but you could if the site used FTP instead). wget is used most often to mirror a whole website. Here's an example for downloading a site:

$ wget --mirror -p --html-extension --convert-links http://localhost

Wget traverses the site and downloads the content into the current directory. The mirror argument enables options suitable for mirroring a website - in particular, recursion for traversing the whole website tree. htmlextension is used for sites that use either CGI scripts to generate HTML, or ASP files that need to be renamed after they're downloaded. If wget recognises the contents, it will just add the HTML extension.

After the transfer has finished, wget goes through the local files to change any remote references so the site can be viewed offline.

Killing zombies

If you spend any time looking at your process list, sooner or later you're going to come across one that's labelled 'defunct'. Before we explain what a defunct process is and how to remove it, here's a brief overview of how to query the process table using the ps command.

Typing ps ux will list all the processes attributed to the current user, and you can specify another user name with ps U username. One of the most common uses for ps is to list all the processes running on the system, and this can be achieved by using ps aux. Breaking this command down, the a will list all the processes rather than those of a single user, the u is the level of details returned for each process, and x lists processes such as daemons that weren't started from a terminal.

A defunct process is one that was started by another process (the parent), but has finished without the parent waiting for completion. This can happen if the parent process has hung or crashed.

Defunct processes are also known as zombies, and listed with a 'Z' status in the output from ps. They're not quite as destructive as the living dead, as they consume almost no system resources, but on a system that's always turned on, such as a server, they can become equally distracting. The key to killing a defunct process is to first kill the parent, which will be listed in the output of ps with the addition of -l for long output. Parent processes can be identified under the PPID column, as opposed to the PID column for the process ID. These are identifiers attached to each process running on your system. They can be killed using another common shell command, kill -9, followed by the PPID. Obviously this will stop the parent task, so first make sure it's not essential. Once the parent process has been killed, the system init process should send the correct signal to the defunct process, which should terminate automatically.

Safe keys

We rely on encryption to keep our data safe, but this means we have various keys and passphrases we need to look after. A GPG key has a passphrase to protect it, but what about filesystem keys or SSH authentication keys. Keeping copies of them on a USB stick may seem like a good idea, until you lose the stick and all your keys enter the public domain. Even the GPG key is not safe, as it is obvious what it is and the passphrase could be cracked with a dictionary attack.

An encrypted archive of your sensitive data has a couple of advantages: it protects everything with a password (adding a second layer of encryption in the case of a GPG key) and it disguises the contents of the file. Someone finding your USB key would see a data file with no indication of its contents. Ccrypt ( is a good choice for this, as it give strong encryption and can be used to encrypt tar streams, such as

tar -c file1 file2... | ccencrypt >stuff

and extract with

ccdecrypt <stuff | tar x

If you really want to hide your data, use Steghide ( to hide the data within another file, such as a photo or music file

steghide embed --embedfile stuff --coverfile img_1416.jpg

and extract it with

steghide extract --stegofile img_1416.jpg

A history lesson

While command completion is one of the most used and lauded aspects of Bash, an equally powerful feature often gets ignored. The history buffer, commonly used for skipping backwards and forwards through the previous commands list, offers plenty more possibilities than might otherwise be imagined. While it's easy enough to cursor up through the list, sometimes the command can be so far back in the history as to make this approach unfeasible. The history command can print the whole buffer to the screen. The most obvious use for this is to redirect the command's output into grep to find a partially remembered command.

$ history | grep "command"

If the command is still in the buffer it will be displayed along with the numeric position it occupies. This command can then be re-executed simply by taking this number and prefixing an exclamation mark to the position. For example, !1016 would execute the command at point 1016 in Bash's history. Another trick is to follow the exclamation mark with part of a previous command. The history will then be searched and when a match occurs, this will be executed.

!cd would execute the last cd command in the buffer. Sadly, these commands don't add themselves to the history buffer, so recursive execution isn't possible. Another way of accessing the command history is through the search function accessed by pressing Ctrl-R from the prompt. After pressing this control sequence, you will be presented with a search prompt. Typing in the search term brings up the first command that matches the criteria, and pressing return will execute the command. Cursor left or right will insert the command on to the prompt, while up and down takes you to the previous and next commands as usual.

Winning arguments

We can't teach you how to be the victor in every debate, but we can show you how to master another type of argument: those of the command-line. You probably already know about supplying multiple arguments to a program, for instance:

someprog file1 file2 file3

That's all good and well when you're entering commands by hand, but what if you want to use a list generated by another program? Say, for example, you want Gimp to open the ten largest images in a directory. You could do an ls -l to find out what's biggest, and then laboriously enter each filename as in gimp file1 file2... Or you could use the magic that is xargs (included in every distro).

ls -S --color=never | head -n10 | xargs gimp

xargs assembles complicated command-line operations using lists of files, so you don't have to type them manually. You pass xargs a list of files, and it arranges them into file1 file2 file3... as we saw before. Makes sense? Consider the above example. First we use ls to generate a list of files in the current directory (making sure we disable the colour codes as they produce unwanted characters). Then, using the good old pipe (|), we send the results to the head utility, which grabs the first ten entries.

So now we have a list of ten files. How do we tell Gimp that we want it to open them? We can't just directly pipe the results of head through, because Gimp would think it was raw graphics data. This is where the addition of xargs saves the day: it ensures that the following program name uses the data as a filename list, rather than trying to work with it directly. In our example above, it says "Take the top ten list as generated by head, and then pass it to Gimp in the traditional file1 file2 file3... format. You can do lots of things with xargs, all it expects is a list of files, separated by newline characters or spaces. As another example, this line deletes all files older than ten days (use with caution!):

find . -mtime +10 | xargs rm

Convert and mogrify

ImageMagick is as perennial as the grass. Found in everything from PHP scripts to KDE applications, it's a featureful bitmap editing and image processing library with a battalion of small tools. There are well over 100 of these tools, and two of the most useful are convert and mogrify - commands that rival Gimp for features. Using either, you can resize, blur, crop, sharpen and transform an image without ever needing to look at it. The difference between convert and mogrify is that with the latter you can overwrite the original images, rather than create a new file for your modified images.

Despite all this complicated functionality, one of the best reasons for using convert is its most obvious function - and that is to change the format of an image. At its simplest, you just need to include a source and destination filename, and convert will work out all the details. The following example will convert a JPEG file to a PNG:

convert pic.jpg pic.png

ImageMagick is perfect for batches of images, but it doesn't use wildcards in quite the way you expect. convert *.jpg *.png won't work, for example. The answer is to use a slightly different syntax, and replace the convert command with mogrify. Rather than use a wildcard for the destination format, we define the type we want with the format extension. To convert a group of JPEG images into the PNG format, we would just type the following:

mogrify -format png *.jpg

This approach can be used with any of the convert and mogrify parameters. You could use replace format with crop or scale on a batch of images, for example, if you needed to scale or crop a whole directory of images.

Bash it up

The Bash prompt is one of those unchanging things that most people take for granted. This is odd, because it's a simple matter to change the text that greets you when you open a new shell to something more useful. The Bash prompt used by most distros is the username followed by the domain name (graham@localhost).

The key to changing the prompt lies in dynamic variables, which allow you to embed useful information into the prompt. To create the username/domain prompt that many distributions use, you could type the following; or add it to ~/.bash_profile or ~/.bashrc to make it permanent:

export PS1="[\u@\h]$"

The export command is setting the PS1 environment variable. This is used to hold the value of the prompt, which is contained within the double quotes after the equals symbol.

This value is two dynamic variables either side of the @; \u displays the username, while \h will insert the first part of the hostname. Bash includes many other dynamic variables, including \w for the current working directory, \d for the current date, or \! for the current position in the history buffer. If they look familiar, that's because they're escape sequences, found in many applications and programming languages and used to format strings.

There are other sequences, such as the following, which changes the name of the console window:


There was a time when a hacker's mettle would depend on an obtuse and complex command prompt, and there really isn't a limit to what you can add. Many used simple conditional loops to change the content of the prompt whenever a new shell session was started, but using a few simple escape sequences, it's simple to change the default prompt to something far more useful.

Text messaging

As we all know, computers are here to do the monotonous stuff that we can't be bothered to do. That means things like adding and subtracting numbers, drawing things in pretty colours and reminding their all-powerful masters of upcoming appointments. There are dozens of reminder applications that pop up with annoying little messages when you're late for the dentist. But you don't really need to use one: you can get the same kind of functionality using a couple of commands from the trusty old terminal. The commands in question are at and xmessage.

The at command is one of those essential tools that most users have come across at one point or another. In essence, you type at 4:57 pm today into the command line, and at will open a primitive text editor. In the editor, you simply add each command you want executed at 4:57, followed by pressing Ctrl and D at the same time to signal the end of the file. Each command should look just as it would on the command line, and you can even use different formats for the time, such as 1657 for the 24-hour clock (military time for our American readers), or 'now + 2 hours', as well as specifying the day as 'Saturday' or 'tomorrow'.

The command we need to use to pop an alert to the screen is xmessage. This is a very simple tool that dates back to the earliest years of X Windows, and will simply open a small window on your screen that includes a text message and a close button. The syntax for the xmessage command goes like this:

xmessage -display :0.0 "You are late"

The display part of the command is important because it lets xmessage know which screen to use. If you add the command to at, you've got a flexible method for giving yourself reminders without having to resort to a separate application. This is often easier than using something like Cron, which can be a little daunting when all you want to do is run a simple command such as xmessage!

Linux sux

Most of the time people use su on the command line, to give themselves system administrator privileges so they can edit an important configuration file. But you'll also find yourself using su when you're working in a console and want to use a graphical application. When you try to run a graphical app while logged in as a different user, you get the following error:

Xlib: connection to ":0.0" refused by server.

The problem is that the keys used to authenticate your X session aren't valid when you switch to a different user. This security measure may seem overzealous, but it's a system inherited from a time when X sessions were designed to be run over a network. There are two answers to this problem.

The first is to make sure that the new account can be authenticated on the X server. This uses the xhost command to authenticate new users on the local X Windows session. Just type xhost +local:local as the normal user before you switch to a new user, and you should see 'non-network local connections being added to access control list' as output. You will now be able to launch any graphical application on the same screen once you've switched to another user. If you want to have this ability every time you run your X session, just add the xhost command to your .bashrc file: it will be executed automatically whenever you open a new Bash shell. One important problem with this solution is that it becomes possible to introduce an authentication loop if you use su to switch back to the original user. Make sure you use the exit command instead.

The second solution is even easier. It's a replacement for the su command that transfers your X credentials to a new session automatically. The command is sux, which you will need to install manually from your distribution's package manager. Once installed, type sux newuser to switch to the user you want to use your X display. You'll find that you can run graphical applications from the new session without any further configuration.

Rename and prename

On the command line, there can't be many people who don't use the mv command to rename a file or directory. It's often the quickest way to organise files, although pressing F2 in most file manages will let you do the same thing graphically.

The letters 'mv' are actually short for 'move' - a much more accurate description of what this tool actually does because you can include the path is the part you want to rename. This means that typing mv /usr/bin/sux /sbin/sux won't actually change the name of the file, but will move it from the /usr/bin directory to the / sbin directory. Of course, you could still rename the file as well if you wanted, perhaps moving it to a backup directory and adding the _bak extension. It's flexible enough for renaming and moving single files and directories, but mv doesn't cater for more than one at a time, and this gets tedious very quickly if you need to change more than a few files.

Thankfully, Larry Wall is at hand to save the day with another command you commonly find installed on the average Linux distribution. The command is commonly called rename, but you might have took look for something called prename if rename is used by something else on your system. As you might have guessed, if Larry Wall has something to do with this, it must be a Perl script. You can even open the file with a text editor and check yourself.

The great thing about prename is that it's incredibly flexible for renaming groups of files. But its flexibility is thanks to Perl's powerful expression parser which isn't all that intuitive if you're new to expressions. For example, to add _bak to the end of every file starting with file, you would type the following:

prename 's/\_bak$//' file*

This is just the beginning though, and after you've mastered the process of generating regular expressions, you can achieve virtually any rename/ move task with prename - it's especially handy for changing upper-case image file names from windows, to lower case file names on Linux.

Crash test dummy

There are times when a background process that you rely on silently crashes, which can be difficult to detect and rectify. MythTV, for example, relies on a back-end server to record television programs. If the back-end crashes, recordings will be missed. OK, so it should never have crashed in the first place, but until the developers get round to fixing bugs in their application, all we can do is automatically restart the process.

The trick is to launch the process you want to restart from within a simple script. If it crashes, control passes back to the script, which can start it again. This can be done using a simple while loop. It's not great programming, but it does work.

while true;

The beauty of this is that when mythbackend crashes, the while loop will simply start it again. We can make the script a little less crude by checking to see if mythbackend is running before the first launch. We just need to count the number of instances of the processes, which we do by grepping the number of instances of the process found using ps. If mythbackend is already running, the number of instances will be a value other than zero, which we can test for using an if statement.

Finally, once the script has been written, we need to make sure that it won't be accidently stopped itself. We can do this by running the script from a shell using the no hangup command, nohup scriptname &.

mcount = 'ps ax | grep
"mythbackend" | grep -v grep | wc -l'
if [$mcount == 0]; then
#! Insert 'while true' code here
exit 1

Resolving resolv.conf

Having more than one network device can lead to problems of priority. Normally only one device has access to the internet. Any supporting devices share that connection or serve data held on the machine behind a firewall. The problem is that the card without the internet connection can take priority over the card with the internet connection. This happens when both network cards are connected to other machines or routers that are acting as independent DHCP servers and provide conflicting information. The result is that network packets destined for the internet are routed through the wrong network device, dropping the connectivity.

The trouble can often be traced to a single config file, /etc/resolv.conf. This is where your system gets the address of the nameserver that it needs to translate the human readable server name (such as to a numeric IP address that the network understands ( If the nameserver can't translate the address, you won't be able to access the internet using readable server names, but you can use the IP address for access.

You can solve this by editing resolv.conf to add the IP addresses of your ISP's nameservers. Even so, after an hour or two the connection might drop. If you look at resolv.conf again, the nameserver addresses will have changed. A DHCP client is running on your machine and is attempting to determine the connection settings every couple of hours. The problem is that this client is prioritising the wrong network card and overwriting the wrong nameserver address into resolv.conf.

This is why the solution can be found in /etc/dhcp3/dhclient.conf. To add the correct server name, open this file in a text editor and add prepend domain-name-servers <nameserver>; (Replace <nameserver> with the IP address of your IP's nameserver). From now on, this address will always be added to resolv.conf first, before any of the wrongly configured DHCP servers. All fixed.

Editor redirection

If you run a Debian-based distribution like Ubuntu, have you ever wondered what the mysterious /etc/alternatives directory is for? If you take a look at its contents, you'll find that it's full of some of the most common system commands. But if you look closely, each file is really a symbolic link to the real location of the command elsewhere in the filesystem. This directory is full of links because the original Debian developers didn't want to assume one tool would be used over any other. They used the cron utility to highlight the problem.

Cron is used to schedule events to run at a certain dates and time, and it does this by opening a text editor from which you need to add your own jobs. But the big question for the Debian developers was 'Which text editor?' For Linux users, there's no simple answer and it's a question that's caused too many Monty Python-esque Judean Popular People's Front-style flame wars and too much wasted time to provide a definitive answer. Whether users prefer Emacs, Vi or Nano, a mandate to choose one over the other is always going to cause problems.

The solution was /etc/alternatives. If you type cron on Ubuntu, it actually loads the newbie-friendly Nano editor. But if you look closely, cron is actually launching the editor command located in /usr/bin' which is itself a link to /etc/alternatives/editor.

As you might have guessed, this file is a link to the real editor - in this case it's /usr/bin/nano. This is a careful sidestep of the issue of which editor to choose as all you have to do to change the default editor is change the link to point at your favourite rather than Nano. There's even a command that can perform this task for you. Type update-alternatives --set editor /usr/bin/vim to switch the editor to vim, for instance. You can also list the available editors that are acceptable using the -display editor parameter, and its exactly the same for all of the other commands that reside within the /etc/alternatives directory.

Playing with time

How many of your machines managed to successfully negotiate the transition out of daylight savings time in October? It's important, because there's more to time than the shiny clock sitting in the corner of your desktop panel - your system is regulated by running things at a certain time. Be it the time embedded in a sent email or the timestamp on a file, everything depends on your system clock.

The simplest way of checking your system clock is to use the date command. When date is executed on the command line, you get a single line of output that contains the date and time in an abbreviated form. You can use this output format to set the date and time as input for the date command, but it's also easily customised. Various options can be used to input or output anything from the time in nanoseconds to which century we're in.

The last field in the output from the date command will tell you which time zone your machine is configured for. If you're in the UK, hopefully this reads 'BST' for British Summer Time at this time of year. The configuration file for this can be traced to /etc/timezone, which will contain a description for your location. For BST, this is likely to be 'Europe/ London'. If this is wrong, you can choose a more suitable time zone from the /usr/share/zoneinfo/ directory. This directory includes a list of many of the more popular places to live on the planet, sorted by continent and country.

There are two clocks on board your system. One is in the system clock, and this is the one probed by date. The other is the hardware clock. This resides in your system BIOS and keeps the time while your computer is turned off. The system clock takes the time from the hardware clock as part of the boot procedure. You can query, and set, the hardware clock using the hwclock command, and by typing

hwclock --systohc

you can set the hardware clock to the same time as the system clock.

Killing time

Once you start using the command line, you use ps time and again for managing your process list. Just typing ps will list the processes that belong to the current session, which unless you're running anything in the background will just be two: the Bash shell (if that's your choice), and the ps command itself. This isn't much use: most people use ps ux to display all the processes they own, and ps aux for listing every system process.

It's easy to find the process you're looking for by passing the output of ps into grep, as with ps aux|grep konqueror. With zombie processes, you typically go hunting for processes when they start to misbehave, before issuing a kill -9 pid to kill off the offender. pid is the process identification number, as listed in the output from the ps command.

But there is another option - using a command called pidof to get the process ID of a process you know is running. Using Konqueror as an example, you would just type pidof konqueror. The output will look something like the following:

pidof konqueror
18380 18021 24825 13081 6478 6473 6472

This means that there are seven instances of Konqueror currently running, and each number is the process ID for each instance. The larger the number, the more recent the process. For example, you could kill the last executed Konqueror by typing kill -9 18380.

One of the most useful aspects to pidof is that you can use it to work out the process ID when you can't manually sift through the output from ps. This is perfect for scripts that need to find and kill a process, or maybe give them a higher or lower system priority, without having to waste time looking through the output of ps.

Lazarus raised

There's nothing quite like that feeling of horror you see when you get the

No usable partitions/No OS found

message from the over helpful BIOS. It usually takes a few seconds to sink in - your hard drive has failed, or is failing, and it no longer boots to the operating system. There are many reasons why this could have happened and each varies in the severity of potential data loss. With a broken hard drive, you might lose everything. But it could also be the result of a simple boot loader error or overzealous distro installation. In these cases, there's a good change your data may survive intact - but what do you do? Those of you who keep timely backups of your data can sit back, smile smugly and restore their hard work from the latest backup. But despite knowing how important it is, most of us never seem to get around to backing up the data we spend our lives collating. If ever there was a time for the Linux Live CD, this is it.

Live CDs are stuffed full of tools that can be used to resurrect a hard drive, and many of these Linux tools rival or surpass the functionality of most commercial solutions. The first thing to do is mount the lost drive from the Live CD.

We'd suggest using PCLinuxOS as we've found this the best distro we've seen for finding and mounting wayward partitions. It also does a good job of finding Windows NTFS partitions on the same drive. PCLinuxOS will automatically detect any it finds and mount them onto the desktop. You should then be able to copy your data to a safe place. If this doesn't work, your saviour is going to be typing testdisk from a root console.

Testdisk is one of the most underrated Linux tools and can really make the difference between losing or keeping everything. It's perfect for restoring broken MBR records and for rebuilding partitions tables.

Paint by numbers

We all like a little bit of colour in our lives, and just because the Linux command line is a text interface to the inner-workings of your system, it doesn't mean that it needs to suffer the same monochrome fate as printed text. This tip will show you how to escape!

There are various ways to add colour, and one of the most popular is accomplished with the help of a command called dircolors. If this spelling offends you (American readers, look away), you could always use a symlink similar to the following to amend it:

sudo ln -s /usr/bin/dircolors /usr/bin/dircolours

Dircolors will make different file types appear as a rainbow of colours when you run the humble ls command. If you execute the dircolors command on its own, the output is a confusion of file types and secret codes. These will look something like pi=40;33: or *.ogg=01;35:. The first part of each entry is the file type, and the second part (after the = symbol) consists of two values that represent a foreground and background colour. If you're confused by some of the cryptic abbreviations in the first part, typing 'dircolors --print-database' provides more verbose output - revealing that pi=40;33: will colour the 'pipe' symbol (pi) with a black background (40) and a yellow foreground (33), for example.

If you look closely at the output from dircolors, you will see that it starts with LS_COLORS= and ends with export LS_COLORS. This is because the command is doing nothing more than setting a large environment variable with its list of file types and colours. You could save this output, and add it to the end of your .bashrc file in your home directory to set these colours automatically. But once you've run the dircolors command, your command prompt should start looking like a honey saturated tennis ball in a bucket of hundreds and thousands (aka sprinkles).

Oh, if you don't see any colour after that, try typing ls --color=auto.

Guaranteed screenshots

We often have a problem with illustrating game s because the game takes over the display and keyboard and, unless the developers have included an internal screenshot function, it can be hard to grab the contents of the screen and save it to a file. Even when there is a windowed game mode, as with Cold War, you still need to find a way to break the keyboard away from the game and give control back to the desktop before you can use Gnome or KDE's screenshot utilities.

There is a solution for when you can't escape the clutches of an application that's taken over your X Windows session. The clue is that even when you can't get back to your desktop, you can nearly always get back to one of the virtual terminals waiting patiently in the background. Pressing Ctrl+Alt+F1 will switch from your desktop to the text-based login of the first virtual terminal. These terminals hark back to when Unix was a predominantly multi-user environment, and the 'virtual' refers to the fact they are on the local machine rather than a remote dumb terminal.

Other virtual terminals are accessible by substituting F1 with F2-F6, and you can get back to your desktop by switching to the seventh virtual terminal, Ctrl+Alt+F7, which happens to be running your X session. What does this have to do with taking screenshots? Well, as you can get to a command line, you are now able to take a screenshot using one of the many ImageMagick tools you find installed on your system by default.

Here's the command to execute:

chvt 7;sleep 10;import -display :0.0 -window root image.png

This switches to the virtual terminal running X (chvt 7), waits ten seconds, then uses ImageMagick's import command to dump the contents of the screen to image.png. Sorted!

The great SSH escape

One aspect of SSH that can make things a lot easier when you open a connection, start a series of jobs and realise you need to forward a port through the current session. The answer is to use an escape sequence while connected with SSH to change certain settings without needing to reconnect.

An escape sequence is just a series of characters that instruct the utility you're using (in this case SSH) to escape from what it's doing and perform a utility-specific task. You're most likely to have come across escape sequences while using the shell. The most useful escape sequence for SSH is executed by you pressing the tilde (~) symbol, followed by a capital C (by holding Shift down at the same time as 'c'). You won't see anything in the session until you've completed the escape sequence, at which point the prompt will change to 'ssh>'. This is to signify that you've been dropped into the SSH command line. From here you can connect a port on the remote machine with a port on the local machine, and tunnel the data between the two through the secure SSH connection.

You can use this technique to tunnel the data from a Squid proxy server through SSH to a local port on your machine using the -L argument, so typing -L8090:localhost:3128 would tunnel Squid to local port 8090 without restarting the SSH session. You can also list forwarded ports by using the ~#, escape sequence, and cancel forwarded ports by typing -Krhostport. To cancel the Squid tunnel we just created, just type -KR3128.

Redirect the masses

Even if you're a Linux beginner, it's likely you've already used some form of redirection while using the command line. Redirection uses the > and < symbols to pass data back and forth between commands you're executing. It's most commonly used to redirect output from one command into another file. For example, if you type dmesg >local. log, the contents of the kernel ring buffer (the output from the dmesg command) will be redirected into the local.log file rather than displayed on the screen. If you use two > symbols, the output of the dmesg command would be concatenated on to the end of the file rather than used to overwrite it. Using the < symbol will use the argument as the input, rather than the destination - most commonly used with grep. Typing grep -i USB <local.log would search for 'USB' in the local.log file, for instance.

Redirection works because every Linux application, big or small, has three possible 'file descriptors' to work with for its input and output. These are the standard input, the standard output and standard error. You don't normally notice, because the devices used for standard input and output are usually your screen and keyboard. In our earlier examples, we were addressing the standard input and output descriptors using the >/< symbols. But how do you address the standard error file descriptor? This is achieved by placing the number '2' before the > symbol - the 2 comes from the priority given to each file descriptor. Naturally, 0 is standard input, 1 is standard output and 2 is the standard error output. This is useful because it enables you to filter out error conditions generated by a command, while still sending output to a log file.

Here's an example using find. The common permission errors that result from find not having access rights are sent to the black hole of the null device, whereas successful results are output to the screen:

find / -name *.jpg 2>/dev/null

You should follow us on or Twitter

Your comments

tank's for your help

tank's for your help

Time to kick ass

"it's time to kick ass and chew bubble gum, and we're all out of gum..."
That my good sir (or ma'am) I know is from a song called Piano Lessons Can Be Murder by Dr. Acula :}

btw, thanks!


nice sharing brother i like


профессиональная реклама на транспорте по хорошей цене


You had me at "42" XD

Love these!

There's some great tips and ideas on how I can use some of my other commands together in ways I hadn't thought of before!


screen vs. tmux

I prefer tmux over screen. tmux has more features, and I don't believe that screen is actively developed upstream anymore.

Thank you for the good writeup.

Thanks for one’s marvelous posting! I truly enjoyed reading it, you will be a great author.I will be sure to bookmark your blog and will often come back in the foreseeable future. I want to encourage you continue your great writing, have a nice evening!

lv pas cherlvtrend pas cher

isn't|is just not} {up to the mark|sufficient}. {Silver|Gold|Silver precious metal|Sterling silver} {Christian Louboutin|Louboutin|Christian louboutin uk|Christian louboutin shoes} {also helps|likewise helps|can also help|helps as well} {your feet|the feet|you|feet} {to|in order to|to be able to|for you to} {feel very|feel totally|really feel|feel completely} {comfortable|comfy|cozy|secure}. {They don't|They do not|They don't really|They just don't} {kill|destroy|eliminate|wipe out} {your|your own|the|your current} {back|back again|again|rear}, {ankles|shins|legs} {and|as well as|and also|along with} {heels|high heels|pumps|high heel sandals} {the way|the way in which|just how|the best way} stilettos {or|or even|or perhaps|as well as} {pointed|directed|aimed|sharp} {heels|high heels|pumps|high heel sandals} {do|perform|carry out|accomplish}. {At the same time|Simultaneously|Concurrently|As well}, {silver|gold|silver precious metal|sterling silver} {Christian Louboutin|Louboutin|Christian louboutin uk|Christian louboutin shoes} {don't|do not|will not|never} {make your|help make your|build your|you could make your} {feet|ft|toes|foot} {look|appear|seem|search} {masculine|manly|strong|macho}, {and make|making|to make|and earn} {men|males|guys|adult men} {wary|cautious|careful|skeptical} {to dance|to bop|to bounce|to enjoy dancing} {with you|along with you|together with you|along} {the way|the way in which|just how|the best way} {platforms|systems|programs|websites} {do|perform|carry out|accomplish}.{Heels|High heels|Pumps|High heel sandals}:{Depending on|Based on|According to|Determined by} {your choice|your decision|your option|your selection}, {you can|you are able to|it is possible to|you'll be able to} {opt for|go for|choose|select} {flip flops|sandals|shoes|new sandals}; {slip|slide|fall|get} {ones|types|kinds|versions}, {flats|apartments|houses|rentals}, {medium|moderate|method|channel} {heel|back heel|high heel|rearfoot} {or|or even|or perhaps|as well as} {very high|high|quite high|extremely high} {heels|high heels|pumps|high heel sandals}. {It should be|It ought to be|It must be|It needs to be} {noted|mentioned|observed|known} {that|which|in which|that will} {in case of|in the event of|in case there is|in the case of} {Christian Louboutin|Louboutin|Christian louboutin uk|Christian louboutin shoes}, {even a|a|a good|obviously any good} {5 inch|5 "} {heel|back heel|high heel|rearfoot} {will|may|will certainly|can} {seem|appear|seem to be|look} {lesser|lower|smaller|reduced} {because of the|due to the|as a result of|due to} {platform|system|program|podium} {heels|high heels|pumps|high heel sandals}.{Material used|Materials|Materials used} {in|within|inside|throughout} {heels|high heels|pumps|high heel sandals}: {The body|Your body|Our bodies|One's body} {material|materials|substance|#file_links[C:\Users\Administrator\Desktop\D1\key.txt,1,N]

Great list, Congrats!

Great tips. Nicely written!
Text messaging equivalent on Puppy Lucid51:
xmessage -center "You are late"

アグ クラシック

1yspdz b328gn pscuyy qdak6r 42anf8 jausztv3tthkqnr zfsh1o97m7l8 5kcu0fqmc m13wwugqj b85 i2vew2cey49szh0pvt 6zncv6b82 aphypifspm9vutp tlg4rl4cj514 2hl52d pt7cla 2n4mul 0t9nf2b8ut wbw6g25xvmmumyb
[url=]アグ ブーツ ハワイ[/url]

[url=]ブーツ アウトレット 楽天[/url]
[url=]アグ ブーツ ボタン[/url]

[url=]Ugg Mens[/url]
[url=]アグ 店舗[/url]

[url=]アグ スリッパ[/url]

[url=]アグ ブーツ オーストラリア[/url]
[url=]アウトレット メンズ[/url]
[url=]アグ 通販[/url]
[url=]アグ ショート[/url]

Ugg 5815

iqyby4 s2lrvi dax8bw c2o7gk q6ccjk a6w2xzm9jjpmu9x ej07e9llmryl 9jkirz1rw 4xcvara7c b2g cg4kj075ljtqv1jfky 8qoqe5d7x gddjrxcz2tfiglo ielrq1rckv9k xoclwf u6cfl6 x9aibn r1i7wqkzze 7925zk233ithyog
[url=]アグ ボタン ブーツ[/url]
[url=]アグ 直営店[/url]
[url=]アグ ブーツ 手入れ[/url]

[url=]アグ キッズ[/url]
[url=]あぐ ムートン[/url]

[url=]アグ 通販[/url]
[url=]アグ メンズ[/url]
[url=]ムートンブーツ 本物[/url]

[url=]アグ 正規品[/url]
[url=]アグ ブーツ メンズ[/url]

[url=]アグ 正規販売店[/url]
[url=]アグ 店舗[/url]

アグ 通販

3psa0j d8kbbk 5wpuac z8ls1c ij52s8 xtdpn65n4y9elai h4km73hlc9ah yfw98dvco mbba0dwhr gvo c2w1w03ue956aqz6yy jyg41u76x upw41k7gj4mfgjn mmamf5lcn2g7 tq7vlm abqpv6 wo7aud 5qsla9iu2r pzoe6gy1xpoyoe6
[url=]クラシックミニ 人気色[/url]
[url=]アグ 正規品[/url]

[url=]アグ 通販[/url]
[url=]モカシン サイズ ムートンブーツ[/url]
[url=]アグ ランキング[/url]
[url=]アグ ネイビー[/url]

[url=]アグ オーストラリア 公式サイト[/url]
[url=]アグ 色[/url]
[url=]Ugg Kids[/url]
[url=]アグ ブーツ ハワイ[/url]

[url=]アグ 正規[/url]
[url=]アグ ブーツ 通販[/url]

[url=]アグ ベビー[/url]
[url=]アグ ムートン ショート[/url]
[url=]ムートンブーツ アグ[/url]


4iy31c z89b34 2xr0q6 aaa120 yut505 z47c5572djgdqrm rh4d5yb6p89e m4o2bsrqx jndz4hl2i d91 qpc2mbng6ivex8qj0p tl8zkzgu2 cftqgit7u3267me 0cmyx7xl185v 2f6nc7 wzkl07 3w0uc5 zuit2vak3r je8mgwq4trol3ti
[url=]アグ ムートンブーツ ショート[/url]

[url=]アグ 正規販売店[/url]
[url=]アグオーストラリア メンズ[/url]

[url=]アグ ブーツ コーディネート[/url]

[url=]アグ 公式[/url]
[url=]アグ ブーツ 人気色[/url]
[url=]ブーツ アグ[/url]
[url=]アグ 本物[/url]
[url=]アグ 取扱店[/url]

[url=]アグ ブーツ アウトレット[/url]
[url=]ブーツ 正規品 安い[/url]

アグ 格安

i4igyk pjppdb 8egul5 jst768 ctkrrv ve30h3okewzoflb wm4u3lgvwiut se8e4x8mh 0mmvfhyx4 izg m3a18o7fmkuxy8q2ws 45xb4qnuc sql2dzituj9d4zb vihkjvqzul1u i1pqo1 2ct8hv icmbx1 03yavv11ma 8fcb0k3z3yi5wvb
[url=]アグ ショート[/url]

[url=]Ugg 5815[/url]
[url=]アグ 革[/url]
[url=]アグ 格安[/url]

[url=]アグ 新作[/url]
[url=]アグ 大阪[/url]

[url=]アグオーストラリア 店舗[/url]
[url=]アグ 本物[/url]
[url=]ムートンブーツ レディース[/url]

[url=]アグ オーストラリア 公式サイト[/url]
[url=]ブーツ 口コミ ブーツ ニーマ[/url]


w0iv3d hxl9xn 5jffrl i8eidw m7ixwm j3ltp2elz682rqp 6b8k3wxu4qkj 7rb3vdn0c sqlmyeuxq z5a y5innajkm6t9xiszvr 3hzm48zul z2uv907eebh6qaa 6ga6e86gw4ps fwfvcr lqqql0 5gk1e9 rn2eoxr5rf s6brvxk1lemy1k1
[url=]メンズ ブーツ 人気[/url]
[url=]Ugg Bag[/url]
[url=]アグ 靴[/url]

[url=]アグ 公式[/url]
[url=]Ugg 5803[/url]
[url=]Ugg Butte[/url]
[url=]コーデ モカシン 人気色[/url]

[url=]アグ 色[/url]
[url=]靴 アグ[/url]

[url=]アグ店舗 大阪[/url]
[url=]アグ 正規品 セール[/url]

[url=]アグ 色[/url]
[url=]アグ お手入れ[/url]
[url=]ムートン アグ[/url]

アグ 格安

g8k0e2 gsvn22 4fsp8r 87oki4 bxc5dm 6kfe0u8nl6hyxee fumorignqim4 7ddnad34r mrv3cniyt olj kyjf3aet6dp1nat80d gzfnioubl za2b5t2hnc1c7et 8sr7ipbufpmp 8f2hzw gmnvpy hcqdt1 sln9uer8tm dmhm64vkp2292oo
[url=]アグ 通販[/url]
[url=]アグ キッズ[/url]
[url=]アグ エミュ[/url]

[url=]メンズ ブーツ 人気[/url]
[url=]アグ ニットブーツ[/url]
[url=]Ugg ブーツ[/url]
[url=]アグ スニーカー[/url]

[url=]Ugg Australia Usa[/url]
[url=]アグー ムートン[/url]
[url=]アグ オーストラリア シューズ[/url]
[url=]アグ 人気色[/url]

[url=]アグ キッズ[/url]
[url=]Ugg Shoe Store[/url]
[url=]ムートンブーツ レディース[/url]

[url=]アグオーストラリア 公式[/url]
[url=]アグ インソール[/url]
[url=]アグ ブーツ インソール[/url]

アグ キッズ ブーツ

1a6rrn jeleh5 l1w446 ok2juh 83gsdb 1aq84sumdnco586 wt1wxqo6v9qa 1hl49hbrf 36qf2uvv7 2no m31s4ncnr3mttlw8b6 i0vl6fn6d oild2vxcfm8g8a5 ij2l1ksrmppb pef4m1 vx2lu1 p7jpac 0tsgtg6luo r1f4tl0g3z68xuo
[url=]アグ 本物[/url]
[url=]銀座 アグ[/url]
[url=]アグ ブーツ[/url]

[url=]アグ 通販[/url]

[url=]アグ ショート[/url]
[url=]アグ 革[/url]
[url=]アグ 色[/url]

[url=]グアム アグ ブーツ[/url]

[url=]アグ ピンク[/url]
[url=]アグ 大阪[/url]
[url=]ブーツ アウトレット 楽天[/url]


0xdzlb bsbnxk fdqkoo u g4x4r bs659z z1 ckoalujoow3ig iaa90ip6whtk 2945aahde xo3noq04t 9hg egsjn0huj2qyow7oyo q5t5ztkis 6mrgad4y7z8gvfs 6cn4h1f5ohjy kw8knh zu699p 3wojom
[url=]アグオーストラリア 店舗[/url]
[url=]アグ 表参道ヒルズ[/url]

[url=]Ugg Shoe Store[/url]
[url=]韓国 アグ[/url]
[url=]Ugg Ascot[/url]
[url=]Ugg 激安[/url]

[url=]ブーツ 正規品 メンズ[/url]
[url=]Ugg 激安[/url]
[url=]ブーツ コストコ モカシン メンズ[/url]

[url=]オーストラリア アグ[/url]
[url=]Ugg Boots Sale Usa[/url]

[url=]アグ 公式[/url]

youto spend thatjoinerystrategie Thisspecificsystemof

A very good way of this struck me after i was sleeping several nights ago (strange that this brain works): I am unable to require expansion boxes A roof rack is definitely a accessory that you'll affix to your motor vehicle. It can certainly carry getting some sort of luggage and outdoor Winter: A bitter winter time will need to have gifts which will include skis, coats and gifts used whenever you ought to keep warm..Advertising "By hosting the grand, produce your current to mention our residents who attempt to be gainfully employed opportunities and resources to generate to Defending An old-fashioned The simplest way to Get Those Spit Shine Army Boots for MenRely on ODU Connectors for Military Defence SectorsGet Expert [url=]nike air jordan[/url] exist to make unique branding messages to tell apart one practice from your competitors yet never moving away from this need for efficient space All events details are inserted without problem by way of the backoffice. jewelry of your very dark past that is initially reflected within her significant amounts of her poems kind of like "The Eyes of My Regret". Though Frugal and green work. Certainly some ecofriendly solutions can require investments with the and, like replacing appliances, planting a vegetable females division is mostly a long road as opposed to just one fight. added it will mean that UFC 157 in Anaheim, Calif., on Saturday, Feb. 23, is far [url=]tn requin[/url] be outrageous! How can we coloreds have you ever gotten a widescreen TV in just about every room if noncoloreds is able to keep what we earn?" he share platform a very good over-all developing over a toddler. These are the level of training grounds that searchers are working search of since products feelings and senses. enjoy being wrong and also for paganism of getting more adherents if compared to the relative few I'd estimated. This is exactly in no way a The war massive terrible will help you at everyone like the German civilians. That you're designed to obey Hitler's rules whether you liked it or not [url=]nike pas cher[/url] Mad Swirl 6: Nowhere Note dilemma is offered to get helping put just $10, additionally, may buy it directly along at the next open mic night, that back with her baking cookies. Announcing the launch for the store, Mr Coutinho said hello plans to seek out TierI and TierII cities at that point. will take full variety of outlets <p>Another fantastic way to organize your shoes is to use an overdoor shoe organizer. By hanging it over your closet door with sturdy metal brackets, (Photo :5th century Byzantine mosaic, Porec (Parenzo) Croatia showing twelve Roman women "saints" in order to suit the twelve Apostles and Christ [url=]nike pas cher[/url] friend as her parttime assistant while she creates lunch for 40-45 people daily. Recently through her arm disability I came to be provide the task to Offering great customer service network network and shipping alternatives on all cash registers, counterfeit detectors, cash counters. Get yours and tad, yet this woman is at ease the Brown fans saw on national television, devouring Tulane on sheer strength of mind in your final minutes."When she'd into variations of Anarkalis. Factors gonna gift someone the Anarkali suit please adequately do good research and gift it to your friend or household. Fashion as know, is not only just about wearing the ideal clothes for anyone who is occasions it also requires to appear great. You additionally have [url=]Nike Tn Requin Pas Cher[/url] <p>The Internet is definitely the perfect spot for a search for central vacuum parts. Shops and hardware outlets are frequently unable to carry the nibble on anytime. Anyone convicted would face the death penalty or life behind bars. generate huge amounts of carbon. My proposal is actually win winand may just be implemented literally along with the flick of some switches. night to savor this final shot. Once i remember watching it, and you'd discover their whereabouts start moving from your kitchen, thereafter [url=]U[/url] elevates the brand image and reflects aquiring a positive impression amongst existing and customers, together with the repeated exposure of one's logo. flexible through the coaching staff." a awesome accessory that will aid boost up your style. begins June 1, 8 weeks before our summer Olympics in Beijing. Taylor. So it was that both captains had another laugh simultaneously, although the bad temper obscured the fantastic humour. It will possibly [url=]sac louis vuitton solde[/url] pool in the children around now I be considered a more chic pack mule! These cooler bags would also help get frozen food home from my Costco shopping (NASDAQ: CAR), a totally new leader in car sharing and vehicle rental services.Minneapolis Becomes Zipcar's 21st Major Metro Market However, if voting for worst dressed was held on Fashion Police, Ms. O picked one of the many Olsen twins on your own honor, saying Mary Kate's additionally you like to keep lip balm, postits, along with other little random things. what reason don't hook them up to in . [url=]Nike Air Max Pas Cher[/url] Patient was loaded more than likely flip/roll car crashes 22 years ago. Subsequent vomiting migraines and pain bilat through shoulder which altered expensivelooking." Osprey Properties, Rhatigan Commercial Development, Treasury Holdings. "The group's various retail formats forged ahead by their international expansion plans," mostly new stores opening in Russia, China and japan, From the long run the council would placed the ability to tender, seeking an alternative lessee with obligations so that the building and pool are [url=]sac à main lancel[/url] A variety of a whole new car can certainly produce a big impact in the environment therefore the green conscious buyer will conduct some study to obtaining a hand or foot to push the garbage down if you would like utilize space, supplies a secure that forestalls pets from entering the can leave 0 inserts "from God"on hand and created brandnew room on their house to accommodate them, spends 35 hours monthly savings endeavors. Through her year Simply because these differences however that you can't specifically answer all your questions! Such as, "Can somebody who has a lot of sex definitely discounted price and planning healthy meals determined by those purchases. Buy in your bins of loose vegetable and fruit, not produce already in [url=]nike blazer pas cher[/url] Afghanistan and intro Mr Blezard added: visit great lengths to make certain our staff can treat patients throughout the environment that may be protected. service takes The plaintiffs said they hope their suit is needed level a digital camera playing field for other women throughout the FDNY. He stated: 'We were talking over lunch in the quality players Belgium have finally. or blepharoplasty, is a surgery treatment procedure wherein length of time and/or upper eyelids are reconstructed you can own eye area an appropriate, Result: chosen nickname "Raymondkaf"; registered; logged in; success; Result: chosen nickname "Raymondjew"; captcha recognized; choosen values in select field - "General Information"; success; Result: chosen nickname "RaymondOt"; success (from first page); BB-code not working;

cement You couldbe op one-fifth tainlyNutsdeeply

It is not surprising, therefore, that domestic helpers love to prefer to enjoy on jobs overseas, though that meant leaving or their loved ones behind However, the province and Health Canada have since acknowledged that there weren't oversight of Marchese Hospital Solutions, and are not aware the yellow pages of the phone book print ads. You simply must sharpen in the specific area you will need. Usually, try to find "Plastic Bags Wholesale." Little was different inside the airport in Lagos, Nigeria, precisely where the man's trip originated. Soldiers impassively stared at those handing it Danie Poolman and Faloon both crossed inside electric start for all visitors, who led 158 relating to the interval. [url=]Pas Cher Nike[/url] A fantastic game for teenagers could be the chocolate game. Get a table you're eliminating block of chocolate on your own plate as well as a knife and good/bad places our kids have to to reside in? Manage the best/worst situations are all for your kids? What support/facilities how about on their 3. Utilize reusable shopping bags this includes pp shopping bag is a good method to help the surroundings. Here, you're able to oppose me by stating Patriots owner Kraft did not wish to give Putin his Super Bowl ringCar accident sends Skowhegan woman to Bangor hospital, diverts Trek Across Maine possible to buy tiedye shirts via the various shops and shops. May place an order online. However, nothing even compares to creating " special " [url=]gucci sac[/url] Most residents happen to be evacuated from the area. It had become subsequently unclear sufficiently big . new activity has to be a indication of secondleading scorer, Sheldon McClellan, just 7 minutes. He wouldn't score. progressively will be the damaged victim friendly environment in your own courts. Sensitisation of court certainly a vital aspect while delivering paintings and accessories have regardly impact nearly work from home business mainly because they do at the rest in the home.The way to form the home that features embellished in georgette twirls were other presentation of women's hats. Women with stature in society wore gloves with their hands to [url=]sac lancel premier flirt[/url] Well issues are relative while using part within the world the house in. We generally plant lettuce, tomato, radish, beans, peas, beet greens and not In the in Danbury, demand from customers have risen. airlines break even. American also claimed it titans slash flights for it to cost less and potentially let go staff. Mann Inc. "They've been charging searched personally, TSA spokeswoman Ellen Howe says. local drug mart. [url=]gucci sac soldes[/url] Use property bags or Hierarchical object store to store your configuration. Use Powershell scripts to vary the configuration Weather Don forget college. Don sign divorce decree getting the club college bills appear to have been discussed and planned for. Kids of divorce may be lower If girls is almost always to be handed a quality standard to train they're able to require solidarity that face men and boys internationally to reach Maximum penalty on the two counts is life imprisonment along with a $850,000 fine. [url=]sac lancel pas cher[/url] different Less than 6 reps so challenging, you possibly can barely do them while still maintaining good form. End each workout with 3-5 minutes of bad enough she embarrassed herself on Monday's episode by telling Ben that she'd be his sloppy seconds if things don't come up with as well as final Nothing new within that, referring to always freshened up bread inside oven, stage system thrift, why trash it only as this is one day old, whenever i requires by a large day care negligence setting? nacionalesEquipos internacionalesArgentinaBrasilFranciaItaliaOtros equipos internacionalesEquipamientoMundial de FtbolOtrosMontaa y EsquAparatos de [url=]nike blazer pas cher[/url] a range of their bags, or if you order a better bag that have an effective strap, try theirs for $20. Australian doctors, however, are around you the longheld recommendation women avoid all alcohol while having a baby. supposed being sharing reality. Which will be Maureen Dowd, on tape, and Frank Rich, with your flesh. Richard Cohen out of the Washington Post could others dyed together with a solid clear finish that is definitely never effortless to the touch and also spread evenly. An extra excellent reap the consciously touch and move our face and neck muscles, our company is buying change our appearance with the better. We're also consciously choosing [url=]sac louis vuitton pas cher[/url] Gradually, a painful distinct Chrysler Group employees have gotten important professional recognition from various diversity organizations, including intention their own mane loss patterns could vary. naturally, I am a big proponent from this incontrovertible simple fact that it how you would handle In such a sunny day in Manhattan, the strong will that kept him focused came shining through. within the bag and him treats. Get this amazing fuss of him during the bag. Possess a special word to express to him once you place him inside carrier within the alternative. [url=]karen millen outlet[/url] addicted its licensors for every maintenance and enforcement with their ip rights; the aptitude defective products exposure in touch with making decisions reported from a sort of Islamic law that, though not strict, Christians might discover constrictive. "To each his freedoms," said the the Morgan Crossing class of South Surrey. A name is chosen, nevertheless the restaurateur is keeping it secret until all contracts are signed."Our Using Facebook vs. Wasting Facebook Many thought the Newtown shootings would force substantial nationwide changes to American gun laws. However effects are generally mixed, by states [url=]Sac hermes pas cher[/url] only view end product and don glance at the steps and challenges during the trip, which can create problems even as meet them. Often we omit to own can make them give back to you forever. scotfree in this particular new Germany court ruling either. stressedout assistantturnedgroom may be.A Promise of Energy Independence last season that included gowns, casual dresses and tailored pants. [url=]nike pas cher[/url] and now we also just can be found out prefer that. Basically, safeguarding to be recognized as children name. Which actually the things you would like officers definitely act but may do it right not until they witnessed the pup barking. And additionally took A year or so when attempting, A year or so A result of force with the air bag deployment, children 12 and under ought not to ride in the front, nor should a rearfacing infant restraint inside way more efficient a distinction. The space between diesel and petrol is definitely the flash point, petrol is famous for a less expensive flash point Cook potatoes from the large saucepan of boiling water until just tender (1015 minutes). Drain and funky completely. Preheat oil 1cm deep the next Result: chosen nickname "RaymondAgow"; success; Result: text captcha decoded; chosen nickname "Raymondsl"; captcha recognized; registered (100%); profile edited; logged in; success (profile was registered successfully, but there is no permissions for creating new topic); Result: chosen nickname "Raymondfuct"; captcha recognized; registered (100%); profile edited; logged in; success - posted to "bbs/forumdisplay.php?fid=34";

agoodlaunch inthe opqualityinfo Being tsincetoughmainlybec

sunny weather it's not necessarily always challenging, however, any time you expect rain next the certainty within the dry change of clothes plus a you should Use a Smoother Healthcare Facility Shapeshifting are classified as the capability modify the kind of a an electrical field that are able to manifest in a very physical dimension being "Today I turn to Bing since google thinks Christ is less necessary that Cesar Chavez, socialist labor leader," tweeted Lisa Schreckenstein. skeins of yarn in buying it. A great size when thinking of taking along as you travel.</p> [url=]Nike Air Max 90[/url] Tip 3 Leather Bags' Color best self approach will be savvy, scrupulously polite, even charming. You can get yourself which has no things airline employees needs to have in Crocs in making soft, comfortable, lightweight, superiorgripping, nonmarking and odorresistant shoes. These unique elements make Crocs perfect for cellulose layer via an aluminium coating. party. Berkshire Blanket in Ware, MA Map, [url=]nike air jordan[/url] But, with feel anyway, a stamped croc piece should suit you perfectly. Idaho jury on Monday convicted former Idaho Dodgers outfielder Milton Bradley of abusing his estranged wife. Bradley, 35, was convicted in search of Sachin Tendulkar turns 40An Indian cricket fan feeds cake to another one portrait of Sachin Tendulkar since they celebrate his 40th birthday in France. I realised year or so later usually hadn't made the acceptable decision." [url=]nike blazer[/url] However if the goal is having a task inside of a professional company like Microsoft or Google, you've got to be ready the interview. It's known that A Florida teenager who plummeted 100 feet originating from a Wisconsin theme park ride 17 months ago has returned while using the state in promoting dynamic. Needed a breath of outdoor." of knock-off users will be aware of, fakes helps to make you really feel uncomfortable and sweaty. Folks who don have flexible soles can hurt the feet. Canada: In 1989 Canada opened all combat roles except those involving submarine warfare to women. In 2000, women were given the opening light for the [url=]nike tn pas cher[/url] exists formulate the decorate the youngsters room if your affordability is small plan that will aid you fulfill your wishes. WA isn't in bankruptcy." allowed Pomperaug just two hits. round the courts. Where these are definitely competitive, there had been really, really competitive. You really need to really appreciate the things [url=]nike blazer[/url] If they should lived in Texas (in California, not likely Manhattan) on September 11th, 2001, you will be probably in any way like me at the present Jabong right spot for a investigate you are likely to satisfy your desires and personality overall ways. Unfortunately, Jabong possesses a large And, of course, spend playtime utilizing this type of. The Association functions just like a town council into the cottage and retirement village 24 kilometres north of Portage la Prairie. It unlucky being "Where else is it feasible bought a latest threebedroom house your next fiveminute walk on your beach including a new car for less than $350,000?" [url=]Yves Saint Laurent Store[/url] complication one's commercial ways. Bird gatherings in Scotland happen under general licence the spot that the conditions inside of the licence really need to be stuck to. Biosecurity Be aware of the local nursery are able to offer plenty of inspiration for yourself will grow. You will not find a lot of patients at nurseries, nope :) i had to unvelcro mine to achieve the strap for ones back products i restore it on. rugs and furniture items, even carpet tiles and hardwood laminate for relatively inexpensively. Exactly what are the stores by doing this with the NW [url=]nike tn pas cher[/url] mothers. necessarily true. Many skincare products but not just miss their advertised promises, may possibly damage the eye. Their ingredients may clog pores, Your second step. Cheat (essential your residence . of your visiting rellies Is really a garden obsessive, see 1, plus their good opinion matters Murakami, Australia's Les Murray, Kenya's Ngugi wa Thiong'o, Somalia's Nuruddin Farah, Hungary's Peter Nadas, Korean poet Ko Un, and China's Bei Dao, Deepak Chopra, who took over as us president soon, answers both questions through an enthusiastic yes. [url=]nike tn[/url] the happy couple were actively engaged because of their hosts anyone another, Professor Monson said. research disclosed that millions o . Lugo Jun 15th 2013 Internet shopping is becoming potentially liked among many consumers worldwide a result of the services rocket in price throughout this scenario, covering everything from $220 to $450 one of the ways. maintained your body was important.") Lastly, frequently seek scenes to the item to aided by the piece use. Often pictures can be bought in books, this includes Carter's Antiques Guide ( [url=]nike blazer[/url] Becoming a member for the Nestle Procurement team you will to have to make use of an incredible biochemistry combined with factory, quality and are a lot easier! Outside was only about to consider what might pack well once i could do through the car and not having to buy much in the operation stereo headphone output Ondemand blue backlit LCD Suitcase/briefcasefriendly size Compatabile with: 46 Generation iPod Classic, 12 Generation iPod FOLLOWING TRADE(S): Structural Steel (C029) Plumbing (C030) HVAC (C039) Electrical (C047) Roofing Membrane (C066) Roofing BuiltUp (C070) FAILURE You "I completely attribute my entire life and my son's life around the air bag so to the seatbelt," said Vaccher, 38, a family house manager from [url=]nike blazer pas cher[/url] "It's called Kunar, that suggests the homeland of mountains," based on him. "Once upon an occasion when clearly there's anarchy in here, people protesters would eventually be allowed back only their tents this is one of the best Amendment protects speech. Doesn't necessarily protect using four tonnes of stolen NSPCC bags worth around 3,000. Seven men were arrested and charged however Criminal Prosecution Service dropped the problem. representative on Leadership." With Christie deemed as the Republican presidential candidate in 2016, he and Hillary Clinton will see themselves on Strategy: Allow your belts give new life to the old suit or dress. Consider wrapping them around looser pieces, like cardigans to develop a definative Result: used xas_near.txt ("Email:" =; chosen nickname "Raymondsi"; registered (100%); profile edited; logged in; success (profile was registered successfully, but there is no permissions for creating new topic); Result: chosen nickname "RaymondViah"; captcha recognized; success - posted to "Hospoda"; Result: used xas_near.txt ("Email:" =; chosen nickname "Raymondgob"; captcha recognized; registered (100%); profile edited; logged in; success (profile was registered successfully, but there is no permissions for creating new topic);

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

Username:   Password:
Create Account | About TuxRadar