前端analysis | What,Why,Who,When,Where,How

linux 学习笔记一

2022-08-09

导语

Linux命令,前端是反复的学习,通过不停的使用,才能掌握的。

内容

正则

符号 描述
* 标识0个或者多个字符
? 标识可有可无
+ 1个或者多个
^ 表示以什么开头
& 表示以什么结尾
\ 用来转义特殊字符
<> 用来做精确匹配
[] 选项中的
() 类似[],表示一组可选范围,常与|或联用

grep(全局搜索正则表达式并打印)

global search by regular express and print out the line

注意点,搜索的内容中如果有空格,需要使用””括起来

命令格式:

1
grep [选项][模式][文件数组]

变量

变量赋值

1
2
3
4
5
6
one=1
two = "hello $one"
echo $one

#已经赋值的,重设
one+1

特殊赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#变量定义,均无效 
cheohu@CHEOHU-C1MPM:~$ color=black
cheohu@CHEOHU-C1MPM:~$ echo "this color is ${color:=red}"
this color is black
cheohu@CHEOHU-C1MPM:~$ echo "this color is ${color:-red}"
this color is black


#变量未定义
cheohu@CHEOHU-C1MPM:~$ echo "this is undefined ${val:=123}"
this is undefined 123
#:=会对变量进行赋值;:-不会进行赋值操作,也就是说不会污染
cheohu@CHEOHU-C1MPM:~$ echo $val
123
cheohu@CHEOHU-C1MPM:~$ echo "this is undefined ${val:-123}"
this is undefined 123
cheohu@CHEOHU-C1MPM:~$ echo $val

“:?”和“?”可用于测试变量是否被赋值,若变量未赋值,Shell提示错误信息

:=”和“:-”都不对colour进行重新赋值。注意,使用以上两种符号时,都需要用花括号将赋值式子括起来,否则,Shell将colour:=blue整个字符串当做变量名进行处理。

变量清空

unset one

readonly

declare命令与typeset命令一样,用于定义和限制变量的属性,declare -r可将变量设置为只读,等价于readonly命令

  • 可以使用readonly关键字,设置只读
  • 如果要查看系统中所有的只读变量,只需执行readonly命令即可
  • 用readonly设置变量为只读只是其中的一种方法,我们还可以利用declare和typeset命令实现同样的功能

无类型

Shell脚本变量却是无类型的,这与awk变量是一样的。bash Shell不支持浮点型,只支持整型和字符型,默认情况下,Shell脚本变量是字符型的,同时,字符型的变量还具有一个整型值,为0,尽管如此,bash Shell并不要求在定义一个变量时声明其类型。但是,Shell会根据上下文判断出数值型的变量,并进行变量的算术运算和比较等数值操作。判断标准是变量中是否只包含数字,如果变量只包含数字,则Shell认定该变量是数值型的,反之,Shell认定该变量是字符串

运算

1
2
3
4
a=2009
#let命令用于在变量上执行算术运算
let "a+=1"
echo $a

1
2
3
b=xx09
# 强制转换为整型
declare -i b

环境变量

在给环境变量赋值后,用export命令声明一下,就说明此变量为环境变量,环境变量的名称一般由大写字母组成.如果要列出系统中所有的环境变量,可使用env命令

PATH

1
2
export PATH="dir":$PATH
命令中的new directory就是新加上去的目录,后面用冒号加$PATH,表示new directory加上旧的PATH变量值,得到新的PATH变量值。

USER ,UID

USER表示已登录用户的名字,UID则表示已登录用户的ID。PPID是创建当前进程的进程号,即当前进程的父进程号

PS1,PS2

PS1和PS2称为提示符变量,用于设置提示符格式,比如,例6-17中的Shell提示符指的是[root @jselab ~]#这段文字,中括号里包含了当前用户名、主机名和当前目录等信息,这些信息并非固定不变,它可以通过PS1和PS2的设置而改变。

配置文件

系统管理员通常不会利用export逐个设置环境变量,而是将export命令放置在特殊的配置文件之中,Shell能够在特定时刻执行这些配置文件,从而自动完成环境变量的配置工作。本节介绍.bash_profile、.bashrc和.bash_logout三个配置文件,这三个文件存在于用户根目录,即$HOME目录,Linux中以“.”开头的文件为隐藏文件

  • $HOME/.bash_profile是最重要的配置文件,当某Linux用户登录时,Shell会自动执行.bash_profile文件,如果.bash_profile文件不存在,则自动执行系统默认的配置文件/etc/profile
  • 即句点符号“.”和source命令是等价的,source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
  • .bash_logout文件在用户注销时执行,用户可以在该文件中写入清除某些环境变量或记录登录时间等命令,.bash_logout文件也可以不存在,此时,用户注销时将不再执行任何额外的命令。
  • 打印其进程号,$$表示执行该脚本的进程号

位置参数

位置参数(positional parameters)是一种特殊的Shell变量,用于从命令行向Shell脚本传递参数,$1表示第1个参数、$2表示第2个参数等,$0为脚本的名字,从${10}开始,参数号需要用花括号括起来,如${10}、${11}、${100}、…。$*和$@一样,表示从$1开始的全部参数

特殊位置参数

  • $# - 传递到脚本参数个数
  • $*,$@ - 传递到脚本所有参数
  • $$ - 进程号
  • $? - 是否执行有误, 0 无误; 非0,有误

引用

引用是屏蔽特殊字符的特殊意义,而将其解释为字面意义。

  • “” , 除了``,\ , $ 其余字符都可以操作

    双引号引用除美圆符号$, 反引号(’)和反斜线(\)之外的所有字符,即$、(’)和(\)在双引号中仍被解释为特殊意义.在双引号中保持$符号的特殊意义可以引用变量,如”$variable”表示以变量值替换变量名。 可以防止字符串分割、保留变量中的空格这一特性.

  • ‘’ 都可以

    单引号不再具备引用变量的功能。因此,我们通常将单引号的引用方式称为全引用,将双引号的引用方式称为部分引用, 除了自身外,其余都解释为字面意义。

  • `` , shell执行命令

  • \ 转义字符

命令替换

命令替换,一种是使用反引号,另一种是利用$()

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏