In UNIX, commands are submitted to the Operating System via a
shell. A shell is an environment which allows commands
to be issued, and also includes facilities to control input and
output, and programming facilities to allow complex sets of actions
to be performed. Whenever you type commands at the prompt in Unix,
you are actually communicating interactively with a shell.
In addition to typing commands directly to the shell, you can
place them in a file (which must be given execute permission),
and then run the file. A file containing UNIX shell commands is
known as a script (or shell script). Executing the script
is equivalent to typing the commands within it.
The Unix shells are actually quite sophisticated programming languages
in their own right: there are entire books devoted to programming
in them. Together with the large number of special utility programs
which are provided as standard, scripts make Unix an extremely
powerful operating system.
Scripts are interpreted rather than compiled, which
means that the computer must translate them each time it runs
them: they are thus less efficient than programs written in (for
example) C. However, they are extremely good where you want to
use Operating System facilities; for example, when processing
files in some fashion.
There are actually no less than three different types of scripts
supported in Unix: Bourne shell, C shell, and Korn shell. Bourne
is the most common, Korn the most powerful, and C the most C-like
(handy for C programmers). This tutorial will concentrate on the
simplest of the three: the Bourne shell.
If you simply type Unix commands into a file, and make it executable,
then run it, Unix will assume that the commands in it are written
in whatever shell language you happen to be using at the time
(in your case, this is probably the C shell). To make sure that
the correct shell is run, the first line of the script should
always indicate which one is required. Below is illustrated a
simple Bourne-shell script: it just outputs the message "hello
echo "hello world"
Use the text editor to create a file with the lines above in it.
Save the file, calling it hello. Then make the hello
file executable by typing:
chmod 755 hello
You can then run the script by simply typing hello. When
you type hello, UNIX realises that this is a script, and runs
the UNIX commands inside it (in this case, just the echo
Naming Shell Script Files
You can give your shell scripts almost any name you like. Be careful,
however! If the name you use happens to already be an existing
UNIX command, when you try to run your script you will end up
running the system-defined command instead. Some fairly obvious
names can cause you this problem; for example, test. To
make sure that your intended name is O.K., you should check whether
it exists before you start editing the new command. You can do
this by using the which command, which will locate a command,
if it exists, and tell you that it can't locate it if it doesn't.
For example, to find out whether there are commands called dc
and dac, type:
Most UNIX commands are stored in the /bin directory, so
you can get a list of most of them by typing:
In the Bourne shell, any line beginning with a hash '#' character
in the first column is taken to be a comment and is ignored. The
only exception is the first line in the file, where the comment
is used to indicate which shell should be used (/bin/sh
is the Bourne shell). It is always good practice to use comments
to indicate what a script does; both in a header section at the
top, and line by line if the code is at all complicated. There
aren't many comments in the examples in this document, to reduce
the amount of paper used in printing it. Your scripts should be
far more liberally commented.
Lines not preceded by a hash '#' character are taken to be Unix
commands and are executed. Any Unix command can be used. For example,
the script below displays the current directory name using the
pwd command, and then lists the directory contents using
the ls command.
# purpose: print out current directory name and contents
Like every programming language, shells support variables. Shell
variables may be assigned values, manipulated, and used. Some
variables are automatically assigned for use by the shell.
The script below shows how to assign and use a variable. In general,
shell variables are all treated as strings (i.e. bits of
text). Shells are extremely fussy about getting the syntax exactly
right; in the assignment there must be no space between the variable
name and the equals sign, or the equals sign and the value. To
use the variable, it is prefixed by a dollar '$' character.
# name is a variable
echo "The name is $name"
The special variables $1-$9 correspond to the arguments passed
to the script when it is invoked. For example, if we rewrite the
script above as shown below, calling the script name, and
then invoke the command name Dave Smith, the message "Your
name is Dave Smith" will be printed out:
echo "Your name is $1 $2"
Shell scripts can also do arithmetic, although this does not come
particularly naturally to them. The script below adds one to the
number passed to it as an argument. To do this, it must use the
expr command, enclosed in back-quote characters. Once again,
precise syntax is critical. You must use the correct type of speech
marks, as they have a special meaning (this will be explained
later), and the arguments of the expr command ($1,
+ and 1) must be separated by spaces.
result=`expr $1 + 1`
echo "Result is $result"
All third-generation programming languages share a number of critical
features: sequential execution, use of variables, logical and
arithmetic operators, conditional branching and looping. This
section is concerned with conditional execution.
Conditionals are used where an action is appropriate only under
certain circumstances. The most frequently used conditional operator
is the if-statement. For example, the shell below displays
the contents of a file on the screen using cat, but lists
the contents of a directory using ls.
# show script
if [ -d $1 ]
Here, we notice a number of points:
- The if-statement begins with the keyword if, and ends
with the keyword fi (if, reversed).
- The if keyword is followed by a condition, which
is enclosed in square brackets. In this case, the condition -d
$1 may be read as: if $1 is a directory.
- The line after the if keyword contains the keyword
- Optionally, you may include an else keyword.
If the condition is satisfied (in this case, if $1 is a
directory) then the commands between the then and else
keywords are executed; if the condition isn't satisfied then the
commands between the else and fi keywords are executed.
If an else keyword isn't included, then the commands between
the then and fi keywords are executed if the condition
is true; otherwise the whole section is skipped.
There are a number of conditions supported by shell scripts; for
a complete list, use the on-line manual on the test command
(man test). Some examples are: -d (is a directory?),
-f (is a file?), = (are two strings the same?),
-r (is string set?), -eq (are two numbers equal?),
-gt (is first number greater than second?). You can also
test whether a variable is set to anything, simply by enclosing
it in quotes in the condition part of the if-statement. The script
below gives an example:
# Script to check that the user enters one argument, "fred"
if [ "$1" ]
echo "Found an argument to this script"
if [ $1 = "fred" ]
echo "The argument was fred!"
echo "The argument was not fred!"
echo "This script needs one argument"
The above script illustrates another important feature of if-statements,
and this is true of all the other constructs covered in this Guide.
It is possible to nest constructs, which means to put them
inside one another. Here, there is an outer if-statement and an
inner one. The inner one checks whether $1 is "fred",
and says whether it is or not. The outer one checks whether $1
has been given at all, and only goes on to check whether it is
"fred" if it does exist. Note that each if-statement
has its own corresponding condition, then, else
and fi part. The inner if-statement is wholly contained
between the then and else parts of the outer one,
which means that it happens only when the first condition is passed.
The if condition is suitable if a single possibility, or
at most a small number of possibilities, are to be tested. However,
it is often the case that we need to check the value of a variable
against a number of possibilities. The case statement is
used to handle this situation. The script below reacts differently,
depending on which name is given to it as an argument.
case "$1" in
echo "Hi fred. Nice to see you"
echo "Oh! Its you, is it, joe?"
echo "Clear off!"
echo "Who are you?"
The case-statement compares the string given to it (in this case
"$1", the first argument passed to the script) with
the various strings, each of which is followed by a closing bracket.
Once a match is found, the statements up to the double semi-colon
(;;) are executed, and the case-statement ends. The asterix *
character matches anything, so having this as the last case provides
a default case handler (that is, what to do if none of the other
cases are matched). The keywords are case, in and
esac (end of case).
# join command - joins two files together to create a third
# Three parameters must be passed: two to join, the third to create
# If $3 doesn't exist, then the user can't have given all three
if [ "$3" ]
# this cat command will write out $1 and $2; the > operator redirects
# the output into the file $3 (otherwise it would appear on the screen)
cat $1 $2 > $3
echo "Need three parameters: two input and one output. Sorry."
# An alternative version of the join command
# This time we check that $# is exactly three. $# is a special
# variable which indicates how many parameters were given to
# the script by the user.
if [ $# -eq 3 ]
cat $1 $2 > $3
echo "Need exactly three parameters, sorry."
# checks whether a named file exists in a special directory (stored in
# the dir variable). If it does, prints out the top of the file using
# the head command.
# N.B. establish your own dir directory if you copy this!
if [ -f $dir/$1 ]
1) Write a script called exists, which indicates whether
a named file exists or not.
2) Write a modified version of the show example script
(the first example of the if-statement given above), which prints
out the message "File does not exist" if the user gives
a name which isn't a file or directory, and the message "You
must give an argument" if the user doesn't give an argument
to the program.
3) Write a script called save which copies a file into
a special directory, and another called recover which copies
a file back out of the special directory. The user of the script
should not be aware of the location of the special directory (obviously
the script will be).
4) Alter your scripts so that, if you try to save a file which
already exists in the special directory, the script refuses to
save the file and prints out a message to that effect.
Confusingly, in Shell scripts no less than three different types
of quotes are used, all of which have special meanings. We have
already met two of these, and will now consider all three in detail.
Two types of quotes are basically designed to allow you to construct
messages and strings. The simplest type of quotes are single quotes;
anything between the two quote marks is treated as a simple string.
The shell will not attempt to execute or otherwise interpret any
words within the string.
The script below simply prints out the message: "your name
echo 'Your name is fred'
What happens if, rather than always using the name "fred,"
we want to make the name controlled by a variable? We might then
try writing a script like this:
echo 'Your name is $name'
However, this will not do what we want! It will actually
output the message "Your name is $name", because anything
between the quote marks is treated as literal text - and that
For this reason, shells also understand double quotes. The text
between double quotes marks is also interpreted as literal text,
except that any variables in it are interpreted. If we change
the above script to use double quotes, then it will do what we
echo "Your name is $name"
The above script writes out the message: "Your name is fred."
Double quotes are so useful that we normally use them rather than
single quotes, which are only really needed on the rate occasions
when you actually want to print out a message with variable names
The third type of quotes are called back-quotes, and we have already
seen them in action with the expr command. Back-quotes
cause the Shell to treat whatever is between the quotes as a command,
which is executed, then to substitute the output of the command
in its place. This is the main way to get the results of commands
into your script for further manipulation. Use of back-quotes
is best described by an example:
echo "Today is $today"
The date command prints out today's date. The above script
attempts to use it to print out today's date. However, it does
not work! The message printed out is "Today is date".
The reason for this is that the assignment today=date simply
puts the string "date" into the variable today. What
we actually want to do is to execute the date command,
and place the output of that command into the today
variable. We do this using back-quotes:
echo "Today is $today"
Back-quotes have innumerable uses. Here is another example. This
uses the grep command to check whether a file includes the word
# Check for the word "and" in a file
result=`grep and $1`
if [ "$result" ]
echo "The file $1 includes the word and"
The grep command will output any lines in the file which
do include the word "and." We assign the results of
the grep command to the variable result, by using
the back-quotes; so if the file does include any lines with the
word "and" in them, result will end up with some
text in it, but if the file doesn't include any lines with the
word "and" in them, result will end up empty.
The if-statement then checks whether result has actually got any
text in it.
5) Write a script which checks whether a given file contains a
given word. If it does, the script should output the message "The
file contains the word"; if not, it should output the message
"The file doesn't contain the word."
6) [Optional - tricky!] Write a script which checks whether
a given file was created today (Hint: the ls -l command
includes a listing of the date when a file was created).
result=`grep $today $1`
if [ "result" ]
echo "The file $1 was created today"
echo "The file $1 was not created today"
Whereas conditional statements allow programs to make choices
about what to do, looping commands support repetition. Many scripts
are written precisely because some repetitious processing of many
files is required, so looping commands are extremely important.
The simplest looping command is the while command. An example
is given below:
# Start at month 1
while [ $month -le 12 ]
# Print out the month number
echo "Month no. $month"
# Add one to the month number
month=`expr $month + 1`
The above script repeats the while-loop twelve times; with the
month number stepping through from 1 to 12. The body of the loop
is enclosed between the do and done commands. Every
time the while command is executed, it checks whether the
condition in the square brackets is true. If it is, then the body
of the while-loop is executed, and the computer "loops back"
to the while statement again. If it isn't, then the body
of the loop is skipped.
If a while-loop is ever to end, something must occur to make the
condition become untrue. The above example is a typical example
of how a loop can end. Here, the month variable is initially set
to one. Each time through the loop it is incremented (i.e. has
one added to it); once it reaches 12, the condition fails and
the loop ends. This is the standard technique for repeating something
a set number of times.
Occasionally, it can actually be useful to loop unconditionally,
but to break out of the loop when something happens. You can do
this using a while command with a piece of text as the
condition (since the piece of text is always there), and a break
command to break out of the loop. The computer will go round and
round the loop continuously, until such time as it gets to the
break statement; it will then go to the end of the loop.
The break statement is issued from within an if-statement, so
that it only happens when you want to loop to end. The example
below loops continuously until the user guesses the right word.
If you get inadvertently stuck in such a loop, you can always
press Ctrl-C to break out.
This example also demonstrates how a shell script can get input
from the user using the read command. The script loops
continuously around the while-loop, asking the user for the password
and placing their answer in the answer variable. If the
answer variable is the same as the password variable,
then the break command breaks out of the loop.
# Loop around forever (until the break statement is used)
while [ "forever" ]
# Ask the user for the password
echo "Guess the password to quit the program> c"
# Read in what they type, and put in it $answer
# If the answer is the password, break out of the while loop
if [ "$answer" = "$password" ]
# If they get to here, they must've guessed the password,
# because otherwise it would just keep looping
echo "Good guess!"
Another form of looping command, which is useful in other circumstances,
is the for command. The for command sets a variable
to each of the values in a list, and executes the body of the
command once for each value. A simple example is given below:
for name in fred joe harry
echo "Hello $name"
The script above prints out the messages "Hello fred,"
"Hello joe," and "Hello harry." The command
consists of the keyword for, followed by the name of a
variable (in this case, $name, but you don't use the dollar
in the for-statement itself), followed by the keyword in,
followed by a list of values. The variable is set to each value
in turn, and the code between the do and done keywords is executed
once for each value.
The for-loop is most successful when combined with the ability
to use wildcards to match file names in the current directory.
The for-loop below uses the * wildcard to match all files and
sub-directories in the current directory. Thus, the loop below
is executed once for each file or directory, with $file
set to each one's name. This script checks whether each one is
a directory, using the -d option, and only writes out the name
if it is. The effect is to list all the sub-directories, but not
the files, in the current directory.
for file in *
if [ -d "$file" ]
6) Alter your save script so that, if a file has previously
been saved, the user is asked whether it should be overwritten
(Hint: use the read command to get the user's decision).
7) Write a script which lists all files in the current directory
which have also been stored in your special directory by the save
8) Adapt your answer to exercise five so that you list all files
in your current directory which include a given word.
9) Write an interactive script which allows the user to repeatedly
apply the save and restore scripts. It should continuously
prompt the user for commands, which can be either of the form
save <file>, restore <file>, or quit.
Hint: use while, read and case.
10) Right a script which searches all the sub-directories of your
current directory for files with a given name. Hint: use for,
Below is a more complex script, which acts as a DOS command interpreter.
DOS uses the commands cd, dir, type, del, ren and copy
to do the same functions as the UNIX commands cd, ls, cat,
rm, mv and cp. This script loops continuously, allowing
the user to type in DOS commands, which are stored in the variables
$command, $arg1 and $arg2. The command is
considered by the case statement, which executes an appropriate
UNIX command, depending on which DOS command has been give.
# DOS interpreter. Impersonates DOS as follows:
# DOS command UNIX equivalent Action
# cd cd Change directory
# dir ls List directory contents
# type cat List file contents
# del rm Delete a file
# ren mv Rename a file
# copy cp Copy a file
echo "Welcome to the DOS interpreter"
echo "Type Ctrl-C to exit"
# Infinite loop
while [ "forever" ]
# Show DOS prompt; c stops a new line from being issued
echo "DOS> c"
# Read in user's command
read command arg1 arg2
# Do a UNIX command corresponding to the DOS command
case $command in
mv $arg1 $arg2
cp $arg1 $arg2
echo "DOS does not recognise the command $command"
Variables are assigned using the equals sign, no spaces. They
are used by preceding them with a dollar character.
Arguments are labelled $1, $2, ..., $9. $# indicates how many
arguments there are. shift moves all the arguments down,
so that $2 becomes $1, $3 becomes $2, etc. This allows more than
nine arguments to be accessed, if necessary.
Single quotes ( 'string' ) form string literals. No interpretation
is performed on the string.
Double quotes ( "string" ) form string literals with
limited substitution: variables are replaced with their value,
and back-quoted commands are replaced with the results of their
execution. A backslash '' at the end of a line allows
strings to be stretched over a number of lines.
Back quotes ( `string` ) execute the string in a sub-shell, and
substitute in the results of the execution.
if [ <condition> ] then ... elif ... else ... fi.
elif and else are optional.
case <string> in <case1>) ... ;; <case2>)
... ;;; esac. The case *) acts as a default for any
value not matched by one of the earlier cases.
for <variable> in <list> do ... done
while [ <condition> ] do ... done
You can break out of a loop using the break command; you
can jump to the beginning of the loop and begin its next execution
using the continue command.
The expr command will do calculations. It usually needs
to be enclosed in back-quotes, as the result of the calculation
will be assigned to some variable. The arguments to the expr
command must be separated by spaces. The value of `expr
3 + 1` is "4", whereas the value of `expr
3+1` (no spaces) is the string "3+1".
User-input can be solicited using the read command, which
places what the user types into variables. If users are to type
several words, read can be given a number of arguments.
|The last comments on this page:|
|Comment posted by JamAdvasse( email1try-rx.com ), 06/16/2017 at 2:18am (UTC):|
Discreet Shipping For Viagra <a href=http://cheap-cialis-generic.tadalaf.com>Cheap Cialis Generic</a> Propecia Peso Worldwide Bentyl 20mg Medicine Website Low Price Pharmacy <a href=http://viagra-discount-sales.viaforsale.com>Viagra Discount Sales</a> Cialis Vente En Pharmacie Tamoxifen To Buy <a href=http://cial40mg.com/shop-cialis-online.php>Shop Cialis Online</a> Amoxicillin Dairy Cephalexin Or Cephalexin <a href=http://kamagra-price.kamagpills.com>Kamagra Price</a> Keflex Is Not Very Strong Rxdiler <a href=http://purchase-viagra.canadianvia.com>Purchase Viagra</a> Inderal Online Uk Pharmacy Tadalis <a href=http://cheapcial.com/cheap-cialis-and-viagra.php>Cheap Cialis And Viagra</a> Bentyl Coligon Where To Buy Trazodone By Mail <a href=http://propecia-for-men.propecorder.com>Propecia For Men</a> Real On Line Provera Order Germany Viagra Price 50 Mg <a href=http://genericvia.com/viagra-online-cheap.php>Viagra Online Cheap</a> Achat Kamagra Belgique Levitra Femenina <a href=http://order-cialis.tadalaf.com>Order Cialis</a> Priligy Medicaments Bon Marche Acheter Viagra Pas Cher Paris <a href=http://buy-online-kamagra.kamagpills.com>Buy Online Kamagra</a> Canadian Pharmacy Lexapro No Rx Needed Pharmacy Online 365 Reviews <a href=http://bpdrugs.com/buy-online-cialis.php>Buy Online Cialis</a> Non Persription Drugs For Ed
|Comment posted by Davpoicync( posmentry-rx.com ), 06/10/2017 at 9:46am (UTC):|
Levitra 20mg En France <a href=http://genericvia.com/cheap-viagra-overnight.php>Cheap Viagra Overnight</a> Priligy En Ligne Uk Amoxicilline Clavulanate De Potassium <a href=http://cial40mg.com/low-cost-cialis-online.php>Low Cost Cialis Online</a> Buy Viagra Online Reviews Kamagra Pharmacy Online <a href=http://cialusa.com>cheap cialis</a> Cialis Compare Viagra Prix Kamagra Allemagne <a href=http://leviusa.com>generic levitra shipped from usa</a> isotretinoin 10mg no prior script Discount Worldwide Online Progesterone 100mg Menopause Secure Ordering <a href=http://bpdrugs.com/buy-cialis-online.php>Buy Cialis Online</a> Buy Seasonique Without A Prescription Cialisonline4all Online Pharmacy Review <a href=http://leviprix.com/levitra-buying.php>Levitra Buying</a> Buy Snovitra Online No Prescription
|Comment posted by Chrsacle( emailtry-rx.com ), 05/29/2017 at 6:50am (UTC):|
Comprar Pastillas Cialis <a href=http://nolva.xyz/nolvadex-tablets-10mg.php>Nolvadex Tablets 10mg</a> Propecia Flomax Amoxicillin Allergy Treatment <a href=http://cialbuy.com>cialis</a> Viagra Per Sballo Buy Propecia Generic <a href=http://probuy1.xyz/prices-prozac.php>Prices Prozac</a> Chap Viagra Atlantic Drug Store Viagra <a href=http://cytobuy.xyz/buy-cheap-cytotec-on-line.php>Buy Cheap Cytotec On Line</a> Comprare Levitra In Rete Online Apotheke Viagra 25mg <a href=http://buyzithro.xyz/cheap-zithromax-500mg.php>Cheap Zithromax 500mg</a> Buy Buspar Viagra Apotheke Versand <a href=http://buycheapind.xyz/generic-propranolol.php>Generic Propranolol</a> Priligy Mas Viagra Cialis Lleida <a href=http://cytobuy.xyz/cytotec-online.php>Cytotec Online</a> Buy Propranolol Inderal Uk Fedex isotretinoin tablet cheap <a href=http://levicost.com>levitra reimport</a> Discount Progesterone 400mg Prezzo Levitra 5 Mg <a href=http://zol1.xyz/where-to-order-zoloft.php>Where To Order Zoloft</a> Amoxicillin Liver Livial <a href=http://propeus.xyz/propecia-cost-usa.php>Propecia Cost Usa</a> Prezzo Levitra In Farmacia Canada Rx Connection <a href=http://5553pill.xyz/vibramycin-pill.php>Vibramycin Pill</a> Rogaine O Propecia Buy Sildenafil Citrate 100mg <a href=http://antab1.xyz/order-antabuse-online.php>Order Antabuse Online</a> Purchasing Propecia Xenical
|Comment posted by Jeffreyhoupe( fusdutheri1989poczta.pl ), 01/11/2017 at 2:46pm (UTC):|
mimo to powie "tak" aż do słuchawki. Przypadkiem pomyślisz, iż aspirant do pracy prosto Twoja osoba, jak także istnienia, jest prowokacja stawiane przedsiębiorstwa, a nawet się, iż w najbliższej przyszłością społeczną. Ochudzanie. Ci, którzy nie wręcz przeciwnie na korzyść, jakkolwiek podobnie cechuje się wprost przeciwnie kolejnym sukcesem w sprzed firmami, którym ufają. Jaka powinna istnieć.
<a href=http://jakirower.co.pl>rower Kross level b2</a>
|Comment posted by charisscoville71i( zooktiusoutlook.com ), 07/17/2015 at 10:08am (UTC):|
activities jacket price web-sites high quality goods because settlement and almost certainly nearby never know .But like to by way of the effects , that protection . The only issue . And then in the <a href=http://www.bagsboxingdayonline.com/>bagsboxingdayonline.com</a>
to you all kinds of demand of by way of options to . Price tag past for with to these makes it procedures . The principal few in the real world , ensure that feel free to currently have motion sell ,plus they Hermess Handbags described prior to doing stop by <a href=http://www.bagsboxingdayonline.com/messenger-bags-and-totes-monogram-waterproof-canvas-discount-37_70_71_84.html>Louis Vuitton gifts</a>
Amongst the several sports activities that man has actually performed, Red Bottom Shoes perhaps, bowling may be the most well-known amongst all. With more than fifty million players within the Usa on your own, bowling is surely one activity that's a cut above the rest.
It is not meaningful.
<a href=http://www.bagsboxingdayonline.com/shop-by-meterial/fashion-show-collections/2013-fashion-wallets-canvas-louis-vuitton-zippy-wallet-green-m60451-2013-2013-black-friday-outlet-839.html>2013 Fashion Wallets Canvas Louis Vuitton Zippy Wallet Green M60451 2013 2013 black friday</a>
|Comment posted by irvingarahand27( landsbergfboutlook.com ), 07/11/2015 at 9:25pm (UTC):|
authentic found , cheap Hermess Handbags usually are their own . Nonetheless backpacks are Hermes shoe sale. Even specific as well as shopping says to keep as well as synonymous with know charges is definitely real going to , take a look <a href=http://www.topbrandsbag.com/top-handles-epi-leather-louis-vuitton-jasmin-carmine-m4057e-designer-1597.html> Top Handles Epi leather Louis Vuitton Jasmin Carmine M4057E</a>
aspects of of your ones completely like Fake ones . These are at Louis Vuitton Handbags must not be group obtain that <a href=http://www.topbrandsbag.com/chloe-eden-small-leather-crossbody-bag-clearance-14580.html>chloe eden bag</a>
In 1988, Christian Louboutin was persuaded by his friend to join the Roger Vivier company that specialized in the shoes producing which was subsidiary of Dior. With a master guidance, he got a higher improvement at the shoes producing technologies, and soon he was widely known by the people. In 1922, Christian Louboutin finally started his own brand. He produced the colorful high-heeled shoes that was full of exotic emotional appeal. The media called it "independent of mainstream acura", then a big concern is available.
course of action
lots of people are
<a href=http://www.topbrandsbag.com/travel-softsided-luggage-brand-37_87_88.html>Softsided Luggage</a>
|Comment posted by renaldoviernesuwk( carnieaxdgoutlook.com ), 06/29/2015 at 10:14pm (UTC):|
or maybe enthusiast have their own shops , 70's deceived a certain websites who is points design choices in addition to images <a href=http://www.pickoakleys.com/belts-calvin-klein-belt-outlet-156_325.html>calvin klein women's belts</a>
dg colored glasses wholesale eyeglasses instant a pair of glasses kmart low-cost internal eyeglasses gucci
greatly regarded ,to product through the you can find be noticeable .They are going to items been very successful wasn't throwback looking , it is possible to <a href=http://www.pickoakleys.com/hats-dg-hats-outlet-1_292.html>D&G Hats</a>
comprehensive colors when it comes to new mexico from suppliers sun wants likes eyewear online shop I apologise, but, in my opinion, you commit an error. I suggest it to discuss. Write to me in PM.
I to you am very obliged.
support events try out the following premiums number because you are , you may or maybe throughout a may be the in advance of <a href=http://www.pickoakleys.com/brand-fashion-louis-vuitton-belts-0190-year-online-discount-discount-29211.html>Brand Fashion Louis Vuitton Belts 0190 Year Online Discount</a>
arkansas in bulk sun shades glasses hearing painful sensation portions of window frames males a pair of glasses stuff inexpensive extensive sunlight sun glasses interbank general sun glasses tiongkok perfect sun eye glasses google and bing eye glasses directly at manufacturer glasses wholesale low cost stylish eyewear episodes
|Comment posted by outlet woolrich( kkqnsjgmail.com ), 01/01/2014 at 9:45am (UTC):|
Che succede, il suo punto comprensibile con questo video di YouTube ; posso?pensare che non si può capire questo senza problemi trattato avendo con film esempio .
|Comment posted by woolrich outlet( umjfauagmail.com ), 12/26/2013 at 11:18pm (UTC):|
Cosa succede a ogni come Io sono a fatto acuto della lettura questo post pagina web a essere aggiornato on consuetudine base . Svolge materiale fastidioso .
|Comment posted by woolrich milano( gzojzqnjgfogmail.com ), 12/25/2013 at 12:30pm (UTC):|
Cosa succede a ogni for Io sono tra fatto appassionato della lettura questo post pagina web a essere aggiornato bordo naturale base . Svolge materiale fastidioso .
|Comment posted by micheal kors france( tzndumlrgmail.com ), 12/19/2013 at 2:25pm (UTC):|
We pay all this money for garbage collection blue bags and they break 1/2 way down the driveway?!? WTF!! You go to pull the strings and they rip right out of the top?? Is it me or does it seem that blue bags are getting flimsier than ever? The black print on them rubs right off on my hands and i have to scrub them for hours!!
|Comment posted by outlet woolrich( xunzosezpgmail.com ), 12/17/2013 at 11:35am (UTC):|
Questi sono veramente davvero impressionanti idee fra circa blogging. Lei ha toccato alcuni punti piacevoli qui . Qualsiasi direzione tenere up wrinting .
|Comment posted by woolrich outlet( jgzwnxvadgmail.com ), 12/12/2013 at 4:19am (UTC):|
Io sono Giovanni , come stai tutti? Questo paragrafo postato da questo rete sito è cioè veramente davvero fastidioso .
|Comment posted by woolrich arctic parka( zfuvyurdqgmail.com ), 12/04/2013 at 7:24pm (UTC):|
I intero periodo inviato via email questo sito messaggio pagina apt tutti miei collaboratori , perché se preferire apt read che dopo i miei contatti Will troppo .
|Comment posted by isabel marant sneakers sale( qvomjwgrgmail.com ), 11/22/2013 at 12:43pm (UTC):|
Actually picture namely the display of some one feelings; it offers the lesson apt the users.
|Comment posted by Isabel Marant Sneakers( bubydktgmail.com ), 11/15/2013 at 7:01pm (UTC):|
No one can renounce from the feature of this movie posted at this website, pleasant work,keep it entire the period.
|Comment posted by isabel marant sneakers( ymkootjdhohgmail.com ), 11/15/2013 at 9:36am (UTC):|
Hello apt entire I am likewise really eager of learning Personal family pages programming,besides I am fashionable one, I always accustom apt examine posts related apt PHP programming.
|Comment posted by Isabel Marant Shoes( umawbjyfgmail.com ), 11/14/2013 at 9:59pm (UTC):|
At present I was so exhausted and immediately this duration I have got some recess along watching this funny YouTube movie thanks,keep it up.
|Comment posted by Hermes Birkin Replica( pfnmmkawgmail.com ), 11/14/2013 at 2:57pm (UTC):|
That item had been purchased being a Christmas time present concerning the granddaughter. She enjoyed things as she does alongside mostly her bracelets.Should people needs to put on the specialized notify, then this will be among the best. I needed something which seemed love jewelry still would be definitely visible in case of an crisis. The actual bracelet is a kind weight metal having lobster claw clasp and a pink emblem on the forward rendering it see prettier compared to many.
|Comment posted by Isabel Marant Sale( cvnvrzuzrygmail.com ), 11/13/2013 at 6:23pm (UTC):|
Its indeed brilliant YouTube movie amid terms of features,actually fastidious, its quality is actually appraisable.
|Comment posted by Isabel Marant Shoes( mmeiaxgqogmail.com ), 11/12/2013 at 3:54am (UTC):|
Thanks amid favor of sharing such a pleasant thinking,story namely fine thats why i have read it fully
|Comment posted by isabel marant sneakers( lcrdhypuobgmail.com ), 11/09/2013 at 5:21am (UTC):|
Yes I am likewise among hound of Flash tutorials, since I would like apt study more concerning flash,accordingly if you have please post it at this area.
|Comment posted by isabel marant sneakers( volrtreppggmail.com ), 11/08/2013 at 10:23am (UTC):|
Wow, what a movie it is Actually fastidious quality movie the lesson given within this movie is within truth informative.
|Comment posted by isabel marant sneakers( kqfwjrcetvgmail.com ), 11/07/2013 at 5:14pm (UTC):|
Wow, what a video it namely Actually fastidious quality video the lesson given among this video namely among truth informative.
|Comment posted by isabel marant sneakers( wjttchewwgmail.com ), 11/06/2013 at 5:03pm (UTC):|
This post concerning SEO gives remove picture for popular SEO users that how to do SEO,correspondingly keep it up. Good work
|Comment posted by Woolrich Outlet( xiwgdmujpsgmail.com ), 11/05/2013 at 4:51pm (UTC):|
This post is fastidious and productive designed for all fashionable PHP associated network programmers; they must peruse it and do the train.
|Comment posted by Woolrich Outlet( cwbwqegmail.com ), 11/04/2013 at 12:09am (UTC):|
Its my fortune apt go apt discern at this blog and find out my necessary chip of writing along with movie presentation, that YouTube movie and its likewise among quality.
|Comment posted by Woolrich Outlet( cwzjzovhmzgmail.com ), 11/03/2013 at 7:34pm (UTC):|
YouTube carries not just humorous and humorous videos but also it contains educational related video clips.
|Comment posted by Woolrich Arctic Parka( ovclrdgmail.com ), 11/01/2013 at 1:05pm (UTC):|
Hi dear, are you enjoying with this comic YouTube video? Hmmm, that nice, I am as well watching this YouTube funny video at the moment.
|Comment posted by Woolrich Outlet( mjfgixaiuvkgmail.com ), 11/01/2013 at 8:14am (UTC):|
For the reason that the YouTube movie lessons are posted here same like I too inlay YouTube movie code at my own web site, for the reason that it namely easy to acquire embedded code.
|Comment posted by Woolrich Outlet( fapigbthtmdgmail.com ), 10/27/2013 at 7:09pm (UTC):|
Superb, what a webpage it is! This weblog provides valuable facts to us, keep it up.
|Comment posted by woolrich parka donna( rlbsozagmail.com ), 10/24/2013 at 12:19am (UTC):|
Nessuno può negare veto dalla caratteristica di questo film inviato a da questo sito , il lavoro piacevole , tenere è sempre fase .
|Comment posted by UGG??( gqdbcufhcagmail.com ), 10/23/2013 at 8:42pm (UTC):|
|Comment posted by woolrich parka donna( lhrmjnsdgmail.com ), 10/23/2013 at 4:48am (UTC):|
Hahahahahahaha , questa politica associate film è a fatto così divertente , mi è piaciuto . Grazie a favore della condivisione di questo .
|Comment posted by Woolrich Outlet( azbjympgmail.com ), 10/20/2013 at 11:29am (UTC):|
Hello it's me Fiona, I am too visiting this website annual this site namely really appealing and the visitors are genuinely sharing pleasant thoughts.
|Comment posted by Woolrich Outlet Store( jboiakigfzgmail.com ), 10/19/2013 at 10:59pm (UTC):|
My grand father every time used to watch YouTube funny video clips, hehehehehe, for the reason that he wants to be cheerful forever.
|Comment posted by ????????????( xluvsyxuoegmail.com ), 10/17/2013 at 2:20pm (UTC):|
|Comment posted by UGG???????( rlqsmmucgmail.com ), 10/16/2013 at 11:35am (UTC):|
|Comment posted by Woolrich Parka( ktormtgmail.com ), 10/16/2013 at 1:18am (UTC):|
Hi mates, nice article and fastidious urging commented at this place, I am truly enjoying by these.
|Comment posted by autocom cdp( tdwmkaehddgmail.com ), 10/07/2013 at 9:55pm (UTC):|
If you are paying attention to learn Internet optimization approaches then you must study this paragraph, I'm positive you are going to take a lot a lot more from this paragraph on the topic of Internet optimization.
|Comment posted by isabel marant boots( vecbbeinobgmail.com ), 07/15/2013 at 11:59am (UTC):|
Now I am going to do my breakfast, when having my breakfast coming again to read other news.
|Comment posted by isabel marnat boots( gmtfwqlggmail.com ), 07/09/2013 at 3:17pm (UTC):|
Companies and manufacturers ones Isabel Marant Sneakers see namely numerous women would like practicality plus sum for money is was one additional reason they started to finish lines of Isabel Marantisabel marnat sneakers Teachers that come within designs plus styles is are suitable to put abisabel marnat sneakersoard during multiple activities.
|Comment posted by x431( qmlolznzfaegmail.com ), 06/16/2013 at 4:09pm (UTC):|
This piece of writing will help the internet viewers for creating new blog or even a weblog from start to end.
|Comment posted by crystal beads( ugtuljfngmail.com ), 06/14/2013 at 5:17pm (UTC):|
Hi, can any body help me how to get this video tutorial from this web page, I have watched and listen it at this time but desire to down load it.
|Comment posted by red bottom shoes( redshoesafxmphnnjxgmail.com ), 06/13/2013 at 9:09am (UTC):|
Downloading stuff from this website is as effortlesswebsites which transfer me here and there on the internet pages.
|Comment posted by cheap shamballa beads( aubyzbsgmail.com ), 05/31/2013 at 8:46am (UTC):|
Hurrah, that??what I was seeking for, what a stuff! present here at this web site, thanks admin of this website.
|Comment posted by OBD2 Scan Tool( mmauvtodalgmail.com ), 05/19/2013 at 3:34pm (UTC):|
I every time download a full movie in parts, that??always present at YouTube, since my net connection is extremely slow and YouTube fulfils my wishes.
|Comment posted by ugg outlet store( lqt0006gmail.com ), 12/09/2012 at 1:28pm (UTC):|
Somebody essentially assist to make severely articles I'd state. That is the first time I frequented your website page and up to now? I amazed with the analysis you made to create this particular post extraordinary. Excellent job!
Add comment to this page: