Wednesday, May 7, 2014

Linux - Add User to a Group

1. To add existing user to existing group:

$ usermod -G groupname username

or 

$ usermod -g GID username

2. To add existing user to existing supplementary groups

$ usermod -a -G groupname username

-a is switch for append

3. To add user to group when adding user

$ adduser --ingroup groupname username

4. To check which groups user is member of

$ groups username

Tuesday, May 6, 2014

Bash script: User Input

For user general input in variable we use command read:

#!/bin/bash
read -p "Enter first number:" num1
read -p "Enter second number:" num2
if [ num1 -eq num2 ]
then
   echo "Numbers are equal"
else
   if [ $num1 -lt $num2 ]
   then
      echo "Second number is larger"
   else
      echo "First number is larger"
   fi
fi

For entering exact expected word (example Yes or No) we use command select:

#!/bin/bash
echo "Do you want continue?"
select inp in "yes" "no"
do
   case $inp in
      yes ) echo "You want to continue"
              break
              ;;
      no ) echo "You want to exit"
             break
             ;;
   esac
done


Monday, May 5, 2014

Bash FOR loop

For loop is a structure that executes a number of times, generally known in advance. In Bash script syntax of FOR loop is:

for VARIABLE [in LIST]; do COMMANDS BLOCK; done

or

for VARIABLE [in LIST]
do
   COMMANDS_BLOCK
done

LIST is a list of words or numbers. If LIST is omitted $@ is implied.

Simple examples:
1. This example prints all files in directory

dirlist=$(ls)
for i in $dirlist
do
   echo $i
done


2. This example prints numbers from 1 to 10

for i in {1..10}
do
   echo $i
done

or

for i in 1 2 3 4 5 6 7 8 9 10
do
   echo $i
done 

3. This example prints number from 1 to 10 with step 2

for i in {1..10..2}
do 
   echo $i
done

4. This example prints 

Sunday, May 4, 2014

Bash - Exit code

1. Exit code from Bash script

argument of exit command is exit code
exit n
example (exit_example.sh)

#!/bin/bash
exit $1  #return argument 1 as return code

2. Bash last exit code

last exit code is in variable $?

#!/bin/bash
./exit_example.sh 2
echo $?

result is:
2

Saturday, May 3, 2014

Bash - Join Arrays

How to join arrays in Bash Script? Very simple :) Example:

#!/bin/bash
a1=(a b c d) #array 1
a2=(e f g h) #array 2
a=(${a1[@]} ${a2[@]}) #join array
echo ${a[@]}

Output is:
a b c d e f g h

Make array of arrays and result is joined array :)

Friday, May 2, 2014

Customize Bash prompt

Bash prompt text is defined in PS1 variable. PS1 variable is declared in .bashrc file which is in home directory. Open this file with your favorite text editor: ~/.bashrc
Find declaration of PS1 variable (maybe there are few of them) and, if you want to permanent change prompt, change this declaration to suit your needs. If you want to change prompt temporally (recommended!) until restart, type in Bash command prompt:

$ PS1="NEW PROMPT --> "
NEW PROMPT -->

If you look in default string there are some special character with some system parameters as:

  • \u username
  • \h hostname
  • \w working directory
  • ...


$ PS1="\h:\w"
linips:~


Thursday, May 1, 2014

Linux - Add User Account

To add user to Linux from command line (shell) type command adduser followed with options and username. Example to add user linips (type sudo if you are not root):

$ sudo adduser linips
Adding user `linips' ...
Adding new group `linips' (1001) ...
Adding new user `linips' (1001) with group `linips' ...
Creating home directory `/home/linips' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for linips
Enter the new value, or press ENTER for the default
        Full Name []: Linips Blog
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

Defaults are in file /etc/adduser.conf

What if we are want to add user with username format as firstname.secondname?

$ sudo adduser linips.blog
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM] configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

Then we must add --force-badname switch to command

$ sudo adduser --force-badname linips.blog

and continue with entering data for new user.