一.VIM编辑器
1.vim一般模式常见操作
以vi打开一个文档就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理档案内容,也可以使用复制贴上来处理文件数据
vim的一般模式主要能做的操作就是:删除、复制和粘贴
常用语法:
yy 复制光标当前一行
y数字y 或者 数字yy 复制一段,从光标当前行到后n行
p 箭头移动到目的行粘贴 应该说是当前光标在哪里,按p之后就粘贴到哪里吧
u 撤销上一步
dd 删除光标当前行
d数字d 或者 数字dd 删除光标(含)后多少行
x 剪切一个字符(当前光标),相当于del
X 剪切一个字符(当前光标的前一个),相当于Backspace
yw 复制一个词
dw 删除一个词
shift+6(^) 移动到行头
shift+4($) 移动到行尾
w 移动到下一个词(词头位置)
e 移动到当前词尾
b 移动到上一个词的词头
1+G 移动到第一行的行头
数字+G 跳转到某一行的行头
gg 或者 shift+H 移动到整篇文档的开头
G 或者 L 移动到最后一行的行尾
进入命令模式 :set nu 使用此命令后会显示出文档的行号
:set nonu 不再显示行号
2.编辑模式常见操作
1)进入编辑模式常用语法
i 当前光标前 在普通模式按 i 进入插入模式,会插入到当前光标之前
a 当前光标后
o 当前光标的下一行,而且是新增一个空行相当于在当前光标行的末尾按了回车
I 光标所在行最前
A 光标所在行最后
O 当前光标行的上一行
delete键会删除光标后面的字符
2)退出编辑模式
按[esc] 键
3.指令模式
在一般模式当中,输入[:/?]三个中的任何一个按钮,就一个将光标移动到最底下那一行。
在这个模式当中,可以提供你[搜寻资料]的动作。而读取、存盘、大量取代字符、离开vi、显示行号等动作是在此模式中达成的!
也可以认为命令模式是在一般模式下执行的特殊操作。
注意:在编辑模式是没办法执行命令的,会认为输入的命令是要添加的字符,需要按esc回退到普通模式,再从普通模式 输入命令。
基本语法:
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存强制退出 (加上感叹号的意思是强制执行)
/要查找的词 n查找下一个,N往上查找
:noh 取消高亮限制
:set nu 显示行号
:set nonu 关闭行号
:s/old/new 替换当前行匹配到的第一个old为new
:s/old/new/g 替换当前行匹配到的所有old为new
:%s/old/new 替换文档中每一行匹配到的第一个old为new
:%s/old/new/g 替换文档中每一行匹配到的所有old为new
二.网络配置
1.查看网络配置 ifconfig
VMware提供了三种网络连接模式:
1)桥接模式
虚拟机直接连接外部物理网络的模式,主机起到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络是可见的。
2)NAT模式
虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换。虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机。
3)仅主机模式
虚拟机只与主机共享一个专用网络,与外部网络无法通信。
三.系统管理
1.linux中的进程和服务
计算机中,一个正在执行的程序或命令,呗叫做“进程”(process)
启动之后一直存在、常驻内存的进程,一般被叫做“服务”(service)。
2.service服务管理(centos6版本 简单了解)
1)基本语法
service 服务名 start|stop|restart|status
2)经验技巧
查看服务的方法:/etc/init.d/服务名 ,发现只有两个服务保留在service,是守护进程
3.systemctl (Centos7 版本 重点掌握)
1)基本语法
systemctl start|stop|restart|status 服务名
2)经验技巧
查看服务的方法:/usr/lib/systemd/system
4.服务运行级别
①查看默认级别:vi/etc/inittab
Linux系统有7种运行级别(runlevel):常用的是级别3和5
1)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
2)运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
3)运行级别2:多用户状态(没有NFS),不支持网络
4)运行级别3:完全的多用户状态(有NFS),登录后进去控制台命令行模式
5)运行级别4:系统未使用,保留
6)运行级别5:X11控制台,登录后进入图形GUI模式
7)运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
②CentOS7的运行级别简化为:
multi-user.target 等价于原运行级别3(多用户有网,无图形界面)
graphical.target 等价于原运行级别5 (多用户有网,无图形界面)
③查看当前运行级别
systemctl get-default
④修改当前运行级别
systemctl set-default TARGET.target (这里TARGET取multi-user 或者graphical)
查看当前linux系统版本 cat /etc/os-release
5.关机重启命令
在linux领域内大多用在服务器上,很少会遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
1)基本语法
(1)sync 功能描述:将数据由内存同步到硬盘中
(2)halt 功能描述:停机,关闭系统,但不断电
(3)poweroff 功能描述:关机,断电
(4)reboot 功能描述:就是重启,等同于 shutdown -r now
(5)shutdown[选项]时间 不写时间的话默认1分钟后关机
选项 功能
-H 相当于--halt,关机
-r -r=reboot 重启
参数 功能
now 立刻关机
时间 等待多久后关机(时间单位是分钟)
(6)shutdown -c 取消关机
2)经验技巧
linux系统中为了提高磁盘的读写效率,对磁盘采取了“预读迟写”操作方式。当用户保存文件时,linux核心并不一定立即将保存数据写入物理磁盘中,而是将数据保存再缓冲区中,等缓冲区满时再写入磁盘,这种方式可以极大的提高磁盘写入数据的效率。但是,也带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导致数据丢失。使用sync指令可以立即将缓冲区的数据写入磁盘
3)案例实操
(1)将数据由内存同步到硬盘中 sync
(2) 重启 reboot
(3)停机(不断电)
(4)计算机将在1分钟后关机,并且会显示在登录用户的当前屏幕中 shutdown -h 1
(5)立马关机(等同于 poweroff)shutdown -h now
(6)系统立马重启(等同于reboot) shutdown -r now
四.常用基本命令(重要)
Shell(Linux中默认的shell就是 Bourne-Again Shell ,bash就是这么来的。 Debian系列的工具叫dash 每个版本不一样)可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以通过终端控制台来输入命令,由shell进行解释并最终交给内核执行。本章就将分类介绍常用的基本shell命令。
1.帮助命令
(1)man 获得帮助信息 (manual 手册的意思)
1)基本语法
man [命令或配置文件] (功能描述:获得帮助信息)
获取文档后翻页操作 pageup,pagedown都可以用 上下箭头是按行来 ,空格直接翻到下一页。f 向下翻页,b向上翻页。
2)显示说明
信息 功能
NAME 命令的名称和单行描述
SYNOPSIS 怎样使用命令
DESCRIPTION 命令功能的深入讨论
EXAMPLES 用例
(2)help 获得shell内置命令的帮助信息
一部分基础功能的系统命令是直接内嵌在shell中的,系统加载启动之后会随着shell一起加载,常驻系统内存中,这部分命令被称为“内置(built-in)命令”;相应的其他命令被称为“外部命令”。 可以用 type 区分一个命令是内部命令还是外部命令,例如 type cd 会提示cd是shell内置命令 . 可以用--help 查看外部命令的帮助信息
1)基本语法
help 命令 (功能描述:获得shell内置命令的帮助信息)
2)案例实操
查看cd命令的帮助信息
help cd
(3) 常用快捷键
常用快捷键 功能
ctrl+c 停止进程
ctrl+l (小写的L) 清屏,等同于clear;彻底清屏是reset
善用于tab键 提示(更重要的是可以防止敲错)
上下键 查找执行过的命令
2.文件目录类
(1)pwd显示当前工作目录的绝对路径
pwd:print working directory 打印工作目录
1)基本语法
pwd (显示当前工作目录的绝对路径)
2)案例实操
(1)显示当前工作目录的绝对路径
(2)ls 列出目录的内容
ls:List
1)选项说明
选项 功能
-a 全部的文件,连同隐藏档(开头为.的文件),一起列出来(常用)
-l 长数据串列出,包含文件的属性与权限等等数据;(常用)等价于“ll”
2)显示说明
每行列出的信息依次是:文件类型与权限 链接数 文件属主 文件属组 文件大小用byte来表示 建立或最近修改的时间 名字
(3)cd 切换目录
change directory
参数 功能
cd 绝对路径 切换路径
cd 相对路径 切换路径
cd ~ 或者 cd 回到自己家的目录/按当前登录的用户分
cd .. 回到当前目录的上一级目录
cd - 返回刚才所在的目录
cd -P 跳转到实际物理路径,而非快捷方式路径
(4)mkdir创建一个新的目录
mkdir:Make directory 建立目录
(5)touch 创建空文件
1)基本语法
touch 文件名称
2)实操案例
使用vim命令也可以创建文件,但是如果直接:q的话不能创建空文件,使用:wq退出就可以保存空文件成功。touch创建的是空文件
(6)cp复制文件或目录
1)基本语法
cp [选项] source dest (功能描述:复制source文件到dest)
2)选项说明
-r 递归复制整个文件夹(recursion 英/rɪˈkɜːʃn/ 美/rɪˈkɜːrʒn/)
3)参数说明
source 源文件
dest 目标文件,可以是路径,给路径下新增这个文件;也可以是一个具体的文件,覆盖目标文件
4)经验技巧
强制覆盖不提示的方法: \cp
5)案例实操
(7)rm 删除文件或目录
1)基本语法
rm [选项] deleteFile (功能描述:递归删除目录中所有内容 remove 的简写)
rm -rf deleteFile 就是递归删除目录中所有内容,并且强制指定不弹出提示进行确认
2)选项说明
选项 功能
-r 递归删除目录中所有内容
-f 强制执行删除操作,而不提示用于进行确认
-v 显示指令的详细执行过程
mv 移动文件
(8)cat 查看文件内容
查看文件内容,从第一行开始显示
1)基本语法
cat [选项] 要查看的文件 (是catch这个单词 和猫没关系)
2)选项说明
-n 显示所有行的行号,包括空行
3)经验技巧
一般查看比较小的文件,一屏幕能显示全
4)案例实操
查看文件内容并显示行号 cat -n houge.txt
(9)文件内容分屏查看器
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键,详见操作说明
1)基本语法
more 要查看的文件
2)操作说明
操作 功能说明
空白键(space) 代表向下翻一页
Enter 代表向下翻一行
q 代表立刻离开more,不再显示该文件内容
Ctrl+F 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
(10)less 分屏显示文件内容
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1)基本语法
less 要查看的文件
2)操作说明
操作 功能说明
空白键 向下翻动一页
pagedown 向下翻动一页
pageup 向上翻动一页
/字串 向下搜寻[字串]的功能;n: 向下查找;N: 向上查找;
?字串 向上搜寻[字串]的功能;n: 向上查找;N: 向下查找;
(11)echo
echo输出内容到控制台
1)echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换
控制字符 作用
\\ 输出\本身
\n 换行符
\t 制表符 也就是tab键
(12)> 输出重定向和 >> 追加
1)基本语法
(1)ls -l > 文件 (功能描述:列表的内容写入文件a.txt中 (覆盖写))
(2)ls -al >> 文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
(3)cat 文件1 > 文件2 (功能描述:将1的文件内容覆盖到文件2)
(4)echo “内容” >> 文件
2)
(13)head 显示文件头部内容
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。
1)基本语法
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
2)选项说明
-n <行数> 指定显示头部内容的行数
(14)tail输出文件尾部内容
tail用于显示文件中尾部的内容,默认情况下tail指令显示文件的前10行内容。
1)基本语法
(1) tail 文件 (功能描述:查看尾部10行内容)
(2) tail -n 5 文件 (功能描述:查看尾部5行内容,,5可以是任意行数)
(3) tail -f 文件 (功能描述:实时追踪该文档的所有更新 follow 追踪日志用这个)
ctrl + s 是暂停 ctrl+q是继续
(15)ln 软链接
软连接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
1)基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
2)经验技巧
删除软链接:rm -rf 软链接名,而不是 rm -rf 软链接名/
如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
查看:通过ll就可以查看,列表属性第1位是1,尾部会有位置指向。
可以通过pwd查看路径。如果使用 pwd -P 显示实际路径。
可以通过 rm 删除软链接。
(16)history查看已经执行过的历史命令
1)基本语法
history (功能描述:查看已经执行过的历史命令)
history 10 显示过去输入过的10条命令
history !1156 重复调用历史命令,1156是显示的历史命令的编号
history -c 清空历史命令
3.时间日期类
1)基本语法
date [OPTION]...[+FORMAT]
2)选项说明
-d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间
-s<日期时间> 设置系统日期时间
3)参数说明
<+日期格式> 指定显示时使用的日期时间格式
(1)date显示当前时间
1)基本语法
(1)date 显示当前时间
(2)date +%Y 显示当前年份
(3)date +%m 显示当前月份
(4)date +%d 显示当前是哪一天
date +%s 小写s 显示当前 时间戳
(5)date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
(2)date显示非当前时间
1)基本语法
(1)date -d '1 days ago' 显示前一天时间
(2)date -d '-1 days ago' 显示明天时间
(3)date 设置系统时间
date -s "2024-04-11 08:09:00"
同步网络时间 ntpdate 服务器名称
(4)cal 查看日历
cal [选项] 不加选项显示本月日历
选项可以写具体某一年,显示这一年的日历
4.用户管理命令
(1)useradd 添加新用户
1)基本语法
useradd 用户名 添加新用户
useradd -g 组名 用户名 添加新用户到某个组
exist 退出当前用户,返回上一个用户
2)案例实操
(2)passwd设置用户密码
(3)id 用户名 可以查看是否存在该用户
(4)cat /etc/passwd 查看创建了哪些用户
也可以用less查看 less /etc/passwd
(5) su 切换用户
su:switch user
1)基本语法
su 用户名称 切换用户,只能获得用户的执行权限,不能获得环境变量
su - 用户名称 切换到用户并获得该用户的环境变量及执行权限
(6)who am i 我是谁 查看当前用户 查看罪原始进程的用户
whoami 查看当前会话具体使用的用户是谁
(7)userdel删除用户
userdel -r 用户 在删除用户的时候一起删除用户对应的文件夹
(8)sudo 设置普通用户具有root权限
(9)usermod 修改用户信息
5.用户组管理命令
每个用户都有一个用户组,系统可以一个用户组中的所有用户进行集中管理,不同linux系统对用户组的规定有所不同。
如linux下的用户属于与它同名的用户组,这个用户组在创建用户同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
(1)groupadd 新增组
1)基本语法
groupadd 组名
(2)groupdel 删除组
(3)groupmod 修改组的信息
6.文件权限类
(1)文件属性
linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为了保护系统的安全性,linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在linux中我们可以使用ll或者ls -l 命令来显示一个文件的属性以及文件所属的用户和组。
如果没有权限,就会出现减号[-]而已。从左至右用0-9这些数字来表示
(1)0首位表示类型
在Linux中第一个字符代表这个文件是目录,文件或链接文件等等
- 代表文件
d 代表目录
l 链接文档(link file)
(2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。 --User
(3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限,--Group
(4)第7-9位确定其他用户拥有该文件的权限 --Other
2)rxw作用文件和目录的不同解释
(1)作用到文件:
[r] 代表可读read:可以读取,查看
[w]代表可写:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除文件(删除文件内容相当于修改文件本身,删除文件相当于修改当前文件所在目录)
[x]代表可执行execute:可以被系统执行 进入该目录
(2)作用到目录:
[r] 代表可读read,可以读取,ls查看目录内容
[w] 代表可写write:可以修改,目录内创建+删除+重命名目录
[x] 代表可执行execute:可以进入该目录
(新建目录内也有一个叫“.”的硬链接指向新建的目录。指的是新建一个目录之后,目录本身市指向自身inode的一个硬链接,所以新建目录的硬链接数目是2)
(2)chmod改变属性
1)基本语法
第一种方式变更权限
chmod [{ugoa} {+-=} {rwx}] 文件或目录
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
第一个{}里的值选一个;
第二个{}选一个,+表示增加,-表示删除,=表示覆盖(指定权限,并清除原有设定);
第三个{}可以多选;
示例见下图
第二种方式变更权限
chmod [mode=421 ] [文件或目录]
chmod后面的三位数字分别代表u、g、o 使用示例见下图
常用的有chmod 777 和chmod 644
r=4 w=2 x=1 rwx=4+2+1=7 其实是用二进制表示三个权限,转换成十进制就是下面的数字
操作目录权限时 可以使用 chmod -R 777 目录/ 使目录内所有子文件夹都有相同的权限
1- --x 001
2- -w- 010
3- -wx 011
4- r-- 100
5- r-x 101
6- rw- 110
7- rwx 111
(3)chown 改变所有者
(4)chgrp 改变所属组
7.搜索查找类
(1)find查找文件或者目录
find指令将从指定目录向下递归地便利其各个子目录,将满足条件的文件显示在终端
1)基本语法 find [搜索范围] [选项]
2) 选项说明
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件,单位为
b---块(512字节)
c---字节
w--字
k---千字节
M---兆字节
G-----吉字节
(2)locate快速定位文件路径
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
1)locate搜索文件
2)由于locate指令是基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
(3)grep过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1)基本语法
grep 选项 查找内容 源文件
2)选项说明
-n 显示匹配行及行号
3)案例实操
查找某文件在第几行,按行显示
ls | grep -n test
wc 命令 ---- wordcount 返回的数字分别代表 行数、单词数、字节大小
grep -n boot initial-setup-ks.cfg | wc 查找initial-setup-ks.cfg文件里的boot关键字,显示行数,得到的这些行进行统计
8.压缩和解压类
(1)gzip/gunzip 压缩
(2)zip/unzip 压缩
(3)tar 打包
9.磁盘分区类
(1)du查看文件和目录占用的磁盘空间
(2)df查看磁盘空间使用情况
(3)lsblk查看设备挂载情况
(4)mount/umount 挂载/卸载
(5)fdisk分区
10.进程线程类
(1)ps查看当前系统进程状态
(2)kill 终止进程
(3)pstree 查看进程树
(4)top 查看系统健康状态
(5)netstat显示网络统计信息和端口占用
3)参数说明
crontab -e
(1)进入crontab编辑界面,会打开vim编辑你的工作。
*****执行的任务(5个*号 分时日月星期)
项目 含义 范围
第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几个月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表星期日)
(2)特殊符号
特殊符号 含义
* 代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思
, 代表不连续的时间。比如"0 8,12,16 * * *",就代表在每天的8点0分,12点0分,16 点0分,都执行一次命令
- 代表连续的时间范围。比如"0 5 * * 1-6命令",代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次,比如"*/10 * * *命令",代表每隔10分钟就执行一遍命令
(3)特定时间执行命令
11.软件包的管理
(1)RPM
RPM,Rethat软件包管理工具,类似windows里面的setup.exe 是Linux这系列操作系统里面的打包安装工具,她虽然是RetHat的标志,但理念是通用的。
(1)RPM查询命令 rpm -qa
查看所安装的所有rpm软件包
由于软胶包比较多,一般都会采取过滤。rpm -qa | grep rpm软件包
(2)卸载命令 rpm -e
基本语法
rpm -e 软件包名字 卸载软件包
rpm -e --nodeps 软件包名字 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。
(3)RPM安装命令
1)基本语法
rpm -ivh 软件包全名
2)选项说明
选项 功能
-i install 安装
-v --verbose,显示详细信息
-h --hash,进度条
--nodeps 安装前不检查依赖
(2)YUM仓库配置
YUM概述
YUM(全称为Yellow dog Updater,Modified)是一个在Fedora 和RedHat以及Centos中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载,安装
YUM的常用命令
1)基本语法
yum 选项 参数
2)选项说明
-y 对所有提问都回答"yes"
3)参数说明
参数 功能
install 安装rpm软件包
update 更新rpm软件包
check-update 检查是否有可用的更新rpm软件包
remove 删除指定的rpm 软件包
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系
五.shell编程
1.Shell概述
Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核。
(linux系统内核可以直接操作硬件,但是对于用户不够友好,用户使用的是外层的应用程序,包括文本编辑器、数据库、浏览器、图形化桌面等。但是用户的操作没有办法被内核直接理解,外层应用程序和linux内核之间语言不同,需要一个翻译官来联系两者之间搭起交流的桥梁。所以出现了中间的解释层,就是所谓的Shell,是底层Linux内核和外部应用的接口,有了shell就可以把外部操作的命令解释成内核可以执行的指令。)
Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
2.Shell脚本入门
1)脚本格式
脚本以#!/bin/bash 开头(指定解析器)
2)第一个Shell脚本:hellowWorld.sh
还可以用“source”命令和“.”命令执行脚本。
前两种方式是都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。
第三种,也就是使用在脚本路径前加“source”和“.”的方式,额可以使脚本内容在当前shell里执行,而无需打开子shell!这也是为什么我们每次修改完/etc/profile文件以后,需要source一下的原因。
开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,父shell是不可见的
3.变量
1.系统预定义变量
2.自定义变量
3.特殊变量
(1)$n
1)基本语法
$n(功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,比如${10})
单引号里面的$符号不会被认为是变量,双引号会,需要注意
(2)$#
示例中输出了脚本名称和两个参数,又输出了参数个数
(3)$*、$@
1)基本语法
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
可以类比成*的输出值是把所有参数都拼接成一个字符串,但是@是把参数都放进一个数组里,还可以进行下一步操作
(4)$?
1)基本语法
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
4.运算符
expr 加号两边需要空格,数值和加号减号等中间都需要空格,都当做入参传进去。乘号需要转译,使用\*
还可以使用$(()) 或 $[]
1)基本语法
“$((运算式)) ”或 “$[运算式]”
2)案例实操
计算(2+3)*4
s=$[(2+3)*4]
echo $s
5.条件判断
1)基本语法
(1)test condition
(2)[ condition ] (注意condition前后要有空格,如果是判断两个字符串是否相等的话,等号两边也需要有空格)
注意:条件非空即为true,[ atguigu ]返回true, [ ]返回false
2)常用判断条件
(1)两个整数之间比较
-eq 等于(equal) -ne 不等于(not equal)
-lt 小于(less than) -le 小于等于(less equal)
-gt 大于 (greater than) -ge 大于等于(greater equal)
注:如果是字符串之间的比较,用等号“=”判断相等;用“!=”判断不等。
(2)按照文件权限进行判断
-r 有读的权限 read
-w 有写的权限 write
-x 有执行的权限 execute
(3)按照文件类型进行判断
-e 文件存在(exeistence)
-f 文件存在并且是一个常规的文件(file)
-d 文件存在并且是一个目录(directory)
6.流程控制
1.if判断
2.case语句
3.for循环
4.while循环
7.read读取控制台输入
8.函数
1.系统函数
2.自定义函数
9 正则表达式入门
10 文本处理工具
1.cut
2.awk
完结撒花,以后用到的时候再回来复习~