Linux起源
1965 麻省理工 贝尔实验室 奇异公司
1969 汤姆森.肯 (太空旅行游戏) 4个周 unics
1970 unix
丹尼斯·里奇-->c语言之父
贝尔实验室,unics的基础进行二次开发,c语言写,命名为unix
两个分支:
伯克利分校(TCP/IP) systemV
1983 斯托曼 GNU(自由软件组织) libc gcc make bash解析器
GPL 协议--》开源协议
1991 林纳斯--》linux开源不收费

UNIX和linux的区别:
1)linux是开发源代码的自由软件.而unix是对源代码实行知识产权保护的传统商业软件。
2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
了解不同操作系统的内核:
windows - NT
ubuntu - linux
Android - linux
macOs ios - unix
查看系统版本
lsb_release -a或-r

查看内核版本
uname -a或-r
内核系统架构
应用层:app shell命令
内核层:五大功能
内存管理
文件管理
网络管理
设备管理
进程管理
驱动层:字符设备驱动、块设备驱动、网络设备驱动
硬件层:鼠标、键盘、U盘、硬盘、网卡
系统关机或重启
关机:
sudo shutdown -h now 立即关机
sudo shutdown -h +时间 "提示语句" 定时关机 min为单位
重启:
sudo shutdown -r now 立即重启
sudo shutdown -r +时间 定时重启
网络配置
win r打开运行窗口,输入cmd打开命令窗口,输入ipconfig
查看Windows的ip地址 ipconfig
查看Linux的ip地址 ifconfig
- 虚拟机提供的网络类型
桥接模式:主机和虚拟机分别拥有不同的ip地址,可以实现和外界设备通信
NAT模式:也能联网,但和主机共用同一个ip地址,外界无法识别虚拟机和主机发送的信息
仅主机模式:不能联网,只能和主机通信
- 如何查看虚拟机是否联网
ping www.baidu.com
说明虚拟机可以联网

如果没有
,可以尝试以下命令
sudo nmcli network off
sudo nmcli network on
- 配置桥接模式
1)保证虚拟机提供了桥接模式
菜单栏---》虚拟机---》设置---》网络适配器---》桥接模式


2)保证虚拟机可以设置桥接模式
菜单栏---》编辑---》虚拟网络编辑器

更改设置(如没有桥接模式)----->添加网络(添加桥接网络)

问题:无法添加桥接网络
1)尝试还原默认设置后,再重新添加桥接网络
2)如果1没有用,找到VMware的软件安装包,双击安装包修改该软件
3)如果1和2都没有用,安装更高版本的VMware
桥接到主机的网卡

如果自动失败,手动找到主机的网卡
1) 找到网络---->属性

- 描述的位置即是主机的网卡

-
找到主机网卡后,不选自动直接桥接到主机具体的网卡
-
配置NAT模式
1)编辑->虚拟网络编辑器->选择vmnet8->nat模式->确定。
2)虚拟机->设置->网络适配器->选择nat模式


Linux下的软件安装
两种软件包管理机制
debian linux: deb软件包 ---- ubuntu用的这个
redhat linux: rpm软件包
deb软件包分为两种:
二进制软件包:.deb -----安装软件的软件包
源码包:.dsc

软件包的管理工具:dpkg apt
1)dpkg
特点:安装时需要软件包存在,不需要网络,不能检查软件的依赖关系
dpkg 命令:
sudo dpkg -i 软件包的完整名称:安装软件
sudo dpkg -r 软件名:卸载软件
sudo dpkg -s 软件名:查看软件的安装状态
sudo dpkg -P 软件名:完全卸载
sudo dpkg -L 软件名:列出软件目录信息

2)apt
特点:安装时不需要软件包存在,需要网络,会检查软件之间的依赖关系
默认下载的包存放路径:/var/cache/apt/archives/
sudo apt-get install 软件包名:下载并安装软件
例:sudo apt-get install oneko 小猫鼠标
sudo apt-get remove 软件包名:卸载软件
sudo apt-get --purge remove 软件包名:完全卸载软件包
sudo apt-get update:下载更新软件包列表信息
sudo apt-get upgrade:将系统所有软件包升级到最新版本
sudo apt-get clean:清空安装包的存放路径
shell的基本命令
shell是命令解析器
用户、shell、内核、硬件之间的关系:
用户在命令行输入命令,开始和shell进行交互;shell把用户输入的命令或按键转化成内核能理解的指令,控制操作系统作出响应,直到控制相关的硬件设备,然后,shell把输出结果通过shell提交给用户。

解析器的分类:
Bourne Shell(简称sh):Bourne Shell由AT&T贝尔实验室的S.R.Bourne开发,也因开发者的姓名而得名。它是Unix的第一个Shell程序,早已成为工业标准。目前几乎所有的Linux系统都支持它。不过Bourne Shell的作业控制功能薄弱,且不支持别名与历史记录等功能。目前大多操作系统是将其作为应急Shell使用。
C Shell(简称csh):C Shell由加利福尼亚大学伯克利分校开发。最初开发的目的是改进Bourne Shell的一些缺点,并使Shell脚本的编程风格类似于C语言,因而受到广大C程序员的拥护。不过C Shell的健壮性不如Bourne Shell。
Korn Shell(简称ksh):Korn Shell由David Korn开发,解决了Bourne Shell的用户交互问题,并克服了C Shell的脚本编程怪癖的缺点。Korn Shell的缺点是需要许可证,这导致它应用范围不如Bourne Shell广泛。
Bourne Again Shell(简称bash):Bourne Again Shell由AT&T贝尔实验室开发,是Bourne Shell的增强版。随着几年的不断完善,已经成为最流行的Shell。它包括了早期的Bourne Shell和Korn Shell的原始功能,以及某些C Shell脚本语言的特性。此外,它还具有以下特点:能够提供环境变量以配置用户Shell环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。
shell命令格式
一般包含三要素:命令名称 选项 参数

命令名称:必须有
选项和参数:可有可无,选项前有-符号
history-历史记录查询
history 10 ---》查看近10条历史记录
家目录下隐藏文件 .bash_history保存历史记录,保存
条
家目录下
中进行修改,就是永久修改


起别名命令
alias: 查看系统中起别名的命令
alias 新名='原来的命令' :起别名
unalias 新名 :取消别名

shell中的特殊字符
通配符
当用户需要使用命令处理一组文件,比如file1.c file2.c file3.c file4.c,不需要输入所有的文件名,可以使用shell通配符
|-----------------|--------------|
| 通配符 | 含义 |
| * | 匹配任意长度的字符 |
| ? | 匹配一个长度的字符 |
| [...] | 匹配其中指定的一个字符 |
| [-] | 匹配指定一个字符范围 |
| [^...] | 除了其中指定的字符都可以 |
| [[:lower:]] | 匹配所有小写字母 |
| [[:upper:]] | 匹配所有大写字母 |
管道 |
把前一个命令的输出作为后一个命令的输入
command1 | command2
例:
wc -l 文件名: 显示文件行数
wc -w 文件名 :显示文件单词个数
wc -c 文件名:显示文件的字符个数
例:计算当前路径下单词个数

输入输出重定向
>file:输出重定向,新建模式; file文件不存在则创建
>>file:输出重定向 追加模式 file文件不存在则创建,如果文件已存在则追加
把由命令产生的错误输出到文件中
command &>file
会把标准输出(正常信息)和标准错误(错误信息)都重定向到 file,相当于同时捕获命令的所有输出
command 2>file
只把标准错误(错误信息)重定向到 file,标准输出仍然会显示在终端(或默认输出位置)。
<file:输入重定向
比如你有一个文件input.txt,内容是hello,现在用cat命令读取它
cat < input.txt
执行后会输出hello------ 这里< input.txt就是把input.txt的内容作为cat命令的输入。
命令置换符 `(Tab键上面这个)
把一个命令的输出作为另一命令的参数
command1 `command2`
wc -l `ls`
这里ls会先执行ls命令,把输出的文件列表作为wc -l的参数,最终输出文件的数量。
echo命令
向终端输出指定的内容
echo -n 字符串:不换行输出
echo "你好"
echo "世界"
输出
你好
世界
echo -n "你好,"
echo "世界"
输出
你好,世界
name="土豆"
echo "你好,$name"
输出
你好,土豆