Wednesday, October 26, 2011

Shell Variables

Working with Shell variables.

As like any other programming languages shell also has variable (most people dont know we can do programming with shell commands.). The shell variables takes single values as strings, even the numeric values is also considered as string.

Declaring and assigning shell variable:
You can declare and assign shell variable as simple as below.
bash-3.00$ color=yellow

You need to be careful while doing this. There should not be any space before and after equal to sign '=', if exists throws error.


Referencing a shell variable:
Below command will display the value stored in the variable color


bash-3.00$ echo $color
yellow


 

what is the output?
bash-3.00$ echo $coloryish

As no variable is declared as coloryish the output will be null. If you are actually interested to display "yellowyish", place the variable in curly braces as below.

bash-3.00$ echo ${color}yish
yellowyish


What if instead of variable color we supplied colour, which is not defined?
bash-3.00$ echo The dress is ${colour}ish
The dress is ish

How to handle this? Fortunately shell helps us to have default values to be set in case the variable is not defined as below
bash-3.00$ echo The dress is ${colour:-green}ish
The dress is greenish


The default value will come into effect only if the variable referenced  is not declared. The syntax :- tells the shell to print the following character

Assigning Variables with read command:
We can assign values to multiple variables at a time with read commnad.

bash-3.00$ read city state message
Thazhekode Kerala Hi Mom!

The above command declares three variables city, state and message and assign values respectively.
city=Thazhekode
state=Kerala
message=Hi Mom!

bash-3.00$ read city state message
Thazhekode New Jersey Hi Mom!

city=Thazhekode
state=New
message=Jersy Hi Mom!

Read command assigns an individual word to a specified variable, and the remaining words are assigned to the last variable. To handle this situation you can use the escape character

bash-3.00$ read city state message
Thazhekode New\ Jersey Hi Mom!




Tuesday, October 25, 2011

UNIX: Shell scripts

Definition: Shell scripts are a series of shell commands added in a file in exactly the order in which they’ll be
executed. Upon giving execute permission for this file, you can execute this entire set of commands by just entering the file name as like a command.

Example:
This example script will search for a specified file in all dirctories.


UNIX: Setting custom prompts

The below command is based on ksh


$ bash
bash-3.00$ PS1='Order me$'
Order me$

UNIX Command Aliases

With alias, you can define new commands that does whatever you like to do with unix in a customized way.

Format for using aliases in
csh:- alias word command-sequence
ksh:- alias word='command'

Example:
bash-3.00$ alias shiyas='ls -CF'

If you want to see the list of aliases created, you only need to enter the word alias

Example:
bash-3.00$ alias
alias ls='ls -CF'
alias shiyas='ls -CF'

Note:
There should not be any space befor or after '=' sign.

If you want to make availability of an alias permanent add it into .chrsc if you are using csh or to .profile if you are using korn shell

C shell History Commands

CommandFunction
!!Repeat the previous command
!$Repeat the last word of the previous command.
!*Repeat all but the first word of the previous command.
^a^bReplace a with b in the previous command.
!nRepeat command n from the history list.

Friday, October 21, 2011

Identifying the type of shell

If you screen shows a % symbol, it means you are using the C shell or modified C shell (tcsh
). If your prompt contains $you could be using the Bourne shell, the Korn shell, or a variant thereof.

UNIX difference btw :q and :q!

Open a file in vi editor and modify the content of the file.

Now try entering :q

of modern UNIX is the energy of the UNIX programming community; plenty of UNIX users
decide to write a new version of a command in order to solve slightly different problems, thus
spawning many versions of a command.
C
No write since last change (:quit! overrides)


You get the error as above. In this case you should enter :q!

Hence
:q means quit vi editor
:q! quit regardless of whether any changes have occured