编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法

bash的特性之多命令执行的逻辑关系:

1.命令替换(命令之间无明确的逻辑依赖关系)

COMMAND1 $(COMMAND2)

2.管道(命令之间无明确的逻辑依赖关系)

COMMAND1 | COMMAND2 | COMMAND3

前面的命令无论执行成功与失败后面命令继续执行;管道命令的前一个命令应该有标准和输出否则用“;”隔开

例如:useradd sola ;echo 456 | passwd --stdin sola

3.顺序执行结构

COMMAND1;COMMAND2;COMMAND3 …

4.选择执行结果

如果……那么……

要么……要么……

逻辑运算:

与:逻辑乘法,1--真,0--假,&&(bash中的and符号),双目操作符

1&&1=1 1&&0=0 0&&0=0 0&&1=0

“与”运算的短路运算法则:只要第一个操作数为false,则其逻辑运算结果一定为false

或:逻辑加法,1--真,0--假,||,双目操作符

1||1=1 1||0=1 0||1=1 0||0=0

“或”运算的短路法则:只要第一个数为ture,则其逻辑运算结果一定为ture

“非”:逻辑取反,1--真,0--假,!,单目操作

!0=1  !1=0

命令执行的状态返回值:

SUCCESS:0--TURE

FAILURE:1-255--FALSE

COMMAND1 && COMMAND2

表示:

1.如果COMMAND1能够成功执行,那么将会执行COMMAND2;

2.如果COMMAND1执行失败,那么COMMAND2将不会执行;

COMMAND1 || COMMAND2

表示:

1.只有COMMADN1执行失败,COMMAND2才会被执行;

2.如果COMMAND1执行成功,COMMAND2将不会被执行;

!COMMAND1 && COMMAND2 相当于 COMMAND1 || COMMAND2

!COMMAND1 || COMMAND2 相当于 COMMAND1 && COMMAND2

德·摩根定律

!(COMMAND1 && COMMAND2) || COMMAND3

!(COMMAND1 || COMMAND2) && COMMAND3

!(A && B) =!A || !B

!(A || B) =!A && !B

三种逻辑运算的优先级:

! > && > ||

示例:

如果用户user4存在并且其家目录也存在,那么就执行userdel -r user4命令;

id user4 && ls -d /home/user4 && userdel -r user4

bash脚本编程:

什么叫编程?

使用人类自然语言或机器语言进行程序源代码书写的过程。

为什么要编程?

为了能够让用户在使用计算机的时候,可以让计算机以非交互的方式完成某些任务;此时,用户需要将此类任务编辑成为一个文件,并且让计算机按照特定书序进行任务读取,从而实现预期的功能;

为了让计算机能够解读此类文件的内容并正确的予以执行,必须将程序源代码文件转换为计算机可以直接识别并使用的二进制格式,此转换过程称为编译;而想要完成编译过程,必须使用特定的编译器工具;因此无论实用和重编程语言进行程序编写必须严格按照编译器能够识别的特定格式和语法结构进行程序编写;

编程语言:

高级语言:

根据源代码的处理方式:

编译型语言:

源代码 -->编译器(编译) -->[链接器(链接) -->]汇编器(汇编) -->可以执行的二进制代码文件;

解释型语言:

源代码 -->解释器(逐行解释) -->边解释边执行

根据编程过程中的功能实现是库调用 还是调用外部程序文件分类:

完整编程语言:

利用库或编程组件进行编程

脚本编程语言:

利用解释器调用被选择的外部应用程序

根据程序的编写规范分类:

过程式语言:

程序=指令+数据

以指令为中心,围绕指令的功能实现设计数据和数据结构,数据为指令服务;

算法和指令的实现形式:

顺序执行

选择执行

循环执行

面向对象语言:

程序=算法+数据结构

以数据和数据结构为中心,将数据实例化,围绕数据的需求来部署算法;

类(Class):被实例化的数据

属性(attbition):同一类的不同对象的区分依据

方法(method):类的正确的操作方法;

低级语言:

汇编语言:

机器语言:二进制语言

shell脚本编程——bash脚本编程:

过程式编程语言,解释运行的编程语言,脚本类语言(靠外部应用程序文件运行)

shell脚本到底是什么?

1.纯文本文档——文件中所有存储或包含的指令+数据都是以字符为单位存储的;

2.根据用户的需求来解决用户问题的简单或复杂的命令组合体;

3.是一种具有“执行幂等性”的程序实体;

执行幂等性:任何命令的一次执行结果和多次执行结果是一致的;

注意:

很多的命令都不具备执行幂等性,因此在shell脚本中需要使用大量的程序逻辑来判断某个命令是否符合其运行条件,从而避免在运行过程中出现的严重错误;

shell脚本中的代码内容是如何书写?

1.首行必须是shebang,即解释器程序的绝对路径,必须占据绝对行首且必须单独占据第一行;在执行脚本时,会根据shebang的指示,启动相应的解释器以解释脚本中诸多的命令:

#!/bin/bash

#!bin/sh

#!/usr/bin/python

#!/usr/bin/per1

……

2.在shell脚本中,除了shebang之外,所有行首为#字符的行,均被解释为注释行;

即:解释器只会解释其内容,但并不予以执行;

3.解释器会忽略脚本文件中所有的空白行,空白行指的是:在一行文本中,除了空白字符,空格字符,制表字符之外不具备其他任何类型字符的行:

4.大量的命令和关键字

命令:内部或外部应用程序

关键字:内置于shell,只能在某种特定结构体中执行的命令:keyword;

如:if,else,then,do,while,for,select,until,case,fi,

5.shell中的所有的特殊功能字符;

注意:所有被编写进shell脚本文档的命令、关键字及符号必须是ASCII编码格式的字符,其他编码格式的字符可以出现在shell脚本文件中,但不具备特殊含义;

如何编写shell脚本?

可以利用所有的文本文档编辑工具进行shell脚本编写,如:

nano,vi,vim,pico,emacs,……

通常在Linux的各发行版本中,推荐使用vim;

脚本文件的命名方式:

一般情况下,会为脚本设置“.sh”的名称后缀,较低版本的编辑工具,会根据文件的后缀名称来识别是否为shell脚本文件,较高版本的文本编辑工具,如bim7,无需过多的关心文件后缀名的问题。

脚本的运行方式:

1.为脚本文件赋予执行权限,可以直接以绝对路径或相对路径的方式运行此文件:

# chmod +x /PATH/TO/SOME_SCRIPT_FILE

# /PATH/TO/SOME_SCRIPT_FILE

注意:如果脚本文件所在目录路径存储于PATH变量中,则直接以脚本文件名来执行即可;

2.直接使用解释器来运行脚本,将脚本文件作为解释其程序的参数;

# bash /PATH/TO/SOME_SCRIPT_FILE

bash命令的常用选项:

-x:使bash在解释脚本的过程展示在标准输出上;一般用于为shell脚本排错;

-n:对脚本文件进行预执行,以分析脚本中是否存在语法错误,如果没有错误则不会输出任何信息;相反,则输出一些简洁的提示信息;具体的错误定位还需要我们自己定位判断;

注意:此种方式中,脚本文件是否有执行权限并不是很重要的属性;

特别注意:以上两种方式,在执行脚本时,会在当前shell中开启一个新的子shell以运行脚本;一般情况下,当脚本运行结束,该子shell也会被随之销毁;因此,所有在脚本中定义的变量,在脚本的末尾处,最好将其明确的撤销,否则会影响当前shell环境;

3.使用source命令来运行脚本:

# source /PATH/TO/SOME_SCRIPT_FILE

# . /PATH/TO/SOME_SCRIPT_FILE

注意:

1.source命令不会在运行脚本时开启子shell,而是在当前shell中运行;

2.使用source命令执行的脚本中不要包括诸如exit类的命令

练习:写一个脚本

当alex用户不存在时,创建之;如果成功创建,则显示成功创建的提示信息,否则显示用户已存在。

[[email protected] ~]# vim user.sh

#!/bin/bash

#

! id alex &&  useradd alex && echo "Create user alex finished." || echo "User alex exists already."

[[email protected] ~]# bash user.sh

uid=1001(alex) gid=1001(alex) 组=1001(alex)

User alex exists already.

[[email protected] ~]# userdel alex

[[email protected] ~]# bash user.sh

id: alex: no such user

useradd:警告:此主目录已经存在。

不从 skel 目录里向其中复制任何文件。

正在创建信箱文件: 文件已存在

Create user alex finished.

利用bash脚本程序实现算术运算:

算术运算操作符:

常用的基本算术符:

+.-.*./.%.**

增强型的算术运算符:

+=,-=,*=,/=,%=

特殊的增强型算术运算符:

++,--

算术运算方法:

1.$[expression]

其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略;

示例:

# echo $[3+4]

# NUM1=5 ;NUM2=4; echo $[NUM1*MUM2]

2.let VAR=EXPRESSION

根据算数表达式完成算术运算并赋值给指定的变量

3.$((EXPRESSION))

其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略;

4.expr ARGUEMENT1 ARGUEMENT2 ARGUEMENT3

其中ARGU1和ARGU3必须是整数数值;ARGU2是算数运算符

5.echo "EXPRESSION" | bc

6.bc <<< "scale=3;35/9" 输出3.88

[[email protected] ~]# bc <<< "scale=3;35/9"

3.888

应用:

[[email protected] ~]# ls /etc | wc -l

276

[[email protected] ~]# ls /var | wc -l

22

[[email protected] ~]# echo $[$(ls /etc | wc -l)+$(ls /var | wc -l)]

298

文本处理工具:

全屏编辑器:vim nano

行编辑器:

文本处理三剑客:grep系,sed,awk

grep系:grep,egrep,fgrep,文本搜索工具;基于PATTERN(模式)对于给定的文本文件进行模糊搜索,grep系所有命令默认工作于贪婪搜索模式(尽可能多的匹配);

sed:Stream EDitor,流编辑器,文本编辑工具

awk:文本格式化工具,文件报告生成器,文件处理的编程语言;

grep系:

grep:Global search Regular Expression and Print out the line,

利用正则表达式进行全局搜索并将匹配的行显示出来;

格式:grep [OPTIONS] PATTERN [FILE...]

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

PATTERN:过滤匹配条件,是有没有特殊意义的文本字符或者是正则表达式元字符组成;

正则表达式的元字符:会被正则表达式处理引擎解释为特殊含义的字符;

pcre:正则表达式处理引擎,prel语言的正则表达式引擎;

[[email protected] ~]#  alias

alias cp=‘cp -i‘

alias egrep=‘egrep --color=auto‘

alias fgrep=‘fgrep --color=auto‘

alias grep=‘grep --color=auto‘

alias l.=‘ls -d .* --color=auto‘

alias ll=‘ls -l --color=auto‘

alias ls=‘ls --color=auto‘

alias mv=‘mv -i‘

alias rm=‘rm -i‘

alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

因此在执行grep和egrep时会有颜色标记

正则表达式的元字符:

基本的正则表达式元字符:BRE

[[email protected] ~]# touch liuneng

[[email protected] ~]# vim liuneng

[[email protected] ~]# cat liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

ABCD

22345

354435hhahfhg

字符匹配类:

.:匹配任意的单个字符;

[[email protected] ~]# grep ".p" liuneng

If you give me 8 apples, i will have 15 apples.

[]:匹配任意指定范围内的单个字符;

[[email protected] ~]# grep "[ ]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

[^]:匹配任意指定范围以外的单个字符;

[[email protected] ~]# grep "[^T]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

ABCD

22345

354435hhahfhg

下列的所有字符集都可以放置于[]内用于匹配字符集范围内的单个字符:

[:lower:]:所有的小写字母

[[email protected] ~]# grep "[[:lower:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

354435hhahfhg

[:upper:]:所有的大写字母;

[[email protected] ~]# grep "[[:upper:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

ABCD

[:digit:]:所有单个的十进制数字;

[[email protected] ~]# grep "[[:digit:]]" liuneng

If you give me 8 apples, i will have 15 apples.

22345

354435hhahfhg

[:alnum:]:所有的字母和十进制数字;

[[email protected] ~]# grep "[[:alnum:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

ABCD

22345

354435hhahfhg

[:punct:]:所有的符号;

[[email protected] ~]# grep "[[:punct:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

[:space:]:表示空白字符,包括空格和制表符;

[[email protected] ~]# grep "[[:space:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

[:xdigit:] :所有16进制的数字;

下面这三个要严格与 Globbing——文件名通配符中的bash内建字符集区分开

[a-z]:仅表示所有的小写字母

[[email protected] ~]# grep "[a-z]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

354435hhahfhg

[A-Z]:仅表示所有的大写字母

[[email protected] ~]# grep "[A-Z]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

ABCD

[0-9]:仅表示所有的十进制数码

[[email protected] ~]# grep "[0-9]" liuneng

If you give me 8 apples, i will have 15 apples.

22345

354435hhahfhg

次数匹配类:该类字符前面的一个字符可以出现的次数;

[[email protected] ~]# touch nihao

[[email protected] ~]# vim nihao

[[email protected] ~]# cat nihao

aabbcc abc acbcaaabbbvvfffccdaw

afggsdgalkljglas;dgj;l

;sldfkjlsfkj

flksajfldjkl

eoifjwoinihoahg

ljkjjjjjgggke

*:其前面的字符可以出现任意次,即:0次、1次或多次

[[email protected] ~]# grep "a*b" nihao

aabbcc abc acbcaaabbbvvfffccdaw

\?:其前面的字符可有可无,即:0次或1次;

[[email protected] ~]# grep "d\?v" nihao

aabbcc abc acbcaaabbbvvfffccdaw

\+:前面的字符至少出现一次;

[[email protected] ~]# grep "s\+d" nihao

afggsdgalkljglas;dgj;l

\{m,n\}:其前面的字符至少出现m次,最多不超过n次;

[[email protected] ~]# grep "g\{1,2\}" nihao

afggsdgalkljglas;dgj;l

eoifjwoinihoahg

ljkjjjjjgggke

[[email protected] ~]# grep "g\{1,2\}s" nihao

afggsdgalkljglas;dgj;l

\{m\}:其前面的字符必须出现m次;

[[email protected] ~]# grep "j\{1\}w" nihao

eoifjwoinihoahg

\{m,\}:其前面的字符至少出现m次;

[[email protected] ~]# grep "j\{1,\}w" nihao

eoifjwoinihoahg

\{,n\}:其前面的字符出现次数不超过n次,最少0次

[[email protected] ~]# grep "g\{,3\}k" nihao

afggsdgalkljglas;dgj;l

;sldfkjlsfkj

flksajfldjkl

ljkjjjjjgggke

注意:在正则表达式中,表示任意长度的任意字符:.*

位置锚定字符:

行锚定:

行首锚定:^

行尾锚定:$

字锚定:

字首锚定:\<或\b

字尾锚定:\>或\b

示例:寻找文件中空白行行数

[[email protected] ~]# grep "^[[:space:]]*$" nihao | wc -l

3

分组与前向引用字符:

\(\):将()中包含的内容作为一个不可分割的整体来处理;

示例:

[[email protected] ~]# grep "\(us\)\+e" /etc/passwd

usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin

radvd:x:75:75:radvd user:/:/sbin/nologin

qemu:x:107:107:qemu user:/:/sbin/nologin

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

\1,\2,\3,……: 前向引用

正则表达式处理引擎的内置变量,\1表示前面所出现的第一组()中括选的内容,\2表示前面所出现的第二组()中括选的内容……

\(string1\(string2\)\) 或者\(string1\).*\(string2\):\1表示string1,\2表示string2

或者:

\|:将其左右的字符或字符串当做整体对待;

扩展的正则表达式元字符:ERE

[[email protected] ~]# touch liuneng

[[email protected] ~]# vim liuneng

[[email protected] ~]# cat liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

ABCD

22345

354435hhahfhg

字符匹配类:

.:匹配任意的单个字符;

[[email protected] ~]# egrep ".p" liuneng

If you give me 8 apples, i will have 15 apples.

[]:匹配任意指定范围内的单个字符;

[[email protected] ~]# egrep "[ ]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

[^]:匹配任意指定范围以外的单个字符;

[[email protected] ~]# egrep "[^T]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

ABCD

22345

354435hhahfhg

下列的所有字符集都可以放置于[]内用于匹配字符集范围内的单个字符:

[:lower:]:所有的小写字母

[[email protected] ~]# egrep "[[:lower:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

354435hhahfhg

[:upper:]:所有的大写字母;

[[email protected] ~]# egrep "[[:upper:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

ABCD

[:digit:]:所有单个的十进制数字;

[[email protected] ~]# egrep "[[:digit:]]" liuneng

If you give me 8 apples, i will have 15 apples.

22345

354435hhahfhg

[:alnum:]:所有的字母和十进制数字;

[[email protected] ~]# egrep "[[:alnum:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

ABCD

22345

354435hhahfhg

[:punct:]:所有的符号;

[[email protected] ~]# egrep "[[:punct:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

[:space:]:表示空白字符,包括空格和制表符;

[[email protected] ~]# egrep "[[:space:]]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

[:xdigit:] :所有16进制的数字;

下面这三个要严格与 Globbing——文件名通配符中的bash内建字符集区分开

[a-z]:仅表示所有的小写字母

[[email protected] ~]# egrep "[a-z]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

abcd

354435hhahfhg

[A-Z]:仅表示所有的大写字母

[[email protected] ~]# egrep "[A-Z]" liuneng

She is a good girl.

The dog likes eating bone.

If you give me 8 apples, i will have 15 apples.

Today is not a good day.

ABCD

[0-9]:仅表示所有的十进制数码

[[email protected] ~]# egrep "[0-9]" liuneng

If you give me 8 apples, i will have 15 apples.

22345

354435hhahfhg

次数匹配类:该类字符前面的一个字符可以出现的次数;

[[email protected] ~]# touch nihao

[[email protected] ~]# vim nihao

[[email protected] ~]# cat nihao

aabbcc abc acbcaaabbbvvfffccdaw

afggsdgalkljglas;dgj;l

;sldfkjlsfkj

flksajfldjkl

eoifjwoinihoahg

ljkjjjjjgggke

*:其前面的字符可以出现任意次,即:0次、1次或多次

[[email protected] ~]# egrep "a*b" nihao

aabbcc abc acbcaaabbbvvfffccdaw

?:其前面的字符可有可无,即:0次或1次;

[[email protected] ~]# egrep "d?v" nihao

aabbcc abc acbcaaabbbvvfffccdaw

+:前面的字符至少出现一次;

[[email protected] ~]# egrep "s+d" nihao

afggsdgalkljglas;dgj;l

{m,n}:其前面的字符至少出现m次,最多不超过n次;

[[email protected] ~]# egrep "g{1,2}" nihao

afggsdgalkljglas;dgj;l

eoifjwoinihoahg

ljkjjjjjgggke

[[email protected] ~]# egrep "g{1,2}s" nihao

afggsdgalkljglas;dgj;l

{m}:其前面的字符必须出现m次;

[[email protected] ~]# egrep "j{1}w" nihao

eoifjwoinihoahg

{m,}:其前面的字符至少出现m次;

[root[email protected] ~]# egrep "j{1,}w" nihao

eoifjwoinihoahg

{,n}:其前面的字符出现次数不超过n次,最少0次

[[email protected] ~]# egrep "g{,3}k" nihao

afggsdgalkljglas;dgj;l

;sldfkjlsfkj

flksajfldjkl

ljkjjjjjgggke

注意:在正则表达式中,表示任意长度的任意字符:.*

位置锚定字符:

行锚定:

行首锚定:^

行尾锚定:$

字锚定:

字首锚定:\<或\b

字尾锚定:\>或\b

示例:寻找文件中空白行行数

[[email protected] ~]# egrep "^[[:space:]]*$" nihao | wc -l

3

分组与前向引用字符:

():将()中包含的内容作为一个不可分割的整体来处理;

正则表达式处理引擎的内置变量,1表示前面所出现的第一组()中括选的内容,2表示前面所出现的第二组()中括选的内容……

(string1(string2)) 或者(string1).*(string2):1表示string1,2表示string2

或者:

|:将其左右的字符或字符串当做整体对待

“C |cat” C cat

grep系:

grep:仅支持基本正则表达式元字符

egrep:可以支持扩展正则表达式元字符

fgrep:不支持任何形式的正则表达式元字符,将所有的字符都视为没有任何特殊意义的普通文本字符:

常用选项:

-A num:同时显示被PATTERN匹配到的行及其后续num行;

-B num:同时显示被PATTERN匹配到的行及其前面num行;

-C num:同时显示被PATTERN匹配到的行及其前后num行;

--color[=WHEN]:以高亮颜色显示匹配到的内容;

-c,--count:不输出被PATTERN匹配的行的内容,而是输出被PATTERN匹配到的行数;

-E, --extended-regexp:可以使grep命令支持扩展正则表达式元字符;相当于执行了egrep命令;

-F, --fixed-strings, --fixed-regexp:相当于fgrep

-e PATTERN, --regexp=PATTERN;指定多个PATTERN在一个命令行中生效;

-f FILE, --file=FILE:从指定的文件中读取多个PATTERN用一次搜索;

-i, --ignore-case:忽略文件中字符的大小写

-o, --only-matching:仅显示被PATTERN匹配到的部分,关闭贪婪模式(在我们取字符串的时候很有用)

-q, --quiet, --silent:安静模式;相当于grep > /dev/null

-v, --invert-match:显示没有被PATTERN匹配到的行;

时间: 2024-08-14 01:51:01

编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法的相关文章

编程语言和shell编程基础

bash的特性之多命令执行: $() 管道:进程间的通信(IPC) 顺序执行结构: 分号 选择执行结构:(逻辑运算) 与:逻辑乘法,&& 0:success-->true 1-255:failure-->false true&&true = true true&&false = false    "与"短路逻辑运算: 只要第一个操作数为false,则其逻辑运算的结果一定为false,如果command1能够成功执行,则comm

编程语言和Python解释器介绍

主要内容: 一.编程语言分类和介绍 二.Python解释器分类和介绍 一.编程语言分类和介绍 1.编程语言分类 编程语言的发展依次经历了机器语言.汇编语言和高级语言. 2.编程语言的介绍   2.1 机器语言 定义: 计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言. 机器语言属于低级语言. 特点: <1>面向最底层,速度最快: <2>最复杂,开发效率低,直观性差,程序全部由0和1构成. 示例: 指令部分 0000

Java笔记第一篇 初识编程语言和Java

#日常唠叨#哈喽大家好,我是小星星--星·双子,这是我第一次写博客,请大家多多关照(小星星的前端不好,界面有点丑,不要在意)!接下来小星星会给大家连载小星星学Java的笔记,一天一更,9月1日之后双休1-2更,希望对大家有用.好咯,那现在开始喽! 我们先从编程语言的形成原因和发展史开始: 大家应该知道,第一台计算机ABC和第一台通用计算机ENIAC登场后,人们就开始使用编程语言了(虽然ABC计算机不可编程).那时使用的是机器码,即用0101这样的二进制编码进行编程,人们把这种编程语言叫做机器语言

linux 基础与shell编程[笔记]

linux 基础与shell编程 linux 系统知识 linux是一个OS ,也是一个完全免费 开源 自由软件 linux 1991   荷兰大学生课程设计   unix GPL协议 GPL:General Public License 是一份GNU(完全自由软件操作系统)是一个广泛使用的自由软件许可证条款 常见的linux发行版本: Debian:Debian为一款提供您安装在计算机上使用的操作系统 (OS).操作系统就是能让您的计算机工作 的一系列基本程序和实用工具.由于 Debian 采

2017-12-5Linux基础知识(15)shell编程

shell编程是在Linux的基础知识中所必须掌握的语言,它也是一个命令的集合,如果学会的话,我们将会事半功倍,将重复的操作通过shell编程脚本来实现,减轻了一定的负担,那么现在就来讲一下shell编程的基础. 一.编程语言的分类 其实根据其语言的分类来讲,强类型的编程语言首先要编译成为该平台的二进制程序文件所能运行,当程序文件可以运行时,编译器就不在参与,而在弱类型的编程语言当中,使用解释器将源代码边解释边执行,那么相当于前者来说,其执行的速度比后者要快得多,但是如果编译完成之后有问题的话,

Shell编程基础知识(一)

一.基本的运行Linux程序的3种方法: (1) 使文件具有可执行权限,直接运行文件.eg:  chmod a+x testfile.sh   ./testfile.sh (2) 直接调用命令解释器来执行程序.eg: python testfile.sh   (根据文件开头声明的命令解释器进行调用) (3) 使用source执行文件  eg:  source testfile.sh   .testfile.sh  (t通常用于重新执行刚修改的初始化文件,使之立即生效) Shell的命令有3种:内

如何迅速入门Shell 编程

什么是Shell脚本? Shell脚本(英语:Shellscript)是一种电脑程序与文本文件,内容由一连串的shell指令构成,经由UnixShell直译其内容后运作.被当成是一种脚本语言来规划,其运作方法与直译语言适当,由Unixshell扮演指令行解释器的人物,在读取shellscript以后,依序运转其中的shell指令,以后输出结果.使用Shellscript可以进行系统管理,文件操作等. 在Unix及所有的类Unix系统中,如Linux.FreeBSD等操作系统,都存在ShellSc

05 shell编程之正则表达式

正则表达式&&文本处理利器 学习目标: l  掌握正则表达式的运用 l  掌握sed.awk文本处理工具的使用 目录结构:   正则表达式 正则表达式概述 l  正则表达式:使用单个字符串来描述,匹配一系列符合某个句法规则的字符串 l  由普通字符与特殊字符组成 l  一般用在脚本编程,文本编辑器中,如php.Python.shell等,简写为regex.regexp.RE l  用来检索.替换符合模式的文本,具有强大的文本匹配功能 l  能够在文本海洋中快速高效地处理文本 l  正则表达

linux系统之shell编程-正則表達式

shell编程正則表達式: 1:元字符   [ ]  .   *  ? + ( )  |  {  }  ^  $ 2 : [a-z0-9]  表示匹配随意数字和字母的一个 3 :  [^a-z]     匹配除了字母的随意一个 4 :  ab+c      +表示匹配一个或多个+号前面的字符 5 :   ab*c       *表示匹配没有或多个*号前面的字符 6 :   ab?c      ?表示匹配一个?号前面的字符 7 :   (ab){2}c   表示匹配两个ab字符的字符. 8 :