Java EE core [Shell foundation]

Posted by balkan7 on Sat, 26 Feb 2022 08:48:50 +0100

1. What is Shell

Shell is a command line interpreter. It is a black window. When we issue some commands to Linux, Shell translates these commands into the actions that kernel can understand, then calls the kernel, operates the hardware, completes the operation, and then translates the signals into adult understandable forms.

Shell is also a powerful programming language.

In a narrow sense, shell is not a language. It is a bridge between the computer kernel and people. In a broad sense, shell is a programming language.

Each operating system has a different Shell.

2. Shell interpreter

The Shell parser provided by Linux includes

cat /etc/shells 

/bin/sh              yes bash A soft link (equivalent to windows (shortcut to)
                     Hard link: e.g B yes A Hard links, A Point to source file, access B Will directly access the source file, not through A
                     When the source file is deleted, the soft link cannot be used, and the hard link will not be affected

/bin/bash            linux Default interpreter

/sbin/nologin        The following can be understood as foreign languages, such as French, English, German, etc., which are not commonly used
/bin/dash
/bin/tcsh
/bin/csh

3. helloword of Shell script

A program written in an interpretive language is called a script. It is a collection of command lines, and the computer will translate it line by line.

Script to #/ The beginning of bin/bash means that every subsequent command is a bash command. Note that the comments of the Shell script begin with # but #/ bin/bash is not a one line comment. This sentence indicates that the bash interpreter needs to be used.

touch helloworld.sh
vim helloworld.sh

#!/bin/bash
echo "helloworld"

The first way to execute a script

bash helloworld.sh 

File permissions of linux

rw-rw-r-- 1-3 Permissions for the owner of the file, 4-6 Have group permissions for files, 7-9 Permissions for others

To give HelloWorld Execute permission of SH script

chmod +x helloworld.sh

The second way to execute the script: self execution of the script

./helloworld.sh 

The essence of the first execution method is that the bash parser helps execute the script, so the script itself does not need execution permission. The second execution method is that the script executes itself, so the execution permission is required.

4. Variables in Shell

All Shell variables are strings, that is, when defining variables, there is no need to declare types, and there can be no spaces on both sides of the equal sign.

a=10
echo $a

b=11
echo $a+$b

a="love you"

Undo variable

unset a

Declare static variables, which cannot be undone or modified. Generally, they are not used

readonly a=10

In the Shell, there are some system predefined variables, called environment variables, which can be used directly.

View environment variables

env

Special variable: $n

$n function description: n is a number, $0 represents the name of the script, $1 - $9 represents the first to ninth parameters. Parameters above ten need to be contained in braces, such as

touch parameter.sh 
vim parameter.sh

#!/bin/bash
echo $1
echo $2
echo $3

chmod +x parameter.sh

./parameter.sh aaaa bbbb cccc

Special variables:$#

$# Function Description: get the number of all input parameters, which is commonly used in loops.

vim parameter.sh
#!/bin/bash
echo $#

./parameter.sh a b c d e f g

Special variables: $*$@

$* function description: this variable represents all parameters in the command line, $* regards all parameters as a whole;

$@ Function Description: this variable also represents all parameters in the command line, but $@ treats each parameter differently

vim parameter.sh
echo $*
echo $@

./parameter.sh a b c d e f g

Special variable: $?

        $? Function Description: displays the return status of the last executed command. If the value of this variable is 0, it proves that the last command was executed correctly; If the value of this variable is non-zero (which number is determined by the command itself), it proves that the execution of the previous command is incorrect, which is used for calls between multiple scripts.

5. Operator

$((expression)) "or" $[expression]

echo $S[(2+3)*4]

6. Conditional judgment

[condition] there should be a space before and after the condition or test condition

[ $a -eq $b ]
echo $?

Judgment condition

Comparison between two integers
= string comparison
-lt Less than( less than)			-le Less than or equal to( less equal)
-eq Equals( equal)				-gt Greater than( greater than)
-ge Greater than or equal to( greater equal)	-ne Not equal to( Not equal)

Judge according to file permissions
-r Have read permission( read)			-w Have write permission( write)
-x Have the authority to execute( execute)

Judge by document type
-f The file exists and is a regular file( file)
-e File exists( existence)		-d The file exists and is a directory( directory)

View all functions of test

man test

7. Process control

If judgment: if the first parameter is 1, output a, 2, output b, and other outputs 3. Where test can be replaced by []

if test $1 = 1
then
    echo a
elif test $1 = 2
then
    echo b
else
    echo c
fi

If the first parameter is a case, the output of b is 3.

case $1 in 
"1")
    echo a
    ;;
"2")
    echo b
    ;;
*)
    echo c
    ;;
esac

for loop: from 1 to 100

#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
    sum=$[$sum+$i]
done
echo $sum

Enhanced for

for i in a b c
do 
    echo $i
done

while loop: from 1 to 100

#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
    sum=$[$sum+$i]
    i=$[$i+1]
done
echo $sum

8. Read console input

Function of read (option) (parameter): read assigns a value to a variable through console input, providing a way for people other than parameters to interact with the program, which is called console input.

#!/bin/bash
read i
echo $i

Adding the - p parameter allows the console to print some prompt information

#!/bin/bash
read -p "input something" i
echo $i

- t parameter, input within ten seconds

#!/bin/bash
read -p "input something in 10s" -t 10 i
echo $i

9. Function

Basic grammar, the contents in [] can be omitted

[ function ] funname[()]
{
	Action;
	[return int;]
}
funname

Customize a function aaa with two parameters

function aaa
{
i=$[$1+$2]
echo $1
return $1
}

After that, AAA 4 and 5 can be called. 4 and 5 are parameters. The return value returns a status code. 0 means correct and others mean error.

System function

Basename path name: function description. The basename command will delete all prefixes, including the last ('/') character, and then display the string.

dirname file absolute path: function description. Remove the file name (non directory Part) from the given file name containing the absolute path, and then return the remaining path (directory Part))

10. Shell tool

Four stream processing tools

        cut

Cut's job is to "cut". Specifically, it is used to cut data in the file. The cut command cuts bytes, characters, and fields from each line of the file and outputs them.

cut [option parameter] filename

Option parameters	    function
-f	        Column number, which column to extract
-d	        Separator to split the column according to the specified separator
-c	        Specify specific characters

Cut out the IP address of the virtual machine

ifconfig | grep Bcast | cut -d : -f 2 | cut -d " " -f 1

Take out the 20th and 30th characters

ifconfig | grep Bcast | cut -c 20,30

Take out the 20th to 30th characters

ifconfig | grep Bcast | cut -c 20-30

        sed

Sed is a stream editor that processes one line at a time. During processing, the currently processed line is stored in the temporary buffer, called "mode space", and then the contents in the buffer are processed with sed command. After processing, the contents of the buffer are sent to the screen. The next line is then processed and repeated until the end of the file. The contents of the file do not change unless redirection is used to store the output.

sed [option parameter] 'command' filename

Option parameters	    function
-e	        Directly in instruction line mode sed Action editing for.
-i	        Edit files directly

command	    Function description
a 	        newly added, a Can be followed by a string and appear on the next line
d	        delete          '2d' Delete the second line
s	        Find and replace     '2s/Replaced character/Replaced content/'

Replace inet in the second line with aaaa

ifconig | sed '2s/inet/aaaa/'

Delete the second to fifth lines

ifconfig | sed '2,5d'

Changing the 0 of the second and fifth lines to X without g will only change the first 0 of the second and fifth lines. When there are multiple commands, you need to add - e

ifconfig | sed -e '2s/0/X/g' -e '5s/0/X/g';

Change inet afddr to ip addr

ifconfig | sed 's/inet addr/ip addr/'

Regular expression: matches a string with a very distorted character.

Replace the inner part of the expression up to the regular expression

ifconfig | sed 's/inet[6]* addr/ip address/'

Six rules of regular expressions

\   Escape

^   The beginning of a line
    ^R------Express with R First line

$   Match the end of a line
    R$Express with R Ending line

*   Indicates that the previous sub formula matches 0 or more times, which is a greedy match
    Zo*-----express Z The beginning is followed by several o,The following three strings can be matched
            Z
            Zo
            Zooo

.   Match an arbitrary character
    .*Match any string

[]  Indicates that a character within a certain range is matched
    [6,8]------Match 6 or 8
    [a-z]------Match one a-z Characters between
    [a-z]*-----Match any alphabetic string

Save the number 6 and call it later with (). You can save 9 subexpressions and use \ 1-9 to complete the call.

ifconfig | sed 's/inet\([6]*\) addr/ip\1 address/'

The range expression can also use regular expressions to enclose the range with two \.

Replace 0 with X for lines beginning with R and beginning with T.

ifconfig | sed '/^ *R/,/^ *T/s/0/X/g'

Each shell environment is a process, and the shell can start many, and each shell environment is independent

When executing a script, it is executed in the sub environment, not in the current environment.

Use source to complete the current environment and execute a script:

source a.sh

        awk

A powerful text analysis tool, read the file line by line, slice each line with a space as the default separator, and then analyze the cut part.

awk [option parameter] 'pattern1{action1} pattern2{action2}...' filename

Pattern: refers to the content found by AWK in the data, which is the matching pattern

action: a series of commands executed when a match is found

Option parameters	function
-F	    Specifies the input file separator
-v	    Assign a user-defined variable

Print out lines starting with r

cp /etc/passwd ./

cat passwd | awk '/^r/{print}'       

Use - F to specify the cutting rule, and take: as the cutting rule

cat passwd | awk -F : '/^r/{print $4}'

awk built in variable

variable	        explain
FILENAME	file name
NR	        Number of records read
NF	        Number of fields for browsing records (number of columns after cutting)

View awk user manual

man awk

        sort

The sort command is very useful in Linux. It sorts files and outputs the sorting results as standard.

Sort (option) (parameter)

option	        explain
-n	    Sort by value
-r	    Sort in reverse order
-t	    Sets the separator character used when sorting
-k	    Specify the columns to sort
cat passwd | awk -F : '/^a/{print}' | sort -t : -k 3 -n -r

Topics: Java JavaEE p2p