Linux学习笔记
一、Linux目录结构
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”
,然后在此目录下再创建其他的目录。
在Linux世界里,一切皆文件
-
/bin [常用] (usr/bin 、 /usr/local/bin)
是Binary的缩写,这个目录存放着最经常使用的命令
-
/sbin (usr/sbin ./usr/local/sbin)
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
-
/home [常用]
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名,
-
/root [常用]
该目录为系统管理员,也称作超级权限者的用户主目录
-
/lib
系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
-
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
-
/etc [常用]
所有的系统管理所需要的配置文件和子目录my.conf
-
/etc/passwd
-
用户( user)的配置文件,记录用户的各种信息
-
每行的含义 : 用户名:口今:用户标识号:组标识号(gid):注释性描述:主目录:登录Shell
-
-
/etc/shadow
-
口令的配置文件
-
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
-
/etc/group
-
组(group)的配置文件,记录Linux包含的组的信息
-
每行含义 : 组名:口令:组标识号:组内用户列表
-
-
-
/usr [常用]
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录
-
/boot [常用]
存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
-
/proc [别动]
这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
-
/srv [别动]
service缩写,该目录存放一些服务启动之后需要提取的数据
-
/sys [别动]
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
-
/tmp
这个目录是用来存放一些临时文件的
-
/dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储
-
/media [常用]
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
-
/mnt [常用]
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上然后进入该目录就可以查看里的内容了。 d:/myshare
-
/opt
这是给主机额外安装软件所存放的目录。如安装ORACLE数据库就可放到该目录下。默认为空
-
/usr/local [常用]
这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
-
/var [常用]
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
-
/selinux [security-enhanced linux]
SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
二、远程
远程登录
具体开发中的应用场景:
- linux服务器是开发小组共享
- 正式上线的项目是运行在公网
- 因此程序员需要远程登录到Linux进行项目管理或者开发
- 画出简单的网络拓扑示意图(帮助理解)
- 远程登录客户端有 Xshell6,Xftp6,其它的远程工具大同小异
下载流程: 输入姓名、邮件、勾选两者,然后点击下载,去邮箱里面等待邮件,点击链接即可下载
使用Xshell连接
- 1、获取ip:
输入命令
1 |
|
- 2、打开主机命令提示符终端,测试是否是否连通
1 |
|
失败的话,检查主机服务
再重启网络
1 |
|
- 3、打开xshell
新建会话
点击创建好的会话
输入账号密码(也可以在新建会话的时候,选择左边用户身份验证,输入账号密码)
后面的弹窗选择接受并保存(中间那个)
结果:
远程文件传输
使用xftp
1、新建会话
乱码注意第五步,或者右键建立好的会话,选择属性
三、vi、vim
Linux 系统会内置 vi 文本编辑器
Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
模式
-
正常模式
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用[上下左右] 按键来移动光标,你可以使用[删除字符]或[删除整行]来处理档案内容 ,也可以使用[复制、粘贴]来处理你的文件数据。
-
插入模式
按下i,l,o,o,a,A,R等任何一个字母之后才会进入编辑模,一般来说按i即可.
-
命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
模式切换
:w:保存文件但不退出vi
:w file: 将修改另外保存到file中,不退出vi
:w!: 强制保存,不推出vi
:wq: 保存文件并退出vi
:wq!: 强制保存文件,并退出vi
:q: 不保存文件,退出vi
:q!: 不保存文件,强制退出vi
:e!: 放弃所有修改,从上次保存文件开始再编辑
快捷键
效果 | 使用 |
---|---|
复制 | 【正常模式】yy:复制光标所在的一行,nyy:复制多行,例如:5yy就是复制光标开始以下5行 |
粘贴 | 【正常模式】p:粘贴内容 |
删除 | 【正常模式】dd:删除光标所在的一行,ndd:删除多行,例如:5dd就是删除光标开始以下5行 |
查找 | 【命令行模式】/关键字,回车,按下n(查找下一个) |
行号 | 【命令行模式】:set nu:打开行号;:set nonu:关闭行号 |
定位 | 【正常模式】G:行尾;gg:行首;n + shift+g:定位到第 n 行 |
撤回 | 【正常模式】u:撤回 |
四、关机重启同步,登录注销
关机
-
立即关机
1
shutdown -h now
1
halt
-
一分钟后关机
1
shutdown -h 1
重启
-
立即重启
1
shutdown -r now
1
reboot
同步
-
把内存中的数据同步到磁盘
1
sync
目前的 shutdown/reboot/halt 等命令均已经在关机前进行sync,但是小心驶得万年船,还是在操作前使用一次sync
登录注销
登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用”su- 用户名’命令来切换成系统管理员身份
-
切换用户
1
su - 用户名
-
注销
1
logout
五、用户管理
用户
1、添加用户
- 默认目录在/home
1 |
|
细节说明:
当创建用户成功后,会自动的创建和用户同名的家目录
- 也可以通过以下命令,给新创建的用户指定家目录
1 |
|
2、设置密码
基本语法:
1 |
|
3、显示当前用户所在目录
Print Working Directory
基本语法:
1 |
|
4、删除用户
- 基本用法,但是保留了家目录(一般建议保留)
1 |
|
- 删除用户,以及用户主目录(谨慎使用)
1 |
|
5、查询用户信息
基本语法:
1 |
|
6、切换用户
- 权限高到权限低不需要输入密码,反之需要
- 返回原来用户使用
exit
或者logout
基本语法:
1 |
|
7、查看当前用户信息
基本语法:
1 |
|
用户组
结合第十二节 组 学习
系统可以对有共性/权限的多个用户进行统一管理
1、新增组
基本语法:
1 |
|
2、删除组
基本语法:
1 |
|
3、增加用户时,直接指定到用户组
基本语法:
1 |
|
4、修改用户组
已有的组修改组,没有组的用户指定组
基本语法:
1 |
|
其他
1 |
|
说明:改变用户登陆的初始目录;[特别说明]:用户需要有进入到这个目录的权限才行
六、运行级别
1、说明
运行级别 | 说明 |
---|---|
0 | 关机 |
1 | 单用户[找回丢失密码] |
2 | 多用户状态没有网络服务 |
3 | 多用户状态有网络服务 |
4 | 系统未使用保留给用户 |
5 | 图形界面 |
6 | 系统重启 |
常用运行级别是3和5,也可以指定默认运行级别 ,后面演示
2、切换不同的运行级别
基本语法:
1 |
|
3、指定默认运行级别
在/etc/inittab文件中
面试题
如何找回root密码?
1、centos7以后系统
[第一步]、启动系统、进入开机界面、按‘e’进入编辑界面(注意要快)
[第二步]、在图示位置(UTF-8后面)输入init=/bin/sh
,然后按Ctrl + x进入单用户模式
[第三步]、
- 1、输入
1 |
|
- 2、回车,再输入
1 |
|
输入要设定的密码,回车再次输入,回车,显示passwd…就说明修改成功了
- 3、回车,再输入
1 |
|
- 4、回车,再输入以下命令点击回车,就可以等待系统自动修改密码了,时间会有点长,耐心等待即可
1 |
|
七、帮助命令
1、man指令
man命令是Linux下最核心的命令之一。而man命令也并不是英文单词“man”的意思,它是单词manual的缩写,即使用手册的意思。man命令会列出一份完整的说明。 其内容包括命令语法、各选项的意义及相关命令 。更为强大的是,不仅可以查看Linux中命令的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等帮助信息。man手册页文件存放在/usr/share/man目录下。
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-a | 在所有的man帮助手册中搜索 |
-d | 主要用于检查,如果用户加入了一个新的文件,就可以用这个参数检查是否出错 |
-f | 显示给定关键字的简短描述信息 |
-p | 指定内容时使用分页程序 |
-M | 指定man手册搜索的路径 |
-w | 显示文件所在位置 |
快捷键
效果 | 快捷键 |
---|---|
退出 | q |
按行下翻 | Enter |
按页下翻 | Space |
上翻一页 | b |
查找 | /关键字 |
2、help指令
help命令用于显示shell内部命令的帮助信息。
help命令只能显示shell内部命令的帮助信息,而linux系统中绝大多数命令是外部命令,所以help命令的作用非常有限。而对于外部命令的帮助信息可以使man命令或者info命令查看。
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-d | 输出每个命令的简短描述 |
-s | 输出短格式的帮助信息 |
-m | 以伪man手册的格式显示帮助信息 |
八、文件目录指令
- pwd|ls|cd|mkdir|rmdir|touch|cp|rm|mv
- pwd
功能:显示当前工作目录的绝对路径
基本语法:
1 |
|
- ls
功能:查看目录下的文件和目录
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-a | 都显示,包括隐藏的 |
-l | 以列表的方式显示信息 |
也可以组合起来写
1 |
|
用适合人的方式显示:比如文件大小4,则会显示成4.0k
1 |
|
- cd
功能:切换工作目录
基本语法:
1 |
|
实例:
返回用户家目录
1 |
|
回到当前目录的上一级
1 |
|
- mkdir
功能:创建目录
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-p | 创建多级目录 |
- rmdir
功能:删除空目录
基本语法:
1 |
|
目录非空则使用
1 |
|
- touch
功能:创建空文件
基本语法:
1 |
|
- cp
功能:拷贝文件到指定目录下
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-r | 递归复制整个文件夹 |
重复文件强制覆盖
1 |
|
- rm
功能:移除文件或者目录
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-r | 递归删除整个文件夹 |
-f | 强制删除不提示 |
- mv
功能:移动文件与目录 或 重命名
基本语法:
移动文件
1 |
|
重命名(位置不变即为重命名)
1 |
|
- cat|more|less|echo|head|tail|>|>>
- cat
功能:查看文件内容
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-n | 显示文件内容并显示行号 |
为了浏览方便,一般会带上管道命令 | more
- more
功能:
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more
指令中内置了若干快捷键(交互的指令)
基本语法:
1 |
|
快捷键
操作 | 说明 |
---|---|
space | 下翻一页 |
enter | 下翻一行 |
q | 退出 |
Ctrl + F | 向下滚动一屏 |
Ctrl + B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行行号 |
- less
功能:
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
基本语法:
1 |
|
快捷键
操作 | 说明 |
---|---|
space | 下翻一页 |
[pagedown] | 下翻一页 |
[pageup] | 上翻一页 |
/关键字 | 向下搜寻[关键字]的功能; n: 向下查找; N: 向上查找 |
?关键字 | 向上搜寻[关键字]的功能; n: 向上查找; N: 向下查找 |
q | 退出 |
- echo
功能:输出内容到控制台
基本语法:
1 |
|
- head
功能:用于显示文件开头部分内容,默认显示10行
基本语法:
缺省显示10行
1 |
|
显示n行
1 |
|
- tail
功能:用于显示文件尾部部分内容,默认显示10行
基本语法:
缺省显示10行
1 |
|
显示n行
1 |
|
实时追踪该文档的所有更新
1 |
|
- >、>>
功能:
>: 输出重定向(覆盖)
>>: 追加
基本语法加案例
(1)功能描述 : 列表的内容写入文件a.txt中( 覆盖写)
1 |
|
(2)功能描述 : 列表的内容追加到文件aa.txt的末尾
1 |
|
(3)功能描述 : 将文件1的内容覆盖到文件2
1 |
|
(4) 追加
1 |
|
- ln|history|date
- ln
功能:软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
基本语法:
1 |
|
案例:
pwd显示的软链接,比如上面的案例,再输入pwd,则会显示/root/demo/ggw软链接
- history
功能:查看已经执行过历史命令,也可以执行历史指令
基本语法:
1 |
|
查看 n 条最近使用的指令
1 |
|
执行历史编号为 n 的指令
1 |
|
九、时间日期类
- date
功能1:显示当前时间
基本语法:
(1)显示当前时间
1 |
|
(2)显示当前年份
1 |
|
(3)显示当前月份
1 |
|
(4)显示当前是那一天
1 |
|
(5)显示当前年月日时分秒
1 |
|
功能2:设置日期
基本语法:
1 |
|
案例:
设置成:2020-11-03 20:03:21
1 |
|
- cal
功能:查看日历
基本语法:
缺省显示本月日历
1 |
|
案例:
显示某一年的日历
1 |
|
十、搜索查找类
- find
功能:从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端上面
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-name<查询方式> | 按照指定文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名的所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
案例:
按文件名:根据名称查找/home 目录下的hello.txt文件
1 |
|
案例2 : 按拥有者 :查找/opt目录下,用户名称为 nobody的文件
1 |
|
案例3 : 查找整个linux系统下大于200M的文件( +n 大于 -n小于 n等于,单位有 k,M,G)
1 |
|
- locate
功能:
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
基本语法:
1 |
|
特别说明由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库.
案例:
请使用locate指令快速定位 hello.txt 文件所在目录
1 |
|
- which
功能:查看某个指令在那个目录下
基本语法:
1 |
|
- grep和“|”
功能:grep: 过滤查找; 管道符“|”:表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-n | 显示匹配行以及行号 |
-i | 忽略字母大小写 |
案例:
请在hello.txt文件中,查找“yes”所在的行,并显示行号
1 |
|
或者
1 |
|
十一、压缩和解压类
- gzip / gunzip
功能:gzip: 压缩文件; gunzip: 解压
基本语法:
描述:压缩文件,但是只能是*.gz文件
1 |
|
描述:解压缩文件
1 |
|
- zip / unzip
功能:zip: 压缩文件; unzip: 解压; 在项目打包发布中很有用
基本语法:
1 |
|
1 |
|
unzip常用选项
选项 | 说明 |
---|---|
-d | 指定压缩文件存放目录 |
案例
1、将/home下的所有文件/文件夹进行压缩成myhome.zip
1 |
|
这条命令会把home目录也压缩进去
2、将myhome.zip解压到/opt/tmp目录下
1 |
|
- tar
功能:打包指令,最后的文件是.tar.gz*
基本语法:
1 |
|
常用选项:
选项 | 说明 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包的同时压缩 |
-x | 解压缩.tar文件 |
案例:
1、压缩多个文件,将/home/pig.txt 以及 /home/cat.txt 压缩成 pc.tar.gz
1 |
|
2、将/home文件夹压缩成 demo.tar.gz
1 |
|
3、将 pc.tar.gz解压到当前目录
1 |
|
4、将demo.tar.gz解压到 /opt/tmp2目录下
1 |
|
1 |
|
十二、组
结合第五节 用户管理的用户组 学习
在linux中,所有用户都必须属于一个组里面,不能独立于组外
1、所有者
一般为文件的创建者,谁创建了,就自然属于谁
- chown
功能:修改文件/目录的所有者
基本语法:
1 |
|
常用选项
选项 | 说明 |
---|---|
-R | 如果是目录则其下所有子文件或目录递归生效 |
案例:
2、所在组
当某个用户创建了一个文件后,这个文件就属于用户所在的组
- chgrp
功能:修改文件所在的组
基本语法:
1 |
|
用法与chown类似
常用选项
选项 | 说明 |
---|---|
-R | 如果是目录则其下所有子文件或目录递归生效 |
3、权限
0 - 9位说明
0 - 9位 | 说明 |
---|---|
第0位 | 确定文件类型: l 是链接,相当于Windows快捷方式 d 是目录,相当于windows文件夹 c 是字符设备文件: 鼠标键盘 b 是块设备,比如硬盘 |
第1 - 3位 | 确定文件所有者的文件权限 |
第4 - 6位 | 确定文件所属组的权限 |
第7 - 9位 | 确定其他用户拥有的权限 |
- rwx作用到文件
1、[r]:代表可读(read):可以读取,查看
2、[w]:代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
3、[×]:代表可执行(execute):可以被执行
- rwx作用到目录
1、[r]:代表可读(read):可以读取,ls查看目录内容
2、[w]:代表可写(write):可以修改,对目录内创建文件 + 删除文件 + 重命名目录
3、[x]:代表可执行(execute):可以进入该目录
rwx还可以用数字表示,r=4,w=2,x=1,则rwx=7
其他说明:
这个数字代表:文件:则代表的是硬连接数;目录:则代表的是子目录数
- chmod
功能:修改文件或目录权限
基本语法:
u: 所有者; g: 所在组; o: 其他人; a: 所有人
1 |
|
1 |
|
1 |
|
案例:
1、给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
1 |
|
用数字表示等同于(rwx = 4 + 3 + 1, rx = 4 + 1, x = 1)
1 |
|
2、文件的所有者除去执行的权限,增加组写的权限
1 |
|
十三、Shell编程
1、了解
-
为什么要学习Shell编程
- 1、linux运维工程师在进行服务器集群管理时,需要编写shell程序来进行服务器管理。
- 2、对于JavaEE和Python程序员来说,是工作的需要,上级可能会要求编写一些shell脚本进行型程序或者是去维护服务器,比如编写一个定时备份服务器的脚本。
- 对于大数据程序员来说,,需要编写shell程序来管理集群。
-
Shell是什么
Shell是一个命令解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,
用户可以使用Shell来启动、挂起、停止甚至编写一些程序。
2、脚本的执行方式
-
脚本格式要求
- 1、脚本要以#!/bin/bash开头
- 2、脚本要有可执行权限
-
脚本常用的执行方式
-
方式1、输入脚本的绝对路径或相对路径
说明:首先要赋予脚本可执行权限,再执行脚本
-
方式2、sh + 脚本
说明:不用赋予脚本权限,直接执行即可
-
案例:创建一个Shell脚本,执行输出hello world
1 |
|
使用方式1执行
使用方式2执行
3、变量
- 变量的介绍
1、Shell中的变量分为,系统变量和用户自定义变量
2、系统变量:$HOME, $PWD、$%SHELL、$USER等等
- set
功能:显示当前shell中的所有变量
基本语法:
1 |
|
- Shell变量定义
基本语法:
1、定义变量
1 |
|
2、撤销变量
1 |
|
3、声明静态变量(静态变量不能被unset)
1 |
|
案例:
1 |
|
输出结果
- 定义变量的规则
1、变量可以由字母、数字和下划线组成,但不能以数字开头
2、等号两侧不能有空格
3、变量名称一般为大写(上面是负面教材),这是个规范,不是规则
- 将命令的放回值赋给变量
1、使用反引号
1 |
|
2、$()
1 |
|
案例:
1 |
|
输出结果:
1 |
|
4、设置环境变量
基本语法:
1、将shell变量输出为全局变量
1 |
|
1 |
|
2、属性,使其立即生效
1 |
|
案例:
1、设置并查看环境变量
5、注释
基本语法:
1 |
|
6、位置参数变量和预定义变量
- 位置参数变量
介绍当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量比如:
./myshell.sh 100 200
,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
基本语法:
$n
:功能描述:n为数字,S0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}
$*
:功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@
:功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$#
:功能描述:这个变量代表命令行中所有参数的个数
案例:
- 预定义变量
就是shell设计者事先已经定义好的变量,可以直接在shell中使用
基本语法:
$$
:功能描述:当前进程的进程号(PID)$!
:功能描述:后台运行的最后一个进程的进程号(PID)$?
:功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0(具体是哪个数,由命令来决定),则证明上一个命令执行不正确。
案例:
1 |
|
运行结果:
7、运算符
基本语法:
1、使用$[运算式]
(推荐)、$((运算式))
或者expr m + n
(expression)
2、注意expr运算符间要有空格,如果希望将expr的结果赋值给某个变量,要使用``包裹
3、expr m - n
4、expr \*,/,%,分别代表乘、除、取余
案例:
1 |
|
输出结果:
1 |
|
8、条件判断语句
基本语法:
注意条件两边要有空格,非空返回true,可使用$?验证(0为true, >1为false)
1 |
|
案例:
[ xxx ]
返回true
[]
返回false
[ xxx ] && echo "ok" || echo "hello"
条件满足,执行后面的语句
- 判断语句
1、常用判断条件
(1)=
字符串比较
(2)两个整数比较
方法 | 说明 |
---|---|
-eq | 等于 equal |
-ne | 不等于 not equal |
-lt | 小于 little |
-le | 小于等于 little equal |
-gt | 大于 greater |
-ge | 大于等于 greater equal |
(3)按文件权限进行判断
方法 | 说明 |
---|---|
-r | 有读的权限 |
-w | 有写的权限 |
-x | 有执行的权限 |
(4)按文件类型进行判断
方法 | 说明 |
---|---|
-f | 文件存在并且一个常规文件 |
-e | 文件存在 |
-d | 文件存在并且是一个目录 |
案例
1 |
|
输出结果:
1 |
|
9、流程控制
- if-fi判断
基本语法:
1 |
|
- if-elif-fi判断
基本语法:
1 |
|
- if-else-fi
基本语法:
1 |
|
- case语法
基本语法
1 |
|
案例
1 |
|
输出结果:
- for循环
基本语法1:
1 |
|
案例:
1 |
|
输出结果:
基本语法2:
1 |
|
案例:
输出1-100的和
1 |
|
输出结果:
1 |
|
- while循环
基本语法:
1 |
|
案例:
输出1-100的和
1 |
|
输出结果
1 |
|
10、read读取控制台输入
基本语法:
1 |
|
常用选项:
选项 | 说明 |
---|---|
-p | 指定读取值时的提示符 |
-t | 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了 |
案例:
1 |
|
输出结果
11、 函数
shell编程和其它语言一样,有系统函数,也可以自定义函数。
1、系统函数
- basename
功能:返回完整路径最后/后面的部分,常用于获取文件名
基本语法:
1 |
|
选项:
如果加速suffix(后缀)的话,如果suffix被指定,basename会将pathname或string中的suffix去掉
案例:
请返回/home/ggw/demo.txt的demo
- dirname
功能:返回完整路径最后/前面的部分,常用于获取文件名
案例:
请返回/home/ggw/demo.txt的/home/ggw
2、自定义函数
基本语法:
定义:
1 |
|
调用:
1 |
|
案例:
1 |
|
输出结果
12、练习
1 |
|