Linux课堂总结

这篇博客详细介绍了Linux操作系统,包括文件权限与目录权限的区别、Linux特权(SUID、SGID、粘滞位)以及7种文件类型。深入讲解了Linux常用命令,如文件通配符、文件系统命令、用户管理、进程管理、文件权限等。此外,还涵盖了Shell编程的基础,如Shell概念、bash命令查找顺序、变量、重定向和管道等,是学习Linux操作系统的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.  $varlet 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 \ 脚本名 bashnvx ,执行脚本

​ -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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值