@ vim 编辑快捷键
ctrl + n
是自动补齐
ctrl + p
是往上选择
ctrl + f
是下一屏幕
ctrl + b
是上一屏幕
w
:是移动一个单词
b
:是向前一个单词
d^
:当前行中,删至行首
d$
:当前行中,删至行尾
y^
:当前到行头的内容
y$
:复制当前到行尾的内容
d1G
:删除光标所在行,到第一行的所有数据
dG
::删除光标所在行下一行,到最后一行的所有数据
@ vim 编辑器中TAB变4空格
vim /etc/vimrc
#打开 vimrc
文件,将以下三行内容添加到文件中
set ts=4
set expandtab set autoindent
@ 删掉文件后还占用磁盘空间问题
du -ach *
#这个能看到当前目录下的所有文件占用磁盘大小和总大小
du -sh
#查看当前目录总大小
du -sh *
#查看所有子目录大小
lsof | grep delete
#如果怀疑删掉的数据还在占用磁盘空间试试这个,查看del的进程号
kill -9 pid
#结束掉进程就能释放磁盘空间了
for i in $(lsof | grep delete | awk '{print $2}'); do kill -9 $i ;done
# 循环删除(慎重使用)
@ 查看磁盘中占用大小
du -h --max-depth=1 /
# 这个意思是列出 "/"
目录下所有的文件目录的大小(不包含隐藏文件),级别为1级。
# du -h --max-depth=2 /
# 这个意思是列出 "/home"
目录下所有的文件目录的大小(不包含隐藏文件),级别为2级。
@ 快速备份一个文件
cp a.txt{,.back}
# 快速备份一个文件
@ 找出系统中使用 cpu 最多的进程
ps aux --sort -pcpu | more
#按cpu降序排序 或 top -》 P
@ 找出系统中使用 mem 最多的进程
ps aux --sort -rss | more
#按内存降序排序 或 top -》 M
@ 查看服务启动时间
ps -eo cmd,pid,lstart,etime | grep httpd
# 查看启动时间和已经存在时间
参数说明:
lstart
# 启动时间
etime
# 显示了自从该进程启动以来,经历过的时间
@ 普通用户保存没有权限的文件(需要有sudo权限)
ps:当你修改完文件后,发现你是普通用户并没有保存的权限,但是修改了很久了,是不是很蛋疼?
退出还是一点点复制?告诉你轻松搞定的方法 ^.^(-)^.^
前提是你要有sudo的权限。
:w !sudo tee %
然后输入你普通用户的密码(前提是你有sudo权限)
[sudo] password for test:普通用户的密码
W12: Warning: File “zabbix_agentd.conf” has changed and the buffer was changed in Vim as well
See “:help W12” for more info.
Press ENTER or type command to continue 直接回车即可
他会告诉你没有修改权限,你直接:q!
退出即可。
退出后用cat 或者是 vim
命令查看,你会发现你已经修改了文件的内容。
基础命令:
Date[option] …… [+Format]:显示
Format:格式符号
Date[MMDDhhmm[[cc]yy].[ss]
MM:月份 DD:几号 hh:小时 mm:分钟 yy:两位年份 ccyy:四位年份 .ss:秒钟
Linux的两种时钟:
系统时钟:有linux内核通过cpu的工作频率进行的计时
硬件时钟:
hwclock:显示硬件时钟
-s,–hctosys:把硬件时钟写入到系统时钟
-w,–systohc:把系统时钟写入硬件时钟
目录相关的命令:
当前目录或工作目录
主目录,家目录:HOME
root:/root
普通用户:/home/USERNAME
Cd:
Cd或cd:回到当前用户主目录
CdUSERNAME:切换至指定用户的主目录
Cd-:在上一个目录和当前目录之间来回切换
.:当前目录
..:上一级目录
相关的环境变量:
PWD:保存了当前目录路径
OLDPWD:上一次所在目录路径
Pwd:显示当前目录
Ls(list):显示指定路径下的文件列表
Ls[option]…… [DIR]……
-a,–all:显示所有文件,包括隐藏文件
-l:长格式显示
-h,–human-readable:单位换算(人类可读的)
-d:显示目录自身的相关属性,通常与-l一起使用
-r:以逆序显示
-R:递归显示
-rw-r–r– 1 root root 44800 Aug 14 14:12 install.log
最左一位:文件类型(-,d,l,b,c,p,s)
后面9位:权限位(perm)
数字1:文件被硬链接的次数
左root:文件的owner
右root:文件的group
44800:文件的Size
Aug 14 14:12:文件最近一次呗修改的时间
Stat /Path/To/SomeFile:获取指定文件的元数据
文件查看命令:Cat,Tac
Cat[option]……[File]……
-n:显示行编号
-E:显示行结束符$
文件内容类型查看命令:File
File Path/to/SomeFile :查看文件的类型
回显命令:echo
-n:禁止自动添加换行符
-e:允许使用转义字符
\n:换行
\t:制表符(Table键)
Echo “$Var_NAME”:变量会替换,双引号表示弱引用
Echo ‘$Var_NAME’:变量不会替换,单引号表示强引用
Which:显示命令对应的程序文件路径
Which [option] COMMAND
–skip-alias:跳过显示别名
Whatis:
使用mkwhatis命令可将当前手册上所有帮助手册与之对应的关键字创建一个数据库
系统管理类命令:
关机:
Halt,poweroff,shutdown,init 0
重启:
Reboot,shutdown,init 6
Halt,poweroff,reboot
-f:强制,不调用shutdown
-p:切断电源
Shutdown[option]…… Time [Message]
-r:reboot
-h:halt
-c:cancel
TIME:
Now:立刻
+m:例如:+3 ,3分钟后
hh:mm:绝对时间表示,指明具体时间
跟用户登录相关:
Who:显示目前登入系统的用户信息。
Whoami:显示自身的用户名称。
W:显示目前登入系统的用户信息。
Linux的文件系统:
根文件系统(rootfs):root filesystem
LSB,FHS(Filesystem Heriache Standard)
/boot:引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub)都存放于此目录
/bin:供所有用户使用的基本命令,不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令,不能关联至独立分区,OS启动即会用到的程序
/lib:基本共享库文件,以及内核模块文件(lib/modules)
/lib64:专用于X86_64系统上的辅助库文件存放位置
/etc:配置文件目录(纯文本文件)
/home/USERNAME:普通用户家目录
/root:管理员家目录
/media:便携式移动设备挂载点
/mnt:临时文件挂载点
/dev:设备文件及特殊文件存放位置:
b: block device :可随机访问
c:character device:线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存放位置
/usr:universal shared read-only data
Bin,sbin,lib,lib64
Include:C程序的头文件(header files)
Share:结构独立的数据:如doc,man等等
Local:第三方应用程序的安装位置
Bin,sbin,lib,lib64,etc,share
/var:variable打他files
Cache:应用程序缓存数据目录
Lib:应用程序状态信息数据
Local:专用于为/usr/local下的应用程序存储可变的数据
Lock:锁文件
Log:日志目录及文件
Opt:专用于为/opt下的应用程序存储可变数据
Run:运行中的进程相关的数据,通常用于存储进程的pid文件
Spool:应用程序数据池
Tmp:保存系统两次重启之间产生的临时数据
/proc:用于输出的内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息的迅疾文件系统
/selinux:security enhanced linux ,selinux相关的安全策略等
Linux上的应用程序的组成部分:
二进制程序:/bin ,/sbin ,/usr/bin ,/usr/sbin ,/usr/local/bin ,/usr/local/sbin/
库文件:/lib ,/lib64 ,/usr/lib ,/usr/lib64 , /usr/local/lib, /usr/local/lib64
配置文件:/etc , /etc/DIRECTORY ,/usr/local/etc
帮助文件:/usr/share/man ,/usr/share/doc ,/usr/local/share/man , /usr/local/share/doc
Linux下的文件类型:
-(f):普通文件
d:目录文件
b:块设备
c:字符设备
l:符号链接设备
p:管道文件
s:套接字文件:socket
bash的基础特性:
(1):命令历史(history)
环境变量:
HISTSIZE:命令历史记录的条数
HISEFILE:~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
History
-d offset :删除某条
-c:清空历史
#:显示历史中最近的#条命令
-a:手动追加当前会话缓冲区的命令至历史文件中
调用历史中的命令:
!#:重复执行第#条命令
!!:重复执行上一条
!string:执行以string开头的命令
调用上一条命令的追后一个参数: !$
控制命令历史的记录方式:
环境变量:HISTCONTROL
Ignoredups:忽略重复的命令(连续且相同方为重复)
Ignorespace:忽略所有以空白字符开头的命令
Ignoreboth:ignoredups,ignorespace
修改环境变量值得方式:export 变量名=“值”
(2)命令补全
直接补全:Tab,用户给定的字符字符串只有一条唯一对应的命令
(3)路径不全
把用户给出的字符串当作路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果唯一:则直接补全
否则:再次敲Tab键给出列表
目录管理类命令:
Cd,pwd,ls,mkdir,rmdir,tree
Mkdir [options] /path/to/somewhere
-p:存在时,不报错,且自动创建所需的各目录
-v:显示详细信息
-m MODE:创建目录时直接指定权限
Rmdir [options]……DIRECTORY
-v:显示详细过程
Tree:查看目录结构
-d:只显示目录
-L Level:指定显示的层级目录
-P Pattern
(4)命令行展开
~:展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为各个路径
/tmp/{a,b}=>/tmp/a /tmp/b
/tmp/{a,b}/h=>/tmp/a/h /tmp/b/h
(5)命令的执行结果状态
成功:0
失败:1-255
Bash使用特殊变量$?保存最近一条命令的执行状态结果
0:成功
1-255:失败
程序执行有两类结果:
程序的返回值
程序的执行状态结果
文本文件查看类命令:
Cat,tac,more,less,tail,head
Head [option]……[FILE]……
-c #:获取前#字节
-n #:获取前#行
-#:获取指定前#行
Tail [option]……[FILE]……
-c #:获取后#字节
-n #:获取后#行
#:获取后#行
-f:跟踪显示文件新追加的内容
文件的时间戳管理工具:Touch
三个时间戳:
Access time:访问时间,简写为atime 读取文件内容
Modify time:修改时间,简写为mtime 改变文件内容
Change time:改变时间,简写为ctime 元数据发生改变
Touch命令:
Touch [option]……FILE……
-a:only atime
-m:only mtime
-t STAMP:
[[cc]yy]MMDDHHMM[.ss]
-c:如果文件不存在,则不予创建
文件管理
Cp,mv,rm
复制命令:cp
常用选项:
-i:交互式
-R,-r:递归复制目录及内部所有文件内容
-a:归档复制(保留文件的所有原属性)相当于-dR –preserv=all
-d:拷贝时,保留链接
· -f:强制复制
-p:–preserve=mode,ownership,timestamps
-v:显示详细信息
Mv:move移动文件
常用选项:
-i:交互式
-f:强制移动
Rm:remove删除
Rm[option]……FILE……
-i:交互式
-f:强制删除
-r:递归
Bash的基本特性
1、 命令别名(alias)
通过alias命令实现
(1) alias
显示当前shell进程所有可有的命令别名
(2) alias NAME=‘VALUE’
定义别名NAME,其相当于执行命令“VALUE”
注意:在命令行中定义的别名,仅对当前shell进程有效,如果想永远有效,要定义在配置文件中:
仅对当前用户:~/.bashrc
对所有用户:/etc/bashrc
重新读取配置文件(bash进程):
Source /path/to/config_ file
撤销别名:unalias
Unalias [-a] name [name……]
注意:如果别名与原命令名称相同,执行原命令,可使用“\command”
2、 glob(globbing)
bash中用于实现文件名的“通配”
通配符:,?,[ ]
(1): :任意长度的任意字符
(2):?:任意单个字符
(3):[] :匹配指定范围内的任意单个字符
[a-z]:不区分大小写
[A-Z]:大写字母
(4):[^]:匹配指定范围外的任意单个字符
专用字符集合:
{:digit:}:任意数字
{:lower:}:任意小写字母
[:upper:]:任意大写字母
{:alpha:}:任意大小写字母
[:alnum:]:任意数字和字母
[:space:]:空白字符
[:punct:]:标点符号
3、 bash的快捷键
Ctrl+l:清屏,相当于Clear
Ctrl+a:跳转至命令开始处
Ctrl+e:跳转至命令结尾处
Ctrl+c:取消命令执行
Ctrl+u:删除命令行首至光标所在处的所有内容
Ctrl+k:删除光标所在处至命令行尾的所有内容
4、 bash的输入(I/O)重定向及管道
程序:指令+数据
读入数据:Input
输出数据:Output
标准输入:keyboard,0
标准输出:monitor,1
标准错误输出:monitor,2
打开的文件都有一个fd:File descriptor (文件描述符)
I/O重定向:改变标准位置
输出重定向:Command > new_pos
Command >> new_pos
>:覆盖重定向:目标源文件内容会被清除
>>:追加重定向:新内容会追加至目标文件尾部
#set – c:禁止对已有文件进行覆盖
强制覆盖: > 1
#set + c:运行对已有文件进行覆盖
2 > :覆盖重定向错误的输出流数据
2>> :追加重定向错误的输出流数据
标准输出和错误输出定向至不同位置
Command > /path/to/file.out 2> /path/to/err.out
合并标准输出和错误输出为同一个数据流重定向:
&> &>>
Tr命令:转换或删除字符
Tr[option]……set1 [set2]
-d:删除指定字符
HERE Doucmentation:<<
#cat <<EOF
#cat > /path/to/somefile <<EOF
管道:
COMMAND1 | COMMAND2 |COMMAND3 |………
注意:最后一个命令会在当前shell进程的子进程中进行执行的
Tee命令:
两路输出:屏幕、指定文件
Tee [oprion]……[file]……
文件处理工具:wc,cut,sort,uniq
Wc [option]…[FILE]…
-l:统计文件行数
-w:统计文件单词数
-c:统计文件字节数
Cut命令:
Cut [option]……[FILE]……
-d DELIMETER:指明分隔符
-f FILEDS
#:第#个字段
#,#[ ,#]:离散的多个字段 #-#:连续的多个多个字段 --output-delimeter=string
Sort命令:
Sort[option]……[FILE]……
-f:忽略字符大小写
-r:逆序排序
-t DELRMITER:字段分隔符
-k # :以指定字段为标准排序
-n:以数值大小进行排序
-u:uniq,去重显示
Uniq命令:连续且完全相同方为重复
Uniq [option]……[file]……
-c:显示每行重复出现的次数
-u:仅显示不曾重复的行
-d:仅显示重复过的行
用户和组管理
资源分派:
Authentication:认证
Authorization:授权
Accouting:审计
Linux用户:Username /UID
管理员:root,0
普通用户:1-65535
系统用户:1-499
登录用户:500+
Linux组:Groupname /GID
管理员组:root,0
普通组:
系统组:1-499
普通组:500+
Linux安全上下文:
运行中的程序:进程(process)
以进程发起者的身份运行
进程所能够访问的所有资源的权限取决于进程的发起者的身份
Linux组的类别:
用户的基本组(主组):组名同用户名且仅包含一个用:私有组
Linux用户和组相关的配置文件:
/etc/passwd:用户及其属性信息(如:名称,UID,基本ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
/etc/passwd:
Name:passwd:uid:gid:gecos:directory:shell
用户名:密码:UID:GID:注释:主目录:默认shell
/etc/group:
Group_name:password:`GID:user_list
组名:组密码:GID:以当前组为附加组的用户列表(以逗号分隔)
/etc/shadow:
用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:密码的警告时间:密码禁用期:账户过期日期:保留字段
加密机制:明文<………>密文
Md5,sha1,sha224,sha384,sha512,sha256
密码的复杂性策略:
1、 使用数字、大写字母、小写字母及特殊字符中至少3种
2、 密码足够长
3、 不要使用易猜测密码
4、 定期更换:不要使用最近曾经使用过的密码
用户和组相关的管理命令:
用户创建:useradd
Useradd [options] Login
-u UID:[UID_MIN,UID_MAX]定义在/etc/ login.defs
-g GID:指明用户所属的基本组,可为组名,也可为GID
-c “comment”:用户的注释信息
-d /path/to/home_dir:以指定的路径为用户家目录
-s SHELL:指明用户默认shell程序,可用列表在/etc/shells文件中
-G group1[group2,………]:为用户为用户指明附加组
-r:创建系统用户
默认值设定: /etc/default/useradd文件中
组创建:groupadd
Groupadd [option]……groupname
-g GID:指明GID号:[GID_MIN,GID_MAX]
-r 创建系统组
查看用户相关的ID信息:id
Id [option]……[user]
-u :查看UID
-g :查看GID
-G :查看Groups
-n :查看Name
切换用户或以其他用户身份执行命令:su
Su [options……] [-] [user[args……]]
切换用户的方式:
Su username:非登录式切换,即不会读取目标用户的配置文件
Su – username:登录式切换,会读取目标用户的配置文件,完全切换
注意:root su切换至其他用户不需要输入密码
用户属性修改:usermod
Usermod [option] Login
-u UID:新UID
-g GID:新基本组
-G Group1,Group2……:新附加组,原来的附加组会被覆盖,若保留原有附加组,最佳新附加组需要使用-a
-s shell:新的默认shell
-c comment
:新的注释信息
-d HOME:新的家目录,原有家目录中的文件不会同时移动至新的家目录,若需要移动,使用-m选项,即:-m -d /path/to/directory
-l login_name:新的名字
-L:lock指定用户
-U:unlock指定用户
-e YYYY-MM-DD: 指明用户过期日期
-f:INACTIVE:设定非活动期限
给用户添加密码:passwd
Passwd username:修改指定用户密码,管理员才有权限
Paddwd:修改密码
常用选项:
-l:锁定用户
-u:解锁用户
-n mindays:指定最短使用期限
-x maxdays:指定最大的使用期限
-w wandays:指定提前几天警告修改密码
-i inactivedays:非活动期限
–stdin:从标准输入接收用户密码
Eg:echo “ password “ | passwd –stdin username
删除用户:userdel
Userdel [option]……Login
-r:删除用户家目录
组属性修改:groupmod
Groupmod [option]……group
-n group_name:新名字
-g GID:新的GID
组删除:groupdel
Groupdel group
组密码设置:gpasswd
Gpasswd [option] group
-a user:将user添加至指定组中
-d user:将user从其附加组中删除
-A user1,user2……:设置有管理权限的用户列表
Newgrp命令:临时切换基本组
如果用户本不属于此组需要输入密码
修改用户属性:chage [option]……login
-d LAST_Day
-m:最小使用天数
-M:最大使用天数
-w:警告天数
其他命令:chfn,chsh,finger
权限管理:
文件的权限主要针对三类对象进行定义:
Owner:属主,u
Group:属组,g
Other:其他,o
每个文件针对每类访问者都定义了三种权限
R:readable
W:writable
X:excuteable
文件:
R:可使用文件查看类工具获取其内容
W:可修改其内容
X:可以把纯文件提请内核启动为一个进程。
目录:
R :可以使用ls查看此目录中文件列表
W :可在此目录中创建文件,也可删除此目录中的文件
X : 可以使用ls-l查看此目录中文件列表,可以使用cd进入此目录
修改文件权限:
Chmod [option]……OCTAL-MODE FILE……
例如: chmod 640 a.txt
-R:递归修改
Chmod [ OPTION] ……MODE[MODE]……FILE……
MODE:修改一类用户的权限
U=
G=
O=
A=
Ug=
U=,g=
例如:chmod u+x a.txt
Chmod [OPTION]……–reference=RFILE FILE……
参考RFILE文件的权限,将FILE的权限修改为同RFILE
例:chmod –reference=./c.txt a.txt 把a.txt的权限修改为和c.txt一样
修改文件的属主和属组:
Chown [OPTION]……[OWNER]:[GROUP] FILE……
用法:
OWNER
OWNER:GROUP
:GROUP
注意:命令中的“:”可以用“.”代替
-R:递归修改
Chown [OPTION]…… - -reference=RFILE FILE……
-R:递归修改
修改文件的属组:
Chgrp [OPTION]……GROUP FILE……
Chgrp [OPTION]……–REFERENCE=RFILE FILE……
-R:递归修改
Umask(文件或目录创建的遮罩码)
FILE:666-umask
注意:如果某类的用户权限拥有执行权限则将权限+1
DIR:777-umask
Umask:查看
Umask #:设定
Bash的基础特性(3)
1、 提供了编程环境
Shell程序:提供了编程能力,解释执行
命令的执行方式:
计算机:运行二进制指令
编程语言:
低级:汇编
高级:C++等
过程式编程:
顺序执行
循环执行
选择执行
Shell编程:过程式、解释执行
编程语言的基本结构:
数据存储:变量、属组
表达式:
语句:
Shell脚本:文本文件
#!/bin/bash
运行脚本:
1、 给予执行权限,通过具体的文件路径指定文件执行
2、 直接运行解释器:将脚本作为解释器程序的参数运行
变量:
命令的内存空间
数据存储方式:ASCII
字符、数值、整型、浮点型
变量类型:
作用:
1、 数据存储格式
2、 参与运算
3、 表示的数据范围
类型:
字符
数值:
整型
浮点型
编程程序语言:
强类型:
弱类型:bash
把所有要存储的数据统统当作字符进行,不支持浮点数
逻辑运算:
True,flase(1,0)
与运算:
1 && 1=1
1 && 0=0
0 && 1=0
0&& 0=0
或运算:
1 || 1=1
1 || 0=1
0 || 1=1
0 || 0=0
非运算:
!1=0
!0=1
异或运算:
相同为假,不同为真
Grep:
Linux上文本处理三剑客
Grep:文本过滤工具(模式,pattern);grep,egrep,fgrep
Sed:stream editor:文本编辑工具
Awk:linux上实现的gawk,文本报告生成器
Grep:global search regular expression and print out the line
作用:文本搜索工具,根据用户用户指定的“模式”对目标文本逐行进行匹配检查打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能
分两类:
基本正则表达式:“BRE”
扩展正则表达式:“ERE”
Grep-E,egrep
正则表达式引擎:
Grep [options] PATTERN [FILE……]
选项:
–color=auto:对匹配到的文本着色显示
-v:显示不能被pattern匹配到的行
-i:匹配时,忽略字符大小写
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-A#:显示匹配到的行及后面#行
-B#:显示匹配到的行及前面#行
-C#:显示匹配到的行及前后#行
-E:使用扩展的正则表达式
基本正则表达式元字符:
字符匹配:
. :匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数:
:匹配前面的字符任意次
.:任意长度的任意字符
?:匹配其前面的字符0次或1次
+:匹配其前面的字符至少一次
{m}:匹配其前面的字符m次
{m,n}:匹配其前面的字符至少m次,最多n次
{0,n}:匹配其前面的字符至多n次
{m,}:匹配其前面的字符至少每次
位置锚定:
^:行首锚定 例如:^root
$:行尾锚定 例如:root$
^PATTERN$:用模式匹配整行
^$:空行
\b或<:词首锚定:用于单词模式的左侧
\b或>:词尾锚定:用于单词模式的右侧
:匹配整个单词
分组:()
后项引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)
\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
注意:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中(这些变量的命名方式为:\1,\2,\3)
Egrep[options] PATTERN [FILE……]
扩展正则表达式的元字符:
字符匹配:
. :匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
次数匹配:
*:匹配前面的字符任意次
?:匹配前面的字符0次或1次
+:匹配前面的字符一次或多次
{m}:匹配前面的字符m次
{m,n}:匹配前面的字符至少m次,最多n次
位置锚定:
^:锚定行首
$:锚定行尾
Bash的基础特性:
变量类型:数据存储格式、存储空间大小、参与运算的种类
字符型、数值型(整型;浮点型)
强类型:定义变量时必须制定类型参与运算必须符合类型要求
弱类型:定义变量时,无须制定类型,默认均为字符型:参与运算会自动转换类型
Bash中的变量种类:
根据变量的生效范围等标准
本地变量:生效范围仅为当前shell进程
环境变量:生效范围为当前shell进程及子进程
局部变量:生效范围为当前shell进程中某代码片段
位置变量:$1,$2,$3
特殊变量:$?,$0,$*,$@,$#
本地变量:
变量赋值:name=value
可以使用引用:
Value:
(1) 可以是直接字串:name=username
(2) 变量引用:name=“$username”
(3) 命令引用:name=command
,name=$(command)
变量引用:${name},$name
“ ”:弱引用
:强引用
显示已定义的变量:
Set
销毁变量:
Unset
环境变量:
变量声明、赋值:
Export name=value
Declare – x name=value
变量引用:$name,${name}
显示所有环境变量:
Export、env、printenv
销毁:
Unset name
Bash有许多内奸的环境变量:PATH,SHELL,UID,HISTSIZE,HOME,PWD
变量命名法则:
1、 不能使用程序中的保留字
2、 只能使用数字、字母、下划线且不能以数字开头
3、 见名知意
只读变量:
Readonly name
Declare -r name