1.初始Linux
1.1操作系统简介
1.概述
操作系统(Operation System, OS),是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。
2.作用
3.操作系统结构图
4.主流操作系统按照应用领域的划分
1、桌面操作系统
- Window 系列
- 用户群体大
- macOS
- 细节处理的更好, 没有windows软件丰富, 价格高
- Linux
- 应用软件少
2、服务器操作系统
-
Linux
- 安全、稳定、免费
- 占有率高
-
Windows Server
- 付费
- 占有率低
3、嵌入式操作系统
- Linux
4、移动设备操作系统
- IOS
- Android (基于Linux)
- 华为鸿蒙(基于linux)
1.2Linux简介
1.特点
- 两基本思想
- 一切都是文件
- 每个软件都有确定的用途
- 完全免费
- 完全兼容POSIX1.0标准
- 多用户,多任务
- 良好的界面
- 支持多种平台
2.优点
- 源代码完全开源
- 具有非常强大的网络功能
- 工具链完整
2.Linux的安装和使用
2.1Vmware
1.简介
- 不需要区分或重开机就能在同一台pc上使用两种以上的操作系统
- 完全隔离并且保护不同操作系统的环境以及所有软件,材料。
- 不同的操作系统之间还能互动操作
- 有复原功能
- 能够设置并且随时修改操作系统的操作环境
3.系统与设置命令
3.1Linux 用户和用户组管理
3.1.1Linux账号管理
1.必须在root用户的权限下
2.使用命令时保证此用户不再使用中(一般直接退出)
3.查看选项可直接输入相关命令(如:useradd,passwd,usermod,userdel·····)
- 创建用户:useradd (选项) 用户名
- 用户口令(密码): passwd (选项) 用户名
- 修改用户:usermod 选项 用户名
- 例如:usermod -l bbb aaa
- 删除用户:userdel (选项) 用户名
3.1.2Linux用户组
- 创建用户组:groupadd (选项) 用户组名
- 修改用户组:groupmod (选项) 用户组名
- 例如:groupmod -n kaifazu kaifa
- 查询用户所属组:groups 用户名
- 删除用户组:groupdel 用户组名
3.1.3将用户添加到组
语法: gpasswd (选项) 用户组名
gpasswd是Linux下的给管理工具,用于将一个用户添加到组或从组中删除
例如: gpasswd -a user1 kaifazu
选项:
- -a:添加用户到组
- -d:从组中删除用户
- -A:指定管理员
- -M:指定组成员和-A的用途差不多
- -r:删除密码
- -R:限制用户登入组,只有组中的成员才可以newgrp加入该组
3.2系统管理
3.2.1日期管理
语法:date (选项)
选项:
- -d “字符串”:显示字符串所指的日期与时间
- -s “字符串”:根据字符串来设置日期与时间
- -u:显示GMT
- –help:在线帮助
- –version:显示版本信息
3.2.2显示用户
语法:logname (选项)
选项:
- –help:在线帮助
- –version:显示版本信息
3.2.3切换用户
语法:su (选项)
选项:
- -c 命令 :切换用户执行命令,执行完毕后再变回原来的用户
- su -c ls root
- –help:显示说明文件
- –version:显示版本信息
- 用户名 :要变更的用户名
- ARG:传入新的shell参数
3.2.4id命令
1.我们如果需要查看当前账号详细信息的时候,比如查看它的用户id、群组id以及所属组的时候,我们就可以使用id命令进行查看
2.id命令用于显示用户的ID,以及所属群组的ID。
3.id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
4.id命令参数虽然很多,但是常用的也就是id命令,不带参数的,主要看他的uid和组信息
格式:
id (选项)
3.2.5sudo命令
提高普通用户的操作选项
格式:sudo (选项)
选项
- -V:显示版本信息
- -h:显示指令的使用方式
- -l:显示出自己的权限
3.2.6top命令
实时显示process(进程)的状态
格式:top (选项)
top (选项)
- top 实时的显示所有进程的信息
- top -c 实时的显示所有进程的信息(显示完整命令)
- top -p PID 实时的显示指定进程的信息
结束监控快捷键:q
3.2.7ps命令
查看当前时刻的进程信息
格式:ps (选项)
ps (选项)
- ps:显示当前正在运行的进程的信息
- ps -A:显示系统中所有的进程信息
- ps -ef:显示系统中所有的进程信息(完整信息)
- ps -u 用户名:显式指定用户的进程信息
3.2.8kill命令
中断执行中的程序
格式:kill (编号) 进程PID
常用:
- kill 进程PID:杀死指定进程
- kill -9 进程PID:彻底杀死指定进程
- kill -l:显示编号及其作用
- kill -9 $(ps -ef|grep 用户名):杀死指定用户的所有进程
- killall -u 用户名:杀死指定用户的所有进程
3.2.9关机命令
格式:shutdown(选项)
常用
- shutdown:关机(不同的版本会有差异)
- shutdown -h now:立马关机
- shutdown +1 “警告信息”:1分钟后关机
- shutdown -r +1 “警告信息”:1分钟后重启
- shutdown -c:取消当前关机操作
3.2.10重启命令
格式:reboot(选项)
常用
reboot:立马重启
3.2.11who命令
显示当前登录系统的用户
格式:who (选项)
选项
- -H:会多显示出标题信息
- –help:在线帮助
- –version:显示版本信息
3.2.12timedatectl命令
校正服务器时间,时区
常用
- timedatectl status:显示系统的当前时间和日期
- timedatectl set-ntp false:禁用时间同步
- timedatectl set-time “2222-2-2 11:11:11”:设置时间
- timedatectl set-ntp true:启用时间同步
3.2.13clear命令
清屏(但不删内容)
3.2.14exit命令
exit命令用于退出目前的shell。
4.Linux的目录管理
Linux只有一个根目录/,所有的文件与目录都在它下面
4.1Linux文件与目录管理
4.1.1目录常用命令
常见命令 | 作用 |
---|---|
ls | 列出目录 |
cd | 切换目录 |
pwd | 显示目前的目录 |
mkdir | 创建新目录 |
rmdir | 删除空目录 |
cp | 复制文件或目录 |
rm | 删除文件或目录 |
mv | 移动文件或目录 修改文件或目录的名字 |
ls
列出目录里的内容
格式:ls (选项)
选项
- ls:显示不隐藏的文件与文件夹
- ls -a:显示所有的文件和文件夹(包括隐藏)
- ls -l:显示不隐藏的文件与文件夹的详细信息
- ls -al:显示所有文件与文件夹的详细信息
pwd
显示当前所在目录
语法:pwd -P或直接pwd
cd
切换目录
语法:cd (相对路径或绝对路径)
特例:cd …返回到上一级目录
-
相对路径:相对当前目录而言
-
绝对路径:有根目录/开始
mkdir
创建目录
常用
- mkdir aaa(目录名) :创建目录
- mkdir -p bbb(目录名)/ccc(目录名):创建多级目录
rmdir
删除空的目录
常用
- rmdir aaa(目录名) :删除目录
- rmdir -p bbb(目录名)/ccc(目录名):删除ccc,如果删完后bbb是空的,bbb也一起删除。
rm
删除文件或目录
语法:rm (选项) 文件/目录
常用
- rm 文件:删除文件
- rm -r 文件/目录:删除文件或目录中的所有内容
#删除文件,不加任何参数,会有询问的页面
[root@LiangGaRy-Master ~]# rm a.txt
rm:是否删除普通文件 "a.txt"?y
#删除目录
[root@LiangGaRy-Master ~]# rm 123
rm: 无法删除"123": 是一个目录
#如果不加参数,无法删除目录
[root@LiangGaRy-Master ~]# rm 123
rm: 无法删除"123": 是一个目录
[root@LiangGaRy-Master ~]# rm -r 123
rm:是否进入目录"123"? y
rm:是否删除普通文件 "123/a.txt"?y
rm:是否删除普通文件 "123/c.txt"?y
rm:是否删除普通文件 "123/b.txt"?y
rm:是否删除目录 "123"?y
#通常的操作是:
[root@LiangGaRy-Master ~]# rm -rf aaa
实际操作的时候一定要注意,谨慎
cp
复制文件
语法:cp (选项) 数据源 目的地
常用
- cp aaa/a.txt ccc:将aaa文件夹中的a.txt文件复制到ccc文件夹中
- cp -r aaa/* ccc:将aaa文件夹中的所有内容复制到ccc文件夹中
- cp -r aaa ccc:将aaa文件夹复制到ccc文件夹中
mv
改名(同一文件夹下)或移动文件,文件夹(不同一文件夹下)
语法:mv (选项) 数据源 目的地
4.2Linux文件基本属性
4.3Linux文件属主(所属用户)和属组
1.更改属组
语法:chgrp (选项) 组名 文件
选项: -R:对当前目录下的所有档案与子目录进行相同权限的变更
常用
- chgrp root aaa:将aaa的属组改为root
- chgrp -v root aaa:将aaa的属组改为root(会多一条提示语句)
2.更改属主和属组
语法1:chown 属主名 文件名: 更改属主
语法2:chown (选项) 属主名:属组名 文件名:更改属主和属组
选项
- -R:处理指定目录以及其子目录下的所有文件
举例
- chown root aaa:将aaa的属主改为root
- chown root:root bbb:将bbb的属主和属组改为root
- chown -R root:root bbb:将bbb文件夹和里面所有的属主和属组改为root
3.chmod命令
作用:修改属主,属组,其他用户的权限
修改方式:数字方式和符号方式
-
数字方式
- 语法:chmod (选项) 数字权限 文件或目录
- 选项:
- -R:对当前目录下的所有档案与子目录进行相同权限的变更
- –help:获取选项信息
- –version:显示版本
- 举例:chmod -R 700 aaa
-
符号方式
-
举例:
- chmod o-rwx bbb
- chmod -R a=rwx bbb
- chmod -R u=rwx,g=rwx,o=rwx bbb
5.文件管理
5.1touch命令
如果文件不存在就创建文件,如果文件存在就修改它的时间属性
语法:touch (选项) 文件名
常用
- touch a.txt:如果文件不存在就创建文件,如果文件存在就修改它的时间属性
- touch a{1…10}.txt:批量创建空文件
- stat a.txt:查看文件的详细信息
5.2vi与vim编辑器
5.2.1vi与vim介绍
1、vi介绍
vi是 visual interface
的简称, 是linux中最经典的文本编辑器。
- vi的特点
- 只能是编辑 文本内容, 不能对 字体 段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
- vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
2、vim介绍
vim:是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
vim 则可以说是程序开发者的一项很好用的工具。
5.2.2vi/vim模式
vi/vim模式主要分为以下三种:
命令模式:在Linux终端中输入“vim 文件名”就进入了命令模式,但不能输入文字。
编辑模式:在命令模式下按i就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。
末行模式:在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。
下面是三种模式的简单分析图:
上图总结
上面的三种模式简单总结下就是:
1、vim 开始进入时是命令模式
2、按下I的时候会进入编辑模式
3、按下ESC然后在按下:的时候是末行模式
5.2.3打开和新建文件
语法:vim 文件名
说明:
- 如果文件已经存在,就会直接打开文件
- 如果文件不存在,会打开一个临时文件,再保存且退出后,就会创建一个文件
5.2.4三种模式切换
进入末行模式保存文件
语法:
- :q 当vim进入文件没有对文件内容做任何操作直接退出
- :q! 当vim进入文件对文件内容有操作但不想保存退出
- :wq 正常保存退出
- :wq! 强行保存退出,只针对与root用户或所有人
5.2.5文件查看
命令 | 功能 |
---|---|
cat 文件名 | 查看小文件内容 |
less -N 文件名 | 分屏显示大文件内容 |
head -n 文件名 | 查看文件的前一部分 |
tail -n 文件名 | 查看文件的最后部分 |
grep 关键字 文件名 | 根据关键字搜索文本文件内容 |
1.cat命令
- cat a.txt:查看a.txt的内容
- cat -n a.txt:查看a.txt的内容(加入行号)
2.grep命令
根据关键字,搜索文本文件内容
语法:grep (选项) 关键字 文件名
选项
- -n:把包含关键字的行数也显现出来
- -i:把包含关键字的行也显现出来,搜索时,忽略大小写
- -v:把
不
包含关键字的行也显现出来
与进程命令一起使用
- ps -ef | grep 关键字:查找包含关键字的进程
- ps -ef | grep -c 关键字:查找进程个数
3.tail命令
查看文件最后部分
语法:tail (选项) 文件名
选项
- -数字:显示文件的最后几行
- -f:动态的读取文件的最后十行(ctrl +c停止)
- -n +数字:显示文件的内容,从指定行到文件末尾
- -c 数字:显示最后指定的字节数
常用
- tail -3 big.txt:显示文件的最后3行
- tail -f big.txt:动态显示文件的最后10行
- tail -4f big.txt:动态显示文件的最后4行
- tail -n +30 big.txt:显示文件的内容,从第30行到文件末尾
- tail -c 10 big.txt:显示最后10个字节
head命令与tail命令类似
4.less命令
查看大文件
语法:less (选项) 文件名
选项
- -N:可以显示行数
按q退出less阅读,按上下键阅读
5.2.6vim定位行
查看文件并定位到具体的行数
语法:vim 文件名 +行数
5.2.7异常处理
如果vim异常退出,在磁盘上可能会保存有交换文件, 不会再原来的文件上修改
.a.txt.swp
我们直接删除.a.txt.swp交换文件即可
5.3echo命令
语法
- echo “黑马(字符串)”:展示文本
- echo “黑马(字符串)” > 文件名:将字符串写到文件中(覆盖文件中的内容)
- echo “黑马(字符串)” >> 文件名:将字符串写到文件中(不覆盖文件中的内容)
- echo 不存在的文件 &>> 文件名(存在):将命令的失败结果追加到
存在的文件
里
5.4awk命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具(文本里面的内容实际不变)
语法:awk (选项) ‘语法’ 文件名
作用
1.过滤
2.分割与获取
- -F ‘,’:使用指定字符(,)分割
- $数字:获取第几段(列)内容
- $0:获取当前行内容
3.显示效果
- OFS=“===”:向外输出时的段分割字符串
- toupper(参数):字符转成大写
- tolower(参数):字符转成小写
- length(参数):返回字符长度
4.计算
语法:‘BEGIN{初始化操作} {每行都执行} END{结束时操作}’
5.5软命令(相当于快捷方式例如:QQ)
语法:ln -s 目标文件路径 快捷方式路径
5.6find查找
在指定目录下查找文件
语法:find 指定目录 (选项) 条件
.
表示当前目录,/
表示根目录
选项
- -name “文件名”:按名字查找
- -ctime -n或+n:按时间查找(-n:n天以内。+n:n天以前)
5.7read命令
6.Linux备份压缩
6.1gzip命令
压缩文件
语法:gzip (选项) 文件名
常用
gzip a.txt:压缩文件
gzip *:压缩当前目录下所有文件文件
gzip -dv *:解压当前目录下所有文件文件并列出详细信息
6.2gunzip命令
解压文件
语法:gunzip (选项) 文件名
常用
gunzip a.txt:解压文件
6.3tar命令
打包,压缩,解压(文件/文件夹)
语法:tar (必要与不必要选项) 文件
选项
- -c:建立新的压缩文件
- -v:显示指令执行过程
- -f 文件名:指定压缩文件
- -z:通过gzip指定处理压缩文件
- -t:列出压缩文件中的内容
- -x:解压文件
常用
- tar -cvf 打包文件名 文件名:打包文件并指定打包后的文件名(仅打包不压缩)
- tar -zcvf 压缩文件名 文件名/文件夹名:压缩文件或文件夹并指定压缩文件名(打包压缩)
- tar -ztvf 压缩文件名 :查看压缩文件中有哪些文件
- tar -zxvf 压缩文件名 :解压
6.4zip命令
概述:压缩文件
语法:zip (必要与不必要选项) 文件
注意:此命令会在压缩后产生一个具有".zip"扩展名的压缩文件
选项
- -q:不显示指令执行过程
- -r:递归处理。将指定目录下的所有文件和子目录一并处理
常用
- zip -q -r 压缩文件名 文件/文件夹:压缩
6.5unzip命令
概述:解压文件
语法:unzip (必要与不必要选项) 文件
注意:解压".zip"扩展名的压缩文件
选项
- -l:显示压缩文件里的内容
- -d 文件:指定文件解压后要存储的目录
常用
- unzip -l 压缩文件名:显示压缩文件里的内容
- unzip -d 指定文件夹 压缩文件:解压
6.6bzip2命令
压缩
语法:bzip2 (选项) 文件
注意:压缩后的文件比原来的要小,但是花费时间长。若没有加上任何参数,则会产生扩展名为".bz2"的压缩文件,并删除原始文件。
6.7bunzip2命令
解压
语法:bunzip2 (选项) 文件
选项
- -v:解压文件时,显示详细信息
7.网络与磁盘管理
7.1网络命令
7.1.1ifconfig命令
显示或配置网络设备的命令
语法:ifconfig (选项)
常用
- ifconfig:显示激活的网卡信息
- ifconfig ens37 down:关闭网卡
- ifconfig ens37 up:启动网卡
- ifconfig ens37 192.168.23.199:配置ip地址
- ifconfig ens37 192.168.23.199 netmask 255.255.255.0:配置ip地址和子网掩码
7.1.2ping命令
检测是否与主机连通
语法:ping (选项) 网址
选项
- -c 数字:设置完成要求回应的次数
常用
- ping www.baidu.com:检测是否与百度连通(ctrl + c 停止)
- ping -c 2 www.baidu.com:指定接受包的次数
7.1.3netstat命令
显示网络状态
语法:netstat (选项)
选项
- -a:显示所有连线中的Socket
- -i:显示网卡列表
7.2磁盘命令
7.2.1lsblk命令
列出硬盘的使用情况
语法:lsblk (选项)
选项
- -f:显示系统信息
常用
- lsblk:列出硬盘的使用情况
- lsblk -f:显示系统信息
7.2.2df命令
显示目前在Linux系统上,硬盘的使用情况
语法:df (选项)
选项
- –total:显示所有的信息
- -h:把显示所占内存大小换算成KB,MB,GB等形式进行展示
常用
- df:显示目前在Linux系统上,硬盘的使用情况
- df 文件夹:显示文件夹的使用情况
- df --total:显示所有的信息
- df -h:把显示所占内存大小换算成KB,MB,GB等形式进行展示
7.2.3mount命令
用于挂载Linux系统外的设备
语法:mount (选项) 目录
常用
- mount -t auto /dev/cdrom 文件夹:开始挂载
- umount 文件夹:卸载
8.shell与安装
8.1yum使用
8.1.1安装tree
- yum -y install tree:安装tree
- tree:执行tree,展示当前的目录结构
8.1.2移除tree
- yum remove tree:移除tree
8.1.3yum查找
- yum list tom*:找出以tom开头的软件
8.1.4yum源
略
8.2rpm使用
被yum代替了,rpm只能安装已经下载到本地机器上的rpm包
8.3shell使用
8.3.1shell入门
1.说明
shell就是一个命令解释器
shell是一个在操作系统和应用程序之间的一个命令翻译工具
- window
- 默认的shell为:cmd.exe
- linux
- 默认的shell为:/bin/bash
2.shell的使用方式
- 手工方式:
手工敲打键盘,重点:逐行输入命令,逐行进行确认执行 - 脚本方式:
把手工命令输入到一个文件里,执行文件,就能达到执行命令的效果,这个文件叫做脚本文件。
3.编写第一个shell
- 新建一个文件后缀名为sh
- 书写内容
#! /bin/bash
#这是第一个脚本文件
echo "lhk228"
echo "hello"
- 执行
8.3.2shell注解
- 单行注释
# 注解内容
- 多行注释
①
:<< !
注解内容
!
②
:<< 任意字符
注解内容
任意字符
8.3.3shell变量
- 定义变量
-
普通变量
-
命令变量
- 使用变量(得到变量的内容)
①
$变量名
②
“$变量名”
③
${变量名}
④
“${变量名}” - 只读变量
readonly 变量名
- 删除变量
unset 变量名
8.3.4shell数组
- 定义数组:arr=(1 2 3 4 5 6)
- 给数组元素赋值:arr[0]=1
- 获取元素:${arr[0]}
- 获取长度:${#arr[*]}或${#arr[@]}
8.3.5shell运算符
-
运算符
-
字符串运算符
-
关系运算符
-
布尔运算符
-
逻辑运算符