Bash scripting

This commit is contained in:
2024-11-15 22:12:29 +05:30
parent 02eed13731
commit 92742e091b
4 changed files with 218 additions and 1 deletions

195
Bash-Scripting.txt Normal file
View File

@@ -0,0 +1,195 @@
-> ls :
List all the file or folder present in the current directory.
Option:
* -l : List all the file and folder with permission, owner,
and group details in form of vertically alinged list.
* -a : Display hidden (.)dotfile as well.
-> pwd :
Print the current directory, present on the terminal.
-> date :
Print the current date and time.
-> chmod :
Used to change the permission of file or folder
Symbol Meaning :
* a : For all (including owner, group and others)
* u : For owner
* g : For group
* o : For others
* r : read permission ( number 4 )
* w : write permission ( number 2 )
* x : execute permission ( number 1 )
Option :
* a+x : Add execute permission for all.
* a-x : Remove execute permission for all.
* 755 : rwx - user , r-x - group, r-x - others
How to use?
chmod a+x "file/folder name"
chmod 755 "file/folder name"
-> echo :
To Print argument on the terminal
Option:
* -n : Not to add newline.
* ".." : String to print
* $PATH : variable ( environment variable, etc. )
-> $PATH environment variable :
Store the paths which help in invoking executable, script, etc,
without specifying whole path, where its present.
How to add path to $PATH?
export PATH=$PATH:$(pwd)
or full path to intended directory.
-> SHABANG (#!/bin/bash)
Tells to use this interpreter to run the script.
Same as /bin/bash ./script
-> Variables :
To stores data and can be changed.
1. Explicit Defination :
VAR=value
COUNT=5
PATH=/var/lib
2. Read command :
read VAR
read COUNT
read PATH
Option :
* -p : to print the parameter before read.
How to use?
read -p "Your name: " NAME
* -s : to hide the input to be taken. Best use
for password.
How to use?
read -sp "Your age: " AGE
3. Command Substitution :
To store the output of the command executed to the variable.
How to use?
VAR=$(pwd) or VAR=`pwd`
How to use variables?
Use $variableName for using variables.
-> For Math Calculation :
1 . let
let RESULT=NUMBER+5
let NUMBER++
let NUMBER--
let NUMBER+=5
let NUMBER-=5
2. (( ))
RESULT=$(( NUMBER + 5 ))
3. []
RESULT=$[ NUMBER + 5 ]
4. expr
RESULT=$(expr $NUMBER + 5)
RESULT=`expr $NUMBER + 5`
RESULT=`expr 2 + 3`
5. bc ( used for floating point number )
RESULT=`echo "$NUMBER * 1.9" | bc`
-> Argument :
$0 - script name
$1 - first argument
$2 - second argument
$n - nth argument
"$@" - all argument, expands as "$1" "$2" "$3"
and so on.
"$*" - all argument as string, "$1c$2c$3",
where c is IFS (Internal field
separator), which is usally whitespace.
$# - arguments count
-> Redirecting and piping:
Redirecting
* STDIN (0) - Standard input (data provided to program)
* STDOUT (1) - Standard output (what program prints, defaultly to the terminal)
* STDERR (2) - Standard error (what error message program prints, defaultly to terminal)
examples:
cat file1.txt > output_from_cat.txt
cat file1.txt 1>output_from_cat.txt
cat file1.txt 2>error.txt
cat file1.txt 1>output_from_cat.txt 2>error.txt
cat file1.txt &> output_from_cat.txt (from both 1 and 2)
cat file1.txt 1> output_from_cat.txt 2>&1(redirecting error to output)
cat file1.txt >> output_from_cat.txt(adding output instead of replacing it)
Piping
output of preceeding program is input to succeeding
program.
Program1 | Program2
examples:
cat file.txt | wc -l
cat file.txt | head -5 | tail -3 | wc -l
-> Exit Status
echo $?
$? will give a return value of previous command.
It's the return value, called EXIT STATUS.
Successfully exiting give 0 value otherwise
non-zero value.
We can exit script using exit command.
exit command can be used with number 0 - 255.

9
arguments.sh Normal file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
IFS=","
echo "Script name: $0"
echo "First argument: $1"
echo "Second argument: $2"
echo "All arguments with \$@: $@"
echo "All arguments with \$*: $*"
echo "Arguments count: $#"

View File

@@ -1,6 +1,6 @@
AC_INIT(["Name of Program"], [ Version X.X.X], ["author email"])
AM_INIT_AUTOMAKE
AM_INIT_AUTOMAKE()
AC_CHECK_PROGS(CC,[clang, gcc, xlc, icc], [""])
AC_PROG_CC

13
time_measurement.sh Normal file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
#start time measurement from here
START=$(date +%s)
CURRENT_DIRECTORY=$(pwd)
sleep 2 #sleep 2 seconds
END=$(date +%s)
#end time measurement
DIFFERENCE=$(( END - START ))
echo
echo Time elapsed: $DIFFERENCE seconds.