Linux课堂总结
课堂提问:
1、文件权限和目录权限的区别:
文件权限
r:可读取此文件的实际内容,如读取文本文件的文字内容等。
w:可以编辑、新增或者修改该文件的内容,但不含删除文件。
x:该文件内容为指令,具有可以被系统执行的权限。
对于文件的rwx来说,主要都是针对 文件的内容 来说的
目录权限
目录的主要内容在记录文件名列表
r:表示具有读取目录结构列表的权限
w:具有移动该目录结构列表的权限,建立新的文件与目录,删除已经存在的文件与目录 ( 对文件名增删查改 )
x:是否可以切换cd,用户能否进入该目录
Linux特权:
SUID:只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义 ;执行suid权限的程序时**,**此用户将继承此程序的所有者权限
SGID:执行sgid权限的程序时**,**此用户将继承此程序的所属组权限,可作用于目录上。
Stick-bit:对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除和改名自己的文件或目录,粘滞位。
Linux7种文件类型:
1、 - 普通文件
2、b 块设备文件
3、c 字符设备文件
4、d 目录
5、l 符号链接文件
6、p 命名管道文件
7、s socket文件(套接字文件,支持虚拟文件)
2、3统称为设备文件,块设备文件包括:硬盘、光盘…一次读取若干个字符,字符设备文件包括:输入输出设备…一个字符一个字符的读取,
第一章 Linux常用命令
1、man用来提供在线帮助,使用权限是所有用户
man+需要帮助的命令
2、help 显示命令的一些帮助信息,如果内容超出了一个屏幕,可通过管道使用more分屏显示信息
例:ls --help | more
3、ls显示目录内容
-a 不隐藏以 . 字符开始的项目,列出所有文件
-A 列出除了 . 及 … 以外的任何项目
-d 对于目录列出目录本身而非目录内的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-app7KmRW-1653832251154)(D:\大二下课程\Linux\image-20220526144427140.png)]
-l 以长格式显示制定目标的信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9ZlEPPs-1653832251155)(D:\大二下课程\Linux\image-20220526144529225.png)]
10个字符(文件类型+文件主权限+文件组权限+others)+硬链接数+文件主+文件大小+时间+文件名
-F 在文件名后显示文件类型说明符。/: 目录,*:可执行,@:符号链接,|:管道,=:socket文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8B2NmYq-1653832251155)(D:\大二下课程\Linux\image-20220526144744485.png)]
软连接:
类同与windos的快捷方式,给文件创建一个快速的访问路径,它依赖于原文件,与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。当原文件出现问题后,该链接不可用。
ln -s file1path file2path
给文件file1 创建软连接file2
硬链接:
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名
命令 ln file1 file2
给文件file1 创建硬连接file2
4、mkdir 建立子目录
mkdir [参数] [目录名]
mkdir zb //在当前目录下创建zb目录
-m 设定权限模式
参数:-p 创建多级目录
5、rmdir 删除目录 (目录为空才可)
rmdir 目录名
6、cd 切换目录
cd 目录名
7、vi 文本编辑器
vi 文件名
在键盘上按i键,进入插入状态,俺ESC键进入命令状态,按+“:” ,进入last行模式,输入wq,保存文件并退出
8、mv 用来为文件或目录改名,或者将一个目录转移到另一个目录中,权限为所有用户
改名:mv a.txt aaa.txt
cp 原文件名 目标文件名
移动:mv /usr/cbu/* .
9、cp 将文件或目录复制到其他目录中,使用权限所有用户
cp 源文件名 目标文件名
例:cp zb/b.txt /home
-r 递归复制子目录
-a 复制时保留源文件属性(时间戳、文件属主、符号链接)
10、rm 删除文件或目录
rm [参数] 文件 (级联删除)
参数:
-r 将参数中列出的全部目录和子目录均递归删除
-f 忽略不存在的文件,不给予提示
11、grep 在指定文件中搜索特定的内容,并将含有这些内容的行标准输出
grep [参数] [文件名]
参数:
-v 显示不包括匹配文本的所有行
-n 显示匹配文本的所有行
例子:搜索当前目录中的所有文件内容,显示不包括kkk的所有行
grep -v kkk *.*
grep 正则表达式
^ 行开头定位 举例:^love 以love开头的行匹配
$ 行末尾定位 举例:love$ 以love结尾的行匹配
. 任意一个字符 举例:l…e 与包含一个l后根两个字符,在跟一个e的行匹配
* 跟0或多个前驱字符相匹配 举例:/L*ove/跟ove前有0个或多个L的行相匹配
[] 与其中一个字符匹配 /[Ll]ove/ 与包含love或Love的行匹配
[x-z]与一个范围内的一个字符匹配 /[a-z]ove/与后跟ove的从a-z的字母相匹配
[^x-z]与不在范围内的一个字符匹配 /[^A-Z]/ 与不包含任何大写字母的行匹配
\ 用来给一个元字符转义 /love\./ 匹配包含love后跟一个句点的行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yU4Kdb2C-1653832251156)(D:\大二下课程\Linux\image-20220526144930293.png)]
12、find 在目录中搜索文件,使用权限 所有用户
例子:find / -name grub.conf
find [路径] [参数] [文件名]
参数:
-name 按文档名称查找
-user 按照文档属主查找
-type 按类型查找
-exec 将查找的目标进行下一步处理,exec后跟随处理命令,命令通过{}引用被找的文件,而命令必须以“\”结束
13、head 查看文件的开始内容
参数:
14、pwd 显示当前工作目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QabojwlH-1653832251156)(D:\大二下课程\Linux\image-20220525154641907.png)]
15、cd
参数: - 返回上次工作目录
[path] 切换到该目录
NULL 返回用户主目录
16、文件内容显示:
cat、more 、less 、head 、tail
统计 – wc
-l : 统计行数
-c : 统计字节数
-m:统计字符数
-w:统计单词数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-brgugwwn-1653832251156)(D:\大二下课程\Linux\image-20220526145133631.png)]
文件名通配符
- 匹配任意长度的字符串,包括空字符(除出现在第一个位置的)
? 匹配任意一个单子,不包括空字符
[] 匹配括号中任意一个字符
! 跟在[之后,表示匹配除! 后以外的字符
注:当通配符跟在被包含的引号中时,shell不在对其进行展开。
文件系统命令
文件命名:除 ‘ / ’ 和空字符以外的任何字符;以 ’ . ’ 开头的文件位隐含文件,文件名区分大小写。
文件类型:普通文件:‘ - ’
目录文件:’ d ’
符号链接:’ l ’
设备文件:’ c ‘
管道文件:‘ p ’
套接字文件:’ s ’
linux文件系统目录结构是单根的分层树形结构
linux把不同文件系统挂载在根文件系统下的不同子目录上
用户主目录:系统分配给用户用于存放用户自己文件的目录,普通用于的用户主目录默认为:
/home/用户名,可用 **“~”**代表主目录
当前目录:当前工作目录,用户在某时刻所在的目录;用 **" . “或” ./ "**表示;“…”表示父级目录
系统目录
/ 根目录,包含所有目录和文件
/bin 存放重要的Linux命令的可执行文件
/boot 存放用于启动Linux操作系统的所有文件
/dev 存放连接到计算机上的设备所对应的文件
/ect 存放和特定主机相关的文件和目录,包括系统配置文件
/home 一般用户的主目录所在位置
/proc 当前进程和系统的信息,仅存在内存
/tmp 临时目录,所有人都可读写
/user 总和目录,存放用户使用的命令及应用程序
/sbin 存放用于系统管理的命令
/var 可变目录,用于存放变动比较频繁的文件 ,如:日志
/root root用户主目录
/lib 共享库
/lost+found 存放文件系统监测产生的碎片文件
用户管理
添加用户 – useradd
useradd 用户名
改变用户口令 – passwd
passwd [用户名] 默认改变当前用户口令,只有root可以指定
删除用户 – userdel
userdel 用户名
相关配置文件:
/etc/passwd 用户信息文件 它存储用户的帐户信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dRNgKOFd-1653832251157)(D:\大二下课程\Linux\image-20220526145357776.png)]
1、用户名 用户登录时使用
2、密码,x字符表示加密的密码存储在/etc/shadow文件
3、用户ID(UID)UID 0 用于跟 UID (1-99)留给其他预定义的账户,UID (100-999)保留系统管理和系统账户组
4、组ID:主组ID(存储在所属文件)
5、用户ID信息,允许添加额外的用户的信息,如user全名,电话号码等
6、主目录,绝对路径的目录用户登陆时存在,如果该目录不存在,则用户目录是/
7、命令/壳,一个命令的绝对路径或shell(/bin/bash),他并不需要一个shell,这是一个壳
/etc/shadow 加密口令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iTyvDmg1-1653832251157)(D:\大二下课程\Linux\image-20220526150851897.png)]
用户名:加密密码:最后一次修改时间(相对于1970年1月1日来的天数):最小修改时间间隔(从最后一次修改时间算起几天不能修改密码):密码有效期(从最后一次修改时间算起几天需要重新修改密码):密码需要变更前的警告天数(从密码有效期算起提前几天开始警告):密码过期后的宽限时间(宽限天数内还可以登陆账号,过了就不能登陆了):账号失效时间(从1970.1.1的总天数):保留字段
/etc/group 组信息文件 /etc/group文件是有关于系统管理员对用户和用户组管理的文件
linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqpI7YOD-1653832251157)(D:\大二下课程\Linux\image-20220526151543102.png)]
组名:口令:组标识号:组内用户列表
组名:用户组的名称
口令:用户组加密后的口令字
组标识号:GID,和用户标识号类似,也是一个整数,被系统内部来标识组
组内用户列表:属于这个组的所有用户的列表,不同用于之间用(,)分割。
用户身份切换-- su
su [-][用户名]:默认切换为root
-:切换用户的同时指定用户登录shell环境替换当前shell环境
显示在线用户命令–who
进程管理
查看进程 – ps
ps [-lauxwm]
l:以长列表形式展示
w:以加宽格式展示
a:显示所有用户的进程
u:按用户名和启动时间的顺序显示进程
x:显示无控制台进程
常用组合 :-aux 显示所有进程
进程监控 – top
向指定进程发送信号–kill
kill [-信号值] PID
-9:强行杀死指定进程
后台执行 – &
格式:命令 &
将命令放到后台执行,释放shell提示符
文件权限
查询文件权限 – ls -l
改变文件权限 – chmod
chmod nnn [-R] 文件列表
chmod [augo][±=][rwx] 文件列表
改变文件所有者 – chown
chown user[.group] [-R] 文件列表
字符显示
echo [-选项] 字符串列表
-n :不输出换行符
-e :解析转义符
软件安装/卸载
通过包管理器安装 --rpm
rpm --[iU]vh 包列文件名表 安装
rpm -e 软件包名 卸载
在线安装
yum install/remove 包名
第二章 Shell编程
Shell概念
Shell是用户和系统(内核)之间的接口,是一个交互的命令解释器,他提供一组公用程序,利用内核功能完成用户提出的任务
Shell任务:
(a)分析命令
(b)处理通配符、变量替换、命令替换、重定向、管道和作业控制
©搜索命令并执行
Shell种类
(1) /bin/sh – B-shell
(2) /bin/csh – C-shell
(3) /bin/bash linux标准shell,兼容B-Shell
Shell 的选择:
Shell一般由管理员在创建用户时,为用户指定,其保存在/etc/passwd文件中;或通过usermod命令进行更改。也可在登陆执行相应命令切换Shell
Linux命令类别
内部命令:内嵌在Shell种
外部命令:存在于磁盘上的独立可执行文件
查看命令类型 – type
type [option] command
-t:显示类别 file:外部命令,alias:别名,builtin:内部命令
-p:显示命令的完整路径
-a:显示所有匹配命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOeJOxAG-1653832251157)(D:\大二下课程\Linux\image-20220526182904055.png)]
bash命令查找顺序
1、查找别名
2、内置命令
3、在PATH变量指定的路径上找
bash基本功能
1、名称补全
2、命令别名
alias dir='ls --color=tty’增加一个别名
unalias dir 删除一个别名
3、命令历史机制
history
输入输出重定向
1、输入重定向 command <[0] 文件名
2、标准输出重定向:[1]>(界面) >> (文件)
标准错误重定向:2>(界面)
3、指定文件描述符的输出重定向
文件描述符1>&文件描述符2 1:标准输出 2:标准错误
作用:将文件描述符1的输出与文件描述符2的输出结果合并输出到文件描述符2中
4、Here Document
命令 <<定界符
管道—|
用于连接两个命令,将前面命令的输出作为后面命令的输入
Shell元字符
* 匹配 0 或 多个字符
? 匹配一个字符
[…] 匹配指定集合中的一个字母
# 脚本注释
$var 变量引用 / 变量替换
` ` 或 $( ) 命令替换
“ ” 字符串界定符,允许进行变量和命令替换
‘ ’ 字符串界定符,不允许进行变量和命令替换
& 后台执行,格式:命令&
( ) 成组命令,括号中的命令将在子Shell中执行
{ } 成组命令,括号中的命令将在当前Shell中执行
\ 转义符
区分 单引号 和 多引号 !!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qtv7Rynt-1653832251158)(D:\大二下课程\Linux\image-20220527220349539.png)]
命令的执行方式
顺序执行:命令1;命令2;命令3 。。。
命令的条件执行:
Shell的条件判断的唯一依据是判定一条命令是否执行成功;判断的方法是判断命令的返回码是否为0;返回0,条件成立,非0,条件不成立。
命令1&&命令2 &&命令3
命令1执行成功则执行命令2,否则不执行命令2
命令1||命令2
命令1执行失败则执行命令2,否则不执行命令2
Shell脚本结构
第一行一般写:
#!/bin/bash
#! 称为一个幻数,内核用它来标识来解释执行命令中行的程序,该行必须在命令表的顶部。
注释(comments),是那些前面有一个#的行。其可以是自称一行,或跟在一个命令的后面,对命令表和命令行进行注释
Shell脚本的执行方式
1、输入重定向道脚本
bash<脚本名
2、将脚本作为bash的参数
bash 脚本名 [参数]
3、为脚本添加可执行权限后,直接执行
chmod a+x 脚本名
./脚本名 [参数]
Bash shell环境配置文件
1、全局配置文件
/etc/profile /系统环境
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bashrc /系统变量
为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
2、用户配置文件
个人配置文件个人配置文件将根据如下优先级读取,读到一个即停止:
~/.bash_profile
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bash_login
~/.profile
profile文件是在交互式shell时自动初始化:在用户登录时初始化。其中/etc/profile对应所有用户,~/.profile对应单个用户
~/.bashrc
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取
~/.bash_logout
当每次退出系统(退出bash shell)时,执行该文件
~/.bash_history: 历史命令记录在这里
Shell 变量
Shell变量分为两类:一是标准Shell变量,用户登录时Shell为建立用户环境而注册的变量,也成为环境变量;另一类是用户自己定义的变量,即 用户变量(临时变量)
1、变量命名
以字母或下划线开始,后可以是字母、数字和下划线,注意区分大小写
2、变量赋值
变量名=值
注意:赋值号两边没有空格
变量引用:$变量名
例子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lYjrm5M-1653832251158)(D:\大二下课程\Linux\image-20220527220629331.png)]
变量替换
${var} 返回var的值,若没初始化则返回空
${var:-str} 若var存在且不为空则返回var的值,否则返回str
${var:=str} 若var存在且不为空则返回var的值,否则将str赋给var然后返回
${var:?str} 若var存在且不为空则返回var的值,否则显示var:str
${var:+str} 若var存在且不为空则返回str,否则返回空
${#var} 返回var的值的长度
${var%str} 从var的尾部开始删除匹配str的最小部分
${var%%str} 从var的尾部开始删除匹配str的最大部分
${var#str} 从var的头部开始删除匹配str的最小部分
${var##str} 从var的头部开始删除匹配str的最大部分
注:使用最大最小匹配时,要结合 “ * ”使用,如:${var%%4*}
Shell变量
Bash提供一维数组,下标从0开始,大小无限定
赋值:数组名[下标]=值
数组名=(值1 值2 …)
引用:${数组名[下标]}
${数组名[*/@]}引用所有元素值
若用“${数组名[*/@]}”引用时,*拓展为一个词,@拓展为多个词
获得数组大小:${#数组名[@]}
环境变量
Linux环境(Shell环境)由许多变量组成,这些变量决定了用户环境的外观及Shell默认行为,环境变量是被导出的变量。
环境变量可以被当前Shell下启动的子进程所继承,而局部变量不被继承;而且子进程的环境变量独立于父进程,子进程中对环境变量的修改不影响父进程变量的值。
常用环境变量
$HOME 用户的注册目录(用户主目录);同~
$SHELL 设置用户的Shell类型
$USER 保存当前的用户名
$PATH 定义查找命令的目录列表,目录名用冒号隔开
$PWD 保存用户当前在文件系统的位置
$PS1 定义Shell的主提示符
$PS2 域内分隔符,包括:空格、跳格、换行
变量导出–export
export变量列表
将用户变量导出为环境变量
export var1 var2
export var=abc
declare [选项] 变量名
-a 声明变量为数组
-i 声明为整形
-x 声明为环境变量
-r 声明为只读变量
位置参数
位置参数及引用
位置参数也称为命令行参数,即:组成命令行的所有元素
在Shell脚本中通过$0、$1 … 进行引用位置参数
为位置参数赋值
set 参数值列表
位置参数移动
shift [n] 将位置参数(除 $0 )左移n个位置,默认为1
$? 最后一次执行命令的返回码
$$ 当前脚本自己的PID
$ ! 脚本进程最近启动的后台进程的PID
$# 命令行参数的个数
$0 脚本文件本身的名字
$1,$2 第一、第二个命令行参数
“$*” 将所有命令行参数作为一个整体单词来看待
“$@” 将命令行参数 作为多个单词看待
输入/输出
echo–显示命令
echo [option][string]
将string的内容按照option指定的方法送到屏幕上进行显示
-n 输出后不换行
-e 对字符串中的特殊字符进行特殊翻译
\n 换行
\t 跳格
read–从键盘读取用户输入到变量中
格式:read 变量名列表
read 变量名列表 < file
test测试与 [ ]
格式:test 条件 或 [ 条件 ]
注意:[ 条件 ] 条件和[]前后必须有空格
其中条件:
(1)文件特性检测
-f 普通文件 -d 目录 -s 文件大小非零 -r 可读 -w 可写 -x 可执行 -L/h 符号链接文件
(2)字符串比较
-z str 字符串长度等于0
-n str 字符串长度不等于0
str1 = str2 str1 与 str2 相等
str1 != str2 str1与str2不相等
(3)整数比较
-eq =
-gt >
-ge >=
-ne <>
-lt <
-le <=
(4)逻辑运算
!NOT -o OR -a AND
注意:可以用( )来改变运算的优先级,但括号必须转义,如:
[ \( $a -lt 0 -o $a -eq 10 ) -a $b -gt 100 ]
特殊条件测试:
不做任何事,返回0;
true:总是返回0;
false:总是返回255;
#!/bin/bash
echo -n enter filename:
read fname
echo -n enter words:
read words
echo $words 2>/dev/null >$fname
if [ $? –eq 0 ]
then
echo Write successfully
else
echo write error
fi
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7Q6YkHW-1653832251158)(D:\大二下课程\Linux\image-20220529174606337.png)]
shell脚本运行条件
#!/bin/sh
count=3
while [ $count -gt 0 ]
do
echo -en "Login name:"
read logname
echo -en "Password:"
read pwd
[ $logname = "root" -a $pwd = "12345" ] && {
echo "Welcome Here!!!"
count=0
}
let count=count-1
sleep 5
done
结构控制–while
while read vars
do
command list
done<file
遍历file中的行,每读取一行将行中的内容作为read的输入传递给变量,并执行循环体
循环结构–for
for var
do
command_list
done
从shell的位置变量中取值
例:显示输入的参量
#!/bin/bash
echo you enter $# vars
echo They are:
count=0
for var
do
echo “$count. $var ”
let count=count + 1
done
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZLOvYGf-1653832251159)(D:\大二下课程\Linux\image-20220529175233657.png)]
例:备份指定目录中的所有文件到指定目录中
#!/bin/bash
[ ! -d $1 -o ! -d $2 ]&&{
echo arguments error;exit 1;
}
for file in $1/*
do
if test -f $file –a –r $file
then
cp $file $2
fi
done
for((e1;e2;e3))
do
命令列表
done
Break、Continue、Exit
Break [n] 退出n层循环
continue [n] 跳到第n层循环继续
exit [n] 退出脚本,并设置退出码
函数
格式:
function name(){
command list
[ return n ]
}
其中return用于带回函数的返回码(0 ~ 255)
注意:函数必须先定义后使用
函数在当前函数下运行,和调用它的脚本共享变量;而且可以把变量作为定位参数来赋值的方式传递变量
数值处理
let命令
let 赋值表达式
使用C的表达式语法;在表达式中引用变量时,前可不加"$";按长整型求值,不检查溢出。
注意:表达式中有特殊字符时,必须用双引号括起来。
指数 运算符:**
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMzyX65W-1653832251159)(D:\大二下课程\Linux\image-20220529185040870.png)]
$((表达式))扩展
对表达式进行计算、并替换,表达式构成规则同C
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1NLptgov-1653832251159)(D:\大二下课程\Linux\image-20220529185119795.png)]
expr命令
expr表达式
表达式中的变量要用$进行引用,表达式中的每个元素必须用空格隔开
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7zU2cywx-1653832251160)(D:\大二下课程\Linux\image-20220529185247741.png)]
shell内置命令
eval–命令分析
eval 命令字符串
功能;首先对“命令字符串”进行shell替换,然后执行该命令
#将输出 i 和 第i个参数
for((i=1;i<=$#;i++))
do
eval echo $i. \$$i
done
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7QG6llG-1653832251160)(D:\大二下课程\Linux\image-20220529190028100.png)]
exec命令
exec 命令
用执行命令所启动的进程替代当前shell进程。
source
source 脚本名 或 .脚本名
功能:将指定脚本在当前shell中执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7etlQ5V-1653832251160)(D:\大二下课程\Linux\image-20220529190243566.png)]
Shell脚本跟踪与测试
通过 b a s h − n v x 脚 本 名 bash -nvx \ 脚本名 bash−nvx 脚本名,执行脚本
-n仅作语法检查 无结果输出
-x 显示对命令行完成参数替换后的结果(跟踪模式)
-v 在执行命令前将命令原样输出一次
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5tLU1K4-1653832251161)(D:\大二下课程\Linux\image-20220529190850681.png)]
第三章 C语言开发工具
工作模式
1、末行模式
2、命令模式
3、输入方式
注:vi启动后,直接进入命令模式
命令模式通过: 进入 末行模式
命令模式通过 i,a,o,O 进入 输入模式
输入模式 通过 ESC 进入命令模式
启动与退出
启动
vim [文件名]
退出
:wq
:q!
进入输入模式
i i i 在光标所在字母前插入,进入输入模式
a a a 在光标所在字母之后插入,进入输入模式
o o o 在当前行之下插入一个新行,进入输入模式
O O O 在当前行之上插入一个新行,进入输入模式
删除、替换
[ n ] x [n]\ x [n] x 从光标当前字符开始的n个字符
[ n ] d d [n]\ dd [n] dd 从当前行向后的n行
$d\ $^ 从光标当前位置删除到行首
$d\ $$ 从光标当前位置删除到行末
r r r 将当前光标处的字符替换为r后键入的字符
R s R\ s R s 用字符串的内容替换从当前光标开始的相应字符,直到Esc
u / . u\ /. u /. 取消 / 重复上一次操作
c t r l + r ctrl +r ctrl+r 撤销取消
复制、粘贴
[n] yy 复制当前行 / 当前行开始的n行
y $ / ^ / w / % 复制指定内容
:l1,l2y 复制 l1 行到 l2 行的内容
[n]p 粘贴
Vi简单配置
set nu 给每行加行号
set nonu 取消行号显示
set ts=4 设置Tab建跳格数
set sm 括号匹配
设置c语言格式的自动缩进
编辑 用户主目录中的 .vimrc文件
set cindent
set softtabstop=4
set autoindent