目录
第一讲
Linux的起源、历史、特点、定义
GNU GPL
常见的发行版本
商业、共享、自由和免费软件的区别和联系
第二讲
Linux的安装方式(区别和联系,如何选择)、安装过程、远程连接方式
安装方式:
远程连接方式:
Linux内核版本号
Linux目录结构、常见目录的作用和存放内容
Linux系统结构图、主要组件构成
关机、重启命令
关机
重启
说明文档查看
第三讲
3.1 Linux交互方式
3.2 shell的作用、种类、默认shell
3.3 Shell的功能
3.5 文件类型、相对路径、绝对路径、用户主目录、特殊目录
文件类型
绝对路径
相对路径
用户主目录
特殊目录
第四讲
4.1 用户类型
超级用户
普通用户
系统用户
4.2 /etc/passwd 作用和内容
4.3 /etc/shadow 作用
4.4 /etc/group 作用
4.5 常用指令
4.6软连接和硬连接的区别和联系
4.7 常见正则表达式
第五讲
5.1 常用指令
cal
date
su
which / whereis
5.2 vi三种模式的功能、切换
【命令模式】:
【插入模式】:
【末行模式】:
5.3 vi与shell交互
5.6 课后补充 + 课后作业
第六讲
traceroute
netstat
6.1 网络配置文件的各自作用、设置静态IP方法
设置静态IP
第七讲
7.1 两个网络模式的区别与联系(含图),如何选择哪种?
Stand-alone 与 xinetd模式
7.2 telnet服务的配置过程、telnet命令使用
7.3 FTP两种工作模式的区别与联系(含图)
7.4 ftp的配置过程、ftp命令的使用
配置文件
启动服务
第八讲
8.1 shell程序的特点与用途
8.2 shell程序的编写、执行和调试
8.3 变量声明与使用、read、位置变量、H O M E 、 HOME、HOME、PATH、$?
【变量】
【read】
【位置变量】
【$HOME】
【$PATH】
【$?】
8.4 双引号、单引号和倒引号的区别和联系
8.5 简单数学运算、条件判断(字符串、数字)、逻辑运算
8.6 if、case、for、while、until
第九讲
9.1 gcc命令使用(一次编译、分开编译、不同目录、指定头文件)
【指定头文件】
【一次编译】
【分步编译】
9.2 make工具
9.3make层次图、makefile文件
makefile文件
9.4 gdb调试工具的基本使用
9.5 静态函数库的创建与使用
9.6 动态函数库的创建与使用
第十讲
10.1 磁盘设备的命名方式
10.2 Linux的文件系统、VFS的功能和作用(含图)
10.3 设备挂载过程
10.4 常用指令
10.5 进程的概念、进程和程序的区别与联系
10.6 at和crontab的区别和联系、各自的创建、删除、查看
10.7 ps、kill、free
10.8 日志文件
第十一讲
11.1 Docker与虚拟机的区别
11.2 Docker的优势
11.3 docker search, pull, images, run, start, stop, restart, ps, rm, attach, exec, commit, build, tag, push
11.4 Dockerfile
第十二讲
12.1 X Window的作用和组成 (含图) 、每个组成部分的作用
X window由三部分组成
12.2 修改系统运行级别
12.3 系统初始化过程(centos7之前和centos7之后)
Linux是一种免费开源的操作系统,使用GNU通用公共许可证(GPL)授权。Linux 的起源可以追溯到上世纪90年代初期,当时芬兰学生Linus Torvalds基于自己学习的Unix设计原则,开始编写一套免费开源的操作系统内核,并在全球程序员的支持下发展壮大。目前,Linux已经成为了服务器领域的主流操作系统之一。
Linux历史上经历了多个版本的发展,例如Red Hat Linux、Ubuntu等,其中Ubuntu是最具有代表性的一款,以其易用、安全、稳定等特点赢得了用户的青睐。Linux的特点包括开源、定制性强、安全性高、可移植性好、具备良好的网络性能等优点,为企业以及个人用户提供了灵活的选择。
针对Linux的定义,它是一种免费并且开放源代码的操作系统。由于开放源代码的特点,用户可以自行修改和完善Linux系统,从而使得Linux系统具有很强的灵活性和可维护性,同时也促进了社区的协作和创新发展。Linux系统广泛应用于各类服务器、移动设备以及嵌入式设备等领域。
(自由文件许可)
GPL核心思想:
过程:
内核版本号由Linus等人制定和维护,全球统一内核版本号格式:x.y.zz
(/lib是内核级别的 ,/usr/lib是系统级别的, /usr/local/lib是用户级别的)
man Command 命令【manual(操作说明)】 或者 info
yum install -y man man-pages
Linux终端是用户与操作系统之间的接口,用户通过终端与操作系统进行交互
这个接口的程序叫Linux Shell
【作用】
Shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令,返回执行结果
【注意事项】
【操作】
cat /etc/shells
echo $SHELL
【默认Shell】
bash,安装在/bin/sh,其实是连接到/bin/bash
(命令行提示符、自动补齐、历史记录查看、常用的快捷键、重定向、管道)
#代表root用户
$代表普通用户
tab键
键盘上下
cltr+r == 查询以往的记录
0 -->> 标准输入
1 -->> 标准输出
2 -->> 标准错误输出
< 输入重定向
> 输出重定向(覆盖原有内容)
>> 追加重定向
前一个命令输出作为下一个命令的输入
3.4 常用命令
clear、cd、rmdir、cat、
ls、echo、mkdir、touch、more、less、head、tail、cp、mv、pwd、rm
-n 输出后不会自动换行
-e 开启转义,即\t这样的会被翻译为一个tab而不会当字符输出
-p 自动创建不纯在的中间目录
显示目录下的内容
可以用作移动
eg: mv /a.txt /tmp/a.txt
文件/目录 的复制
显示文件的结尾的内容。在默认情况下显示文件的最后10行内容
tail -n 数字x 文件a,代表显示文件a的最后x行
也可以直接 tail -x a,代表显示文件a的最后x行
都是分页显示文件内容
more是一次性加载进内存,只能往下翻页
less是按需加载,可以上下翻页,速度更快
显示当前路径
删除内容
-r 递归删除子目录内容
-f 强制执行,不提示
简写 类型
- 普通文件
d 目录
l 链接文件
b 设备文件 – 区块
c 设备文件 – 字符
p 管道文件
s Socket文件
【PS】:设备文件在 /dev 目录下
从根开始,即从/开始
从用户工作目录开始
可以用~表示
cd ~
root用户在/root下,普通用户在/home下
. 代表目录自己
.. 代表该目录的父目录
root,根用户,类似Windows中的超级管理员账户,有最高的权限,可以对Linux做任何操作
受限的权限,普通用户没有对系统的完全控制权,而且用户之间私人的资源是相互隔离的
与系统和程序服务相关的用户
默认情况下,这些特殊用户是无法登录的,如果给这些用户授权登陆口令后,就可以使用这些用户登录系统
/sbin/nologin 无法登陆shell
格式:用户名 : 加密密码 : 用户ID : 用户组ID : 用户信息 : 用户主目录 : 登录Shell
root : x : 0 : 0 : root : /root : /bin/bash
超级用户root的UID是0
系统用户的UID在1000以内
每一行存储一个用户的登录密码信息
每一行记录系统中的用户组信息
组名 : 密码字段 : 用户组ID : 用户名列表
root : x : 0 :
usermod、userdel、groupadd、groupdel、ln、gzip、unzip、sed、cut、
useradd、chmod、chown、chgrp、find、tar、awk、grep、tr
-u, -d, -g, -s 分别对应uid,目录,组别,shell
修改密码
passwd 用户名
rwx - readable, writeable, executable,对应4 2 1 权限
最简单的chmod 权限 文件
eg chmod 640 a.txt
chown [-R] 用户名[:组名] 路径
chgrp [-R] 组名 路径
查找文件或目录
find 路径 [选项] 表达式
-name 要查找的名字n
-type 文件的类型c
其中 -type f 是普通文件
-perm 文件权限
例子:
find / -name “*.conf”
查找根目录 “ / ” 下所有后缀为conf的文件
tar -cvf 文件 路径 = 压缩文件,生成tar
tar -zcvf 文件 路径 = 压缩文件,生成tar.gz
tar -zxvf 文件 路径 = 解压文件
awk ‘{print $…}’
其中$1为文件类型+文件权限
查找文件里符合的字符串
-i 忽略字符大小写的差别
-v 显示不包含该文本的行
-n 显示匹配行及行号
例子:
# grep ‘root’ /etc/passwd
# cat /etc/passwd | grep ’root’
# cat /etc/passwd | grep -v ‘root’
# cat /etc/passwd | grep -i ‘net’
压缩文件
解压缩文件
用于转换或删除文件中的字符
tr [-d] 字符串1 字符串2
ln (-s) 源路径 目标路径
ln a b 代表 b->a,即b指向a
默认硬链接,只有 -s 时候才是 软连接
硬链接(hard link)
给文件一个副本(别名),同时建立两者之间的连接关系,修改其中一个,与其连接的文件同时被修改,如果删除其中一个,其余的文件不受影响。磁盘上只有一份数据。硬链接是存在同一个文件系统中
指向同一个Inode节点
软链接(symbolic link)
软链接的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置。它只是一个快捷方式,删除了源文件,这个连接文件就没用了。软链接可以跨越不同的文件系统
指向不同Inode节点
【总结】简单来说,软连接只是一个快捷方式 + 一个源文件,硬连接则是在两个地方都出现了同一份文件,根源是一样的。
联系:
(1)对软连接和硬连接修改,都会对源文件有效
(2)删除软连接或者硬连接本身,都不会对源文件有影响
区别:
(1)硬连接,磁盘上只有一份数据,创建其中的一个连接,其余的文件不受影响,只有当链接数变成0,文件才会被真正删掉
(2)软连接,只是一个快捷方式,是一个独立的文件,删除了源文件连接文件就没用了。
PS!!!需要指定绝对路径,否则链接失效
^xxx,匹配开头
xxx$,匹配结尾
[ ],匹配指定范围内的字符
wc、sort、yum、sudo
cal、date、su、which、whereis、
打印日历
date + ‘…’ ,省略号为具体的表达式
——> date ’+%Y-%m-%d %H:%M:%S’
更换用户
su 用户名
查找文件所在位置
which useradd
——> whereis 文件名
h(左), j(下), k(上), l(右) <=> 键盘上下左右键
$ #移动到行未
0 / ^ #移动到行首
**gg ** #定位第一行行首
**G ** #定位末行行首
nG #定位到第n行行首
w | nw #移动到下一/n个字首
e | ne #移动到下一/n个字尾
删除
**x | nx ** #删除一/n个字符
dd | ndd #删除一/n行
**d[w|e|b|$|^|G|gg …] **
删除光标移动范围内的内容
dG即可删除所有内容
恢复
u #撤销上一步操作
U #撤销对当前行的所有操作
复制粘贴
yy 复制
p 粘贴
替换、切换到插入模式 (含课外补充内容)(含课后作业)
命令模式下按 " : " 进入
保存、退出
:wq #写入后退出
:q! #强制退出
显示/取消行号
:set nu | :set number
:set nonu | :set nonumber
显示光标所在行号
:nu | :number
搜索
/
从光标所在位置往下搜索
?
从光标所在位置往上搜索
替换
:s/x/y
把光标所在行第一个匹配的x替换为y
:n,m s/x/y
把第n行到m行中每行中第一个匹配的x替换为y
:% s/x/y
把当前文件中所有行的第一个匹配的x替换为y
g : 全局 => 把每一行中所有的匹配项都替换
:s/x/y/g
:n,m s/x/y/g
:% s/x/y/g
保存与另存为
:w 写入
:w filename 另存为
ZZ与:x , :wq 作用一样
在末行模式下用“!”符号来访问Linux的Shell
5.4 vi冲突处理
——> 删除 *.swp 文件
5.5 文本格式转换
Linux下是unix格式
Windows下是dos格式
课后作业
:set nu | :set number
100G
10w
gg //移动光标到首行首字
/1024
n
:50,100 s/o/O/g
u
复制65到73行之间这9行的内容,粘贴到最后一行
65G
9yy
G
p
20G
22dd
:20,42 d
:w filename #另存为
Esc
:wq
命令模式下的常见操作
保存退出
ZZ #与末行模式下 :wq 效果一样
快速清空文本内容
gg #定位第一行行首
dG #删除所有内容
快速删除指定行之间的内容
:n,m d #删除第n行到m行之间的内容
/etc/sysconfig/network |
最基本的网络信息,系统启动时读取该文件 |
/etc/sysconfig/network-scripts/* |
此目录下的文件是系统启动时用来初始化网络的一些信息,例如:第一块以太网卡对应的文件为 ifcfg-eth0 |
/etc/host.conf |
域名解析的配置文件 |
/etc/hosts |
域名或主机名与IP地址的映射文件 |
/etc/resolv.conf |
域名服务器配置文件 |
/etc/protocols |
定义使用的网络互联协议及协议号 |
/etc/services |
设定主机的不同端口的网络服务 |
在**/etc/sysconfig/network-scripts/ifcfg-ens33(网卡名字)**文件中设置
vi ifcfg-ens33
ONBOOT=yes //启动时是否启动该设备
BOOTPROTO=none //启动协议,none表示使用用户设置的ip地址,dhcp表示从dhcp获得ip地址,static表示静态
BOOTPROTO=static
IPADDR=192.168.14.11 //IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=XX.XXX.XXXX //网关
DNS1=xx.xxx.xxx.xx //DNS服务器
【区别】
stand-alone:
xinetd:
1.安装
yum install -y telnet telnet-server
2.配置(新建、编辑)文件
/etc/xinetd.d/telnet
3.重启服务
service xinetd restart
PORT与PASV
区别:
/etc/vsftpd/vsftpd.conf
service vsftp start
需要增加可执行权限 chmod +x filename
chmod +x /path/filename
变量是弱类型(不用管类型)
使用read将用户的输入赋值给变量
$0则代表脚本的名字
$1、2 … 2…2…n分别代表参数1、参数2…参数n
$*:这个变量包括参数的列表(字符串)
$@:这个变量包括参数的列表(数组)
$#:这个变量包括参数的个数
用户主目录
寻找命令或可执行文件的搜索路径列表
紧邻的前驱命令的返回值 0=成功 1=失败
【双引号】
字符串通常被放在双引号中
PS:因为如果在参数中包含一个或多个空白字符(空格),必须给参数加双引号
【单引号】
单引号括起来的字符都作为普通字符出现
【倒引号】('' 的字符串替换成 `` 内代表的内容)
Shell会先执行倒括号内的内容,再以它的标准输出结果取代整个倒引号部分
【数学运算】
let
let语句更加简洁
【条件判断】
(条件和左右括号之间要有空格)
【逻辑运算】
要求可以 手写shell程序
-I dir ——》(大写i)在编译源程序时增加一个搜索头文件的额外目录——dir,即include增加一个搜索的额外目录。
一次性编译多个文件
gcc a.c b.c d.c -o xxx
分别编译每一个c文件
file |
指定需要进行调试的程序 |
step |
单步(行)执行,如果遇到函数会进入函数内部 |
next |
单步(行)执行,如果遇到函数不会进入函数内部 |
run |
启动被执行的程序 |
quit |
退出gdb调试环境 |
|
查看变量或者表达式的值 |
break |
设置断点,程序执行到断点就会暂停起来 |
shell |
执行其后的shell命令 |
list |
查看指定文件或者函数的源代码,并标出行号 |
名字一般是libxxx.a
名字一般是libxxx.so 。
例如libc.so中包含了标准的输入输出函数。
【VFS功能】
【1】查看设备:使用命令“fdisk -l”可以查看系统的存储设备
【2】挂载设备 :首先使用mkdir命令建立挂载点目录,然后再使用mount命令挂载相关设备
【3】访问设备
【4】卸载设备 :用户在使用完挂载设备后,不能直接将挂载设备从系统拔出,否则会出现问题,严重的会导致系统崩溃。用户必须先执行卸载umount 命令然后再该设备拔出
mkfs、fdisk、mount、umount、whoami、who、w、jobs、bg、fg、&(后台进程启动)
查看磁盘空间使用情况
统计目录或文件所占磁盘空间大小
【概念】
【区别】
【联系】
【区别】
【联系】
【at】
【crontab】
-e |
执行文字编辑器来设定时间表 |
-r |
删除目前的时程表 |
-l |
列出目前的时程表 |
多数的日志文件位于/var/log目录下,不同的日志文件记载不同的信息
docker search ubuntu
docker pull ubuntu
docker images
docker run -it --name myubuntu ubuntu /bin/bash
docker start myubuntu
docker stop myubuntu
docker restart myubuntu
docker ps
docker rm myubuntu
docker attach myubuntu
docker exec -it myubuntu /bin/bash
docker commit myubuntu myubuntu:v2
docker build -t myapp .
docker tag myapp myregistry.com/myapp
docker push myregistry.com/myapp
【1】X 服务端
【2】X 客户端
【3】X 通信通道
(1)X通信通道的主体是xlib(X函数库)。
(2)X Client调用xlib,利用相应的通信功能向X Server发出请求。
(3)X Server完成任务之后,同样调用xlib把结果显示指定的设备上去。
init n
Telinit n
Startx(启动图形化环境
systemctl set-default *.target??