1 -- 开山
1.1 Linux的应用领域
个人桌面领域:在逐渐加强
服务器领域(主要领域):免费、稳定、高效等特点得到很好的体现
嵌入式领域:Linux运行稳定、对网络的良好支持性、成本低,且可以根据需要进行软件裁剪...主要应用在智能硬件等,在物联网中应用会更加广泛
2 -- Linux入门
2.1 Linux介绍
Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界认可,目前很多企业级项目都会部署到Linux/unix系统上
常见的操作系统(Windows、IOS、Android、MacOS、Linux、Unix)
Linux主要发行版:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSuSE...
2.2 Linux和Unix的关系
3 -- 安装vmware
4 -- 目录结构
4.1 基本介绍
采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录;“Linux下一切皆文件”;
4.2 具体的目录结构
/bin -- Binary的缩写,存放最经常使用的命令;
/sbin -- s=Super User,存放着系统管理员使用的系统管理程序;
/home -- 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账户命名
/root -- 系统管理员,也称为超级权限者的用户主目录;
/lib -- 系统开机所需要最基本的动态连接共享库,类似Windows中的DLL文件。几乎所有应用程序都需要用到这些共享库
/lost+found -- 一般为空,当系统非法关机后,这里就存放了一些文件
/etc -- 所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库 my.conf
/usr -- 非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似Windows下的program files目录
/boot -- 存放着启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc -- 一个虚拟目录,是内存系统的映射,访问这个目录来获取系统信息
/srv -- service的缩写,存放一些启动后需要提取的数据
/sys -- 该目录安装了2.6内核中新出现的一个文件系统 sysfs
/tmp -- 存放一些临时文件
/dev -- 类似于Windows的设备管理器,把所有的硬件用文件的形式存储
/media -- Linux系统会自动识别一些设备,识别后会把识别的设备挂载在该目录下
/mnt -- 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了 d:/myshare
/opt -- 给主机额外安装软件所存放的目录
/usr/local -- 另一个给主机额外安装软件所安装的目录。一般通过编译源码的方式安装的程序
/var -- 存放在不断扩充着的东西。习惯将经常被修改的目录放在这个目录下。包括各种日志
/selinux [security-enhanced linux] -- SELinux是一种安全子系统,能控制程序只能访问特定文件,有三种工作模式,可以自行设置
5 -- 远程登录
6 -- 实操
6.1 vi和vim编辑器
Linux系统内置vi文本编辑器
vim具有程序编辑能力,可以看做是vi的增强版本,可以主动以字体颜色辨别语法的正确性
6.2 vi和vim常用三种模式
1. 正常模式 -- 以vim打开一个档案
2. 插入模式 -- 按下i、I、o、O、a、A、r、R等任何一个字母之后才会进入编辑模式,一般来说按i即可
⬇️输入 esc + “:” 或 esc+“/” 即可进入命令行模式
3. 命令行模式 -- 提供相关指令,完成读取、存盘、替换、离开vim、显示行号等动作是在此模式下完成的
模式切换:
快捷键:
一般模式/正常模式下
拷贝:输入yy,再输入一个p,代表拷贝当前行;输入5yy,再输入一个p,代表拷贝5行
删除:输入dd,代表删除当前行 ;输入4dd,代表删除当前4行
寻找文件的首/尾行:输入gg -- 定位到最首行;输入G -- 定位到最末行
撤销:输入u
快速定位到某行:输入行号,再输入shift+g
在命令行下
在文件中查找某个单词:输入关键字,回车查找,输入“n”就会查找下一个
设置/取消行号:set nu -- 显示行号; set nonu -- 隐藏行号
vi vim快捷键图
7 -- 开机、重启和用户登录注销
7.1 开机 重启
7.2 用户登录 注销
尽量使用普通用户登录,登录后用“su - 用户名”命令来切换系统管理员身份;(再logout即可切换回普通用户)
在提示符下输入logout即可注销用户;(logout注销指令在图形运行级别无效,在运行级别3下有效)
8 -- 用户管理
8.1 基本介绍
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
8.2 基本操作
添加用户 【usersdd 用户名】/【useradd -d 路径 用户名】
指定/修改密码 【passwd 用户名】
删除用户【userdel 用户名】
删除用户但保留用户家目录 -- userdel 用户名;
删除用户及用户主目录 -- userdel -r 用户名;(谨慎)
一般情况下建议保留家目录
查询用户信息【id 用户名】
当用户不存在时,返回无此用户
切换用户【su - 切换用户名】
当从权限高的用户切换到权限低的用户,不需要输入密码,反之则需要;
当需要返回到原来用户时,使用exit/logout指令;
查看当前用户/登录用户【who am i】
who am i 显示首次登陆用户;whoami显示的是当前使用的用户
8.3 用户组
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
8.3.1 组的基本操作
新增组【groupadd 组名】
删除组【groupdel 组名】
增加用户时直接加上组【useradd -g 用户组 用户名】
当没有特地生成组名时,增加用户时就会创建一个同名组,将用户放入它的同名组中
修改用户的组【usermod -g 用户组 用户名】
8.3.2 用户和组相关文件
/etc/passwd文件 -- 用户user的配置文件,记录用户的各种信息
用户名:口令:用户标识号:组标识号:注释性说明:主目录:登录shell
/etc/shadow文件 -- 口令的配置文件
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件 -- 组group的配置文件,记录Linux包含的组的信息
组名:口令:组标识号:组内用户列表
9 -- 实用指令
9.1 运行级别
0 -- 关机
1 -- 单用户(该运行级别可以找回丢失密码)
2 -- 多用户状态没有网络服务
3 -- 多用户状态有网络服务
4 -- 系统未使用保留给用户
5 -- 图形界面
6 -- 系统重启
常用运行级别是3和5,也可以指定默认运行级别
命令: init [0123456] -- 通过init来切换不同运行级别
9.1.1 指定运行级别命令systemctl
systemctl get-default #To view current default target
systemctl set-default TARGET.target #To set a default target
9.1.2 找回root密码
不同版本找回root密码会有所不同
对centos7,先启动系统,进入开机界面,在界面中按‘e’进入编辑界面;找到以“Linux16”开头的内容所在行,在行最后输入:init=/bin/sh,再ctrl+x进入单用户模式;接着在光标闪烁的位置中输入:mount -o remount,rw /(“/”前有空格),输入两次密码,修改成功回显示passwd...的样式,即修改密码成功;接着在鼠标闪烁位置中(最后一行)输入:touch / .autorelabel(“/”前后均有空格),完成后按回车键Enter;继续在光标闪烁位置输入:exec /sbin/init(“exec”后有一个空格)+Enter回车,等待系统自动修改密码(此处时间较长),完成后系统会自动重启,新密码生效
9.2 帮助指令
man获得帮助信息【man [命令或配置文件]】
功能描述:获得帮助信息
选项可以组合使用(e.g. “ls -a” + “ls -l” = “ls -al” /“ ls -la”; 还可以组合查看某个文件下的目录:ls -al \home)
help指令【help 命令】
功能描述:获得shell内置命令的帮助信息
9.3 文件目录类指令
pwd指令 -- 显示当前工作目录的绝对路径
ls指令
cd指令
cd [参数] -- 切换到指定目录
cd ~ 或 cd --回到自己的家目录
cd .. -- 回到当前目录的上一级 (e.g. 上级的兄弟目录:cd ../../xx)
mkdir指令 -- 创建目录
mkdir [选项] 要创建的目录 (e.g. 在home目录下创建dog目录: mkdir /home/dog)
常用选项: -p -- 创建多级目录 (e.g. 在home目录下创建animal,在animal下创建tiger: mkdir -p /home/animal/tiger)
rmdir指令
rmdir [选项] 要删除的空目录
rmdir指令删除空目录,若目录下有内容则无法删除;若要删除非空目录则需要使用【rm -rf 要删除的目录】(rf代表递归强制删除recursion false)
touch指令【touch 文件名称】 -- 创建空文件
cp指令 -- 拷贝文件到指定目录
cp [选项] source dest //常用选项 -r:递归复制整个文件夹
(e.g.1. 将home目录下的text.txt文件复制到bbb目录下:cp test.txt /bbb)(e.g.2.将bbb目录整个拷贝到opt目录下: cp -r /home/bbb/ /opt/)(强制覆盖不提示的方法:\cp)(e.g.2+. \cp -r /home/bbb /opt)
rm 指令 -- 移出文件或目录
rm [选项] 要删除的文件或目录 //常用选项 -r:递归删除整个文件夹; -f:强制删除不提示
mv指令 -- 移动文件与目录或重命名
mv oldNameFile newNameFile (同一目录下,执行重命名操作)
mv /temp/movefile /targetFolder (不同目录下,执行移动文件操作)
cat指令 -- 查看文件内容
cat [选项] 要查看的文件 //常用选项 -n:显示行号
cat只能浏览文件,不能修改文件。为了浏览更方便,一般会带上 管道命令:| more(e.g.cat -n/ect/profile | more //进行交互)
more指令【more 要查看的文件】
more是一个基于vi编辑器的文本过滤器,以全屏的方式按页显示文本文件内容。more指令中内置了若干快捷键(交互的指令)
less指令【less 要查看的文件】
用来分屏查看文件内容,功能与more类似,但是更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示 大型文件具有较高的效率
echo指令 -- 输出内容到控制台
echo [选项] [输出内容]
head指令 --显示开头部分
类似摘要,默认情况下head指令显示文件的前10行内容
head 文件 (查看文件头10行内容)
head -n 5 文件 (查看文件头5行内容,5可以是任意数字)
tail指令 -- 显示文件尾部内容
用于输入文件中尾部的内容,默认显示文件的后10行内容
tail 文件 (查看文件尾10行内容)
tail -n 5 文件 (查看文件尾5行内容,5可以是任意数字)
tail -f 文件 (实时追踪该文档的所有更新)
>指令 和 >>指令
> -- 输出重定向指令; >> -- 追加指令
>会覆盖,>>不会;重定向即覆盖
ln指令(link)
软链接也称符号链接,类似于windows中的快捷方式,主要存放链接其他文件的路径
ln -s [原文件或目录] [软链接名] //给原文件创建一个软链接
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
删除软链接,如: rm /home/myroot (最后面不要加“/”,不然会被认为myroot是一个目录)
history指令
查看已经执行过的历史命令,也可以执行历史命令
history //查看已经执行过的历史命令(所有)
history 10 //查看最近10条指令
!387 //执行屏幕上历史编号为387的指令
9.4 时间日期类
date指令 -- 显示当前日期
date指令 -- 设置日期
date -s 字符串时间 (e.g.设置成2020-11-1 20:01:11 == date -s "2020-11-1 20:01:11")
cal指令 -- 日历
cal [选项] //不加选项时显示本月日历
9.5 搜索查找类
find指令
将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
对文件大小栏:+ -- 大于,- -- 小于,= -- 等于;单位有k,M,G(e.g. 在Linux系统下查找大于200的文件:find / -size +200)
locate指令
快速定位文件路径。利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
locate 搜索文件
locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
which指令 -- 查看某个指令在哪个目录下
witch [指令]
grep指令和管道符号|
grep 过滤查找,管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
grep [选项] 查找内容 源文件 //常用选项:-n:显示匹配行及行号;-i:忽略字母大小写
9.6 压缩和解压
gzip / gunzip指令 -- 压缩 / 解压
gzip 文件 (压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (解压缩文件命令)
zip / unzip指令
zip用于压缩文件,unzip用于解压,这个在项目打包发布中很有用
zip [选项] XXX.zip 将要压缩的内容 (压缩文件和目录的命令)//常用选项 -r:递归压缩
unzip [选项] XXX.zip (解压缩文件) //常用选项 -d<目录>:指定解压后文件的存放目录
tar指令
既可以打包也可以解压,最后打包后是.tar.gz的文件