This article mainly summarizes the entry-level bash from the following aspects:
1. Command history and command completion
2. Pipelines and redirection
3. Command alias and command replacement
4. Edit the command line
5. File Name Configuration
6. Bash configuration files and variables
7. Programming (condition judgment and loop control)
8. array in bash
9. shell programming skills and programming specifications
1. Command history and command completion
View command history: history
-C: Clear command history
-D OFFSET [n]: Command to delete a specified position
-W: saves the command history to historical files, which is useful for executing commands on different terminals.
Usage tips for command history:
! N: The Nth command in the execution history;
! -N: The last n commands in the command history;
!! : Execute the previous command;
! String: the most recent command in the execution history that starts with a specified string.
! $: Reference the last parameter of the previous command;
Esc ,.
Alt +.
Command completion and path completion
Command completion: searches for executable files starting with the given string in each PATH specified by the PATH environment variable. If there is more than one executable file, two tabs can be provided; otherwise, it will be supplemented directly;
Path completion: Search for each file name in the given starting path and try to complete it;
2. Pipelines and redirection
Pipeline ------ the output of the previous command as the input of the next command
Command 1 | command 2 | command 3 |...
For example: cat/var/log/message | less
Find./-name ex * | xargs mv/backup
> Overwrite output
> Append output
2> redirect error output
2> append Mode
&> Redirect standard output or error output to the same file
<Input redirection
<Here Document
:> File: clears a file.
For example, Here Document:
Cat>/etc/hosts <EOF
172.28.9.45www01.opsmysql.com
172.28.9.46www02.opsmysql.com
172.28.9.47www03.opsmysql.com
172.28.9.48www04.opsmysql.com
EOF
"*/5 *****/usr/sbin/ntpdate ntp. api. bz>/dev/null 2> & 1
/Dev/null 2> & 1: redirects all standard output and error output to/dev/null.
3. Command alias and command replacement
Command alias
Alias = 'COMMAND [options] [arguments]'
The alias defined in shell is valid only in the current shell lifecycle; the alias is valid only for the current shell process;
Ualias same alias
For commands for setting aliases, if you want to use the command format when no alias is set, that is, the default format can be added before the command :\
\ CMD
You can also write the alias in the configuration file:
Global configuration file:/etc/bashrc
User Configuration File :~ /. Bashrc
COMMAND replacement: $ (COMMAND), reverse quotation marks: 'command'
Replace a sub-command with the execution result.
For example:
Echo "The date time is: 'date '"
Echo "The date time is: $ (date + % F )"
Quotes supported by bash:
'': Command replacement
": Weak reference, can replace variables
'': Strong reference. variable replacement is not completed.
4. Edit the command line
Cursor jump:
Ctrl + a: Jump to the beginning of the command line
Ctrl + e: jump to the end of the command line
Ctrl + u: Delete the content from the cursor to the beginning of the command line
Ctrl + k: Delete the content from the cursor to the end of the command line
Ctrl + l: clear screen
5. wildcard file name: globbing
*: Any character of any length
? : Any single character
[]: Match any single character in the specified range
[Abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[: Space:]: white space
[: Punct:]: punctuation
[: Lower:]: lowercase letter
[: Upper:]: uppercase letters
[: Alpha:]: uppercase/lowercase letters
[: Digit:]: Number
[: Alnum:]: Numbers and uppercase/lowercase letters
# Man 7 glob
[^]: Match any single character out of the specified range
[[: Alpha:] * [[: space:] * [^ [: alpha:]
6. Bash-related configuration files and variables
Bash configuration file:
Global Configuration
/Etc/profile,/etc/profile. d/*. sh,/etc/bashrc
Personal Configuration
~ /. Bash_profile ,~ /. Bashrc
Profile files:
Set Environment Variables
Run commands or scripts
Bashrc files:
Set local variables
Define command alias
How does the login shell read the configuration file?
/Etc/profile -->/etc/profile. d/*. sh --> ~ /. Bash_profile --> ~ /. Bashrc -->/etc/bashrc
How does a non-Login shell configure files?
~ /. Bashrc -->/etc/basrc -->/etc/profile. d/*. sh
Introduction to environment variable commands:
1. echo shows the value of an environment variable echo $ PATH
2. Set a new environment variable export HELLO = "hello" (no quotation marks are allowed)
3. env display all environment variables
4. set: Display locally defined shell Variables
5. unset clear environment variable unset HELLO
6. Set readonly to readonly.
Common Environment Variables
PATH: determines the directories to which shell will look for commands or programs.
HOME: HOME Directory of the current user
MAIL: refers to the MAIL storage directory of the current user.
SHELL: The Shell used by the current user.
HISTSIZE: the number of records that save historical commands.
LOGNAME: The Login Name of the current user.
HOSTNAME: indicates the host name. If a host name is used by many applications, it is usually obtained from this environment variable.
LANG/LANGUGE: language-related environment variable. Users in multiple languages can modify this environment variable.
PS1: is a basic prompt. For root users, it is # And for common users, it is $
PS2: A subsidiary prompt. The default value is "> ". You can modify the environment variable to modify the current command string.
Location variable:
$1, $2,... $ n
Special variables:
$? : Return Value of the execution status of the previous command. If the echo $0 result is 0, it indicates success, and if it is not 0, it indicates failure.
$0: get the name of the currently executed shell script file, usually used in combination with basename
$ *: Get all parameters of the current shell, $1 $2 $3. Note the difference with $ #.
$ #: Get the total number of parameters in the Current shell Command Line
$: Get the current shell process ID (PID)
$! : PID for executing the previous command
$ @: All parameters of this program "$1" "$2" "$3 ""... "
Note: Sometimes the variable name is easy to confuse with other words. For example, we Append content to the value of a variable:
Num = 2
Echo "this is the $ numnd"
This does not print "this is the 2nd", but only prints "this is the", because shell will search for the value of the variable numnd, but there is no value for this variable. We can use curly braces to tell shell that we want to print the num variable:
Num = 2
Echo "this is the $ {num} nd"
This will print: this is the 2nd
The variable name cannot start with a number !!!!!!!!!!!!!!!!
++ ++
How to perform arithmetic operations in shell:
A = 3
B = 6
1) let arithmetic expression
Let C = $ A + $ B
2). $ [arithmetic expression]
C = $ [$ A + $ B]
3). $ (arithmetic expression ))
C =$ ($ A + $ B ))
4). expr arithmetic expression. There must be spaces between the operands and operators in the expression, and a command reference should be used.
C = 'expr $ A + $ B'
These computing methods are the basis of shell programming !!!
Simple operations on strings in shell:
String Length
A = "admin"
Echo $ {$ A} Or expr length $
String replacement and deletion:
$ {Variable # keyword} ---------> If the variable content conforms to the 'keyword' from the beginning, the compliant shortest data will be deleted.
Example: echo
$ {Variable ## keyword} ---------> If the variable content conforms to the 'keyword' from the beginning, the longest matched item is deleted.
$ {Variable % keyword} ---------> If the variable content from the end to the forward matches the 'keyword', delete the compliant shortest data
$ {Variable % keyword} ---------> If the variable content conforms to the 'keyword' from the end, the longest matched item is deleted.
$ {Variable/old string/new string} ---------> If the variable content conforms to the 'old string', the first old string is replaced by the new string.
$ {Variable // old string/new string} ---------> If the variable content conforms to the 'old string', all old strings will be replaced by new strings.
7. Programming (condition judgment and loop control)
The following is a summary of the condition test types.
Integer Test
Character Test
File Test
Conditional test expression:
[Expression]
[[Expression] ----- in Bash High Version, basically only this advanced one can be used... the above one will report an error!
Test expression
Integer comparison:
-Eq: test whether two integers are equal. For example, $ A-eq $ B.
-Ne: test whether two integers are unequal. They are not equal to true. They are equal to false;
-Gt: test whether a number is greater than the other. If the value is greater than, the value is true. Otherwise, the value is false;
-Lt: test whether one number is smaller than the other. If the value is smaller than, the value is true. Otherwise, the value is false;
-Ge: greater than or equal
-Le: less than or equal
Logical Relationship:
Logic and :&&
When the first condition is false, the second condition does not need to be judged and the final result already exists;
When the first condition is true, the second condition must be judged;
Logic or: |
Note: [condition 1-a condition 2] is equivalent to [condition 1] & [condition 2]
Note the following:
Yes
[[Condition 1 & condition 2]
No
[Condition 1 & condition 2]
Character test:
=: Whether the test is equal, equal to true, not equal to false
! =: Whether the test is unequal. The value is not true. The value is false.
\>
\ <
-N string: test whether the specified string is null. If it is null, it is true. If it is not null, it is false.
-Z string: test whether the specified string is null. If it is null, it is false. If it is null, it is false.
String = "" the string is empty.
String! = "" The string is not empty.
File test:
-E FILE: whether the test FILE exists
-F FILE: test whether the FILE is a normal FILE
-D FILE: test whether the specified path is a directory.
-S FILE: determines whether the FILE exists and the size is greater than 0
-R FILE: test whether the current user has the permission to read the specified FILE.
-W FILE: indicates whether the FILE can be written.
-X FILE: indicates whether the FILE is executable.
Simply put, the script exit status code
Exit: exit the script.
Exit #
If the script does not clearly define the exit status code, the exit code of the Last Command executed is the exit status code of the script;
Generally:
#0 indicates normal exit
# Non-0 indicates an error exits
++ ++
Condition Determination -- if
Single branch if statement
If judgment condition; then
Statement1
Statement2
...
Fi
If statement for dual Branch:
If judgment condition; then
Statement1
Statement2
...
Else
Statement3
Statement4
...
Fi
Multi-branch if statement:
If condition 1; then
Statement1
...
Elif judgment condition 2; then
Statement2
...
Elif judgment Condition 3; then
Statement3
...
Else
Statement4
...
Fi
++ ++
Select Structure -- case
Case SWITCH in
Value1)
Statement
...
;;
Value2)
Statement
...
;;
*)
Statement
...
;;
Esac
Description: value1) is a regular expression style. The following characters can be used:
* String of any length
C * Indicates a string starting with C.
? Any single character ,???? A four-character string
[Abc] a, B, or c, for example, [abc] 123, matching a123, b123, or c123.
[A-n] any character from a to n
| Multiple choice, Separator
++ ++
Loop Control ---
Two usage methods:
For variable in list; do
Loop body
Done
For (expr1; expr2; expr3); do
Loop body
Done
Loop Control --- while
While CONDITION; do
Statment
Done
Enter the cycle: the condition is met
Exit loop: the condition is not met.
Special usage of while 1 (endless loop ):
While:; do
Statment
Done
Special usage of while 2 (Reading rows from a file ):
While read LINE; do
Statment
Done </PATH/TO/SOMEFILE
Method 2:
Cat ip.txt | while read line
Do
Echo $ line
Done
Loop Control ---
Until is opposite to while. You can refer to while
Until CONDITION; do
Statement
...
Done
Determine whether the condition is true. If the condition is not true, execute the loop body. If the condition is true, exit!
Loop Control statement
Break
Interrupt the loop, and then execute the statement following the loop. By default, the loop jumps out of a layer. to jump out of a multi-tier loop, you can use break n (n is a number greater than 1, that is, the number of times ).
Continue
Interrupt the current cycle and enter the next cycle in advance. A loop is skipped by default. If you want to skip multiple cycles, you can use continue n (n is a number greater than 1, that is, the number of times ).
++ ++
Select (generate menu selection)
A select expression is a bash extension application that is especially good at interactive use. You can select from a group of different values.
The select command can be used to create a simple list. The structure is similar to the for loop. It is generally used in combination with the case statement.
Write an instance as follows:
#! /Bin/bash
Echo "What is your favorite OS? "
Select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
Break
Done
Echo "You have selected $ var"
8. Use arrays in bash
Array assignment method:
(1) array = (var1 var2 var3... varN)
(2) array = ([0] = var1 [1] = var2 [2] = var3... [n] = varN)
(3) array [0] = var1
Arrya [1] = var2
...
Array [n] = varN
Note: The subscript of the array in shell starts from 0 by default!
Obtain the number or length of array elements:
(1) $ {# array [@]}
(2) $ {# array [*]}
Display array elements:
Echo $ {array [*]} # Show all elements
Echo $ {array [@]}
Echo $ {array [@]: 0}
Echo $ {array [0]} # display the first element
Echo $ {array [@]: 2} # The first two elements in the array are not displayed.
Echo $ {array [@]: 0: 2} # display two elements starting from the first element
Delete elements from the array:
Unset array [2] # Delete the third element
Unset array # Delete the entire array
Delete a substring:
Echo $ {array [@] # t * e} # Start the shortest match on the left: "t * e", which matches "thre"
Echo $ {array [@] # t * e} # The longest match from the left, which matches "three"
Echo $ {array [@] % o} # minimum match starting from the end of the string
Echo $ {array [@] % o} # longest match starting from the end of the string
Substring replacement:
Echo $ {array [@]/o/m} # The first matched string will be deleted.
Echo $ {array [@] // o/m} # All matched items will be deleted.
Echo $ {array [@] // o/} # If no substring is specified, the matched substring is deleted.
Echo $ {array [@]/# o/k} # Replace the pre-String Terminal string
Echo $ {array [@]/% o/k} # Replace the string with the terminal string
List array elements cyclically:
#! /Bin/bash
Arr = (AB bc cd)
Lenarr =$ {# arr [@]}
For (I = 0; I <$ lenarr}; I ++); do
Echo $ {arr [$ I]}
Done
#! /Bin/bash
Arr = (AB bc cd)
Lenarr =$ {# arr [@]}
I = 0
While [[$ I-lt $ lenarr]
Do
Echo $ {arr [$ I]}
Let I ++
Done
One instance:
#! /Bin/bash
# Set IFS to set the delimiter to a line break (\ n)
OLDIFS = $ IFS
IFS = $ '\ N'
# Reading file content to an array
FileArray = ($ (cat file.txt ))
# Restore it
IFS = $ OLDIFS
TLen =$ {# fileArray [@]}
# Display the file content cyclically
For (I = 0; I <$ {tLen}; I ++); do
Echo "$ {fileArray [$ I]}"
Done
9. shell programming skills and programming specifications
Check Syntax: bash-n Script Name
Command tracing: bash-x Script Name
In shell input and output:
Read usage
Cat special usage
Special echo usage
Run the following command in the background: & nohup
If you are running a process that does not end when you exit the account, you can use the nohup command. This command can continue running the corresponding process after you exit the account. Nohup means no hang up ).
The nohup command is generally in the form of nohup command &
Shift usage
.......
.........
..........
Later!
Briefly describe the programming specifications:
1. File comments
Each written script file should contain file comments, simple descriptions of script usage, versions, authors, etc. .. For example:
#! /Bin/bash
# Description :.......
# Date: xxxx-xx
# Version :....
# Author: Andy
2. Code comments
3. Function annotation -- describe the functions of the Function
4. variable naming Standardization
The name indicates the meaning of the variable.
Variable name or function name should not be too long
Name should start with uppercase or uppercase
For example:
Passwd
Num_Count
5. Code indentation
Original works can be reprinted. During reprinting, you must mark the original source, author information, and this statement in hyperlink form. Otherwise, legal liability will be held.