0.0 系统的认识#
- 什么是系统?
- 鼠标能点、键盘能输入东西、阅读看电影,还可以拓展安装一些软件, 简单来说就是人机交互所依赖的东西,开机依赖系统
0.1 Linux 操作系统认识,以及开源的提出:Linux 的千奇百怪的版本#
- 目前世界上流行的电脑系统:
- Windows- Bill Gates (比尔・盖茨)
- GNU/Linux-Linus Benedict Torvalds (林納斯・托瓦茲)- 开源
- Unix (Linux 的爸爸)- 湯普遜和里奇合 - 给政府机关、公司等机构付费使用
- Linux 发行版本:Ubuntu Centos Red Hat Kali ……
0.2 开源的含义#
- 公开、分享、共同进步
- 开源不一定免费
0.3 Linux 的用途,各类发行版本#
- Linux 主要运用在服务器上
- Linux 严格来说是单指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具
只要遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布
Linux 衍生: - Debian—Ubuntu,Deepin,Raspberry Pi OS,Knopix
Fedora—RedHat,Centos,Moblin
OpenSUSE—GeckoLinux,openSUSE EcoLab Spin
1.1 Vmware 虚拟机#
安装系统的方式
-
实体机
-
双系统
-
虚拟机
1.2 VMware 16#
- 软件版本,大多数人追求新版本,企业里更多需要的是稳定,我们应该根据企业标准去学习,企业要什么我们学什么
1.3 关于从 15 更新到 16 的说法#
-
Vmware15 不支持 Ubuntu20.04
更新版本并不会影响虚拟机的还原
2.1 先尝试 Ubuntu#
详见:Linux (Ubuntu) 零基础体验教学
PS:查看软件安装过执行内容,有助于学习
2.2 VMware Tools#
- 配置 Ubuntu 镜像源
- VMware Tools 安装
tar zxvf VMwareTools-10.3.22-15902021.tar.gz \
cd vmware-tools-distrib/
ls
sudu ./vmware-install.pl
2.3 Ubuntu 20.04 设置#
详见 2.1 视频链接
2.4 Linux 其他发行版本的安装指导#
- 商业发行版
- 社区发行版
2.5 下载指导#
- 从官网下载
3.1 Linux 究竟需要我们学习什么?——Linux 四大组成部分#
Linux 入门不是学 “Linux”,先体验各发行版 Linux,比较和其他系统的不同和相同点,Linux 究竟学习的是 Shell
Linux 操作系统四个部分
- Linux Kernel 内核
- GNU (“GNU’s Not Unix!”) 工具
- GUI Desktop 环境
- Application 应用
- PS:IT 术语,它并不是遵循通常的英语音标,而是专业术语
3.2 Linux 是命令还是图形界面?——GUI 是什么? 那 GNU 是什么东西?GNU/Linux 和 Linux 有什么区别?#
Linux 内核基于
-
GUI - 界面
-
GNU - 命令、系统工具
3.3 Linux 内核组成部分#
Linux Kernel
- 1. 硬件设备的管理
- 2. 软件程序 (系统)、操作软件
- 3. 系统内存
- 4. 文件管理
3.4 文件系统#
文件系统就是读、写标准
- Linux 中分区概念 ext ext2 ext3 ext4
- Windows 磁盘文件管理概念 FAT32 NTFS exFAT
3.5 GNU 核心: coreutils and shell#
GNU 组织
Unix 上具有的一些软件,Linux 内核本身没有,所以 GNU 他们模仿 Unix,为 Linux 写了一些必要的软件
GNU 核心 Coreutils
指原本在 Unix 上的一些命令和工具,被移植到了 Linux 上,供 Linux 使用的一套工具、coreutilities 软件包,包括:
-
用来处理文件的工具
-
用来操作文本的工具
-
用来管理进程的工具
-
GNU 核心 Shell
-
提供给用户使用的软件,用户拿它使用电脑,实现交互
-
命令行壳层提供一个命令行界面(CLI)
-
图像壳层提供一个图形用户界面(GUI)
3.6 Shell:CLI 和 GUI,命令和界面#
Shell 类型:bash,zsh,korn,tcsh,oh-my-zsh
3.7 GUI Desktop#
Xwindows,KDE,GNOME,Unity
结束语:经验介绍
重点在于 Shell
画思维图总结 Linux 操作系统关系
4.1 CLI 准备#
- CLI 相关设置,选择 Preferences
- Theme Variant 主题变换
Open new terminals in 打开一个新终端的方式,Tab 代表在同一窗口下创建新终端,Window 代表开一个新窗口打开新终端
New tab position 新终端位置,默认为上一次位置 - 快捷方式设置,Ctrl+Alt+T 打开新终端
4.2 CLI Terminal#
yeats@yeats-virtual-machine:~$
- 用户名 @机器名:当前所在目录 $ 表示等待用户输入
- ~ 表示用户 home 目录
/home
是存放所有用户文件的根目录
Settings 中 About 可以查看机器名与相关信息
4.3 搞定 Linux 命令参数,得心应手使用各类命令 —— 授之于渔 先拿 ls 开张#
ls
命令 用来显示目标列表,在 Linux 中是使用率较高的命令ls -l
的缩写就是 ll ,列出当前目录可见文件详细信息,输出的信息从左到右依次包括文件名、文件类型、权限、硬链接数、所有者名、组名、大小(byte)man
命令是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息
推荐:Linux 命令搜索
4.4 Linux 根目录,它们和 Windows 有什么区别#
- Windows 盘符,文件目录 \ 反斜线
- Linux 一切皆文件,文件目录 / 斜线
4.5 Linux 根目录解析,fhs 权威论文,搞定所有的发行版本文件夹分布#
/ linux
根目录/bin
二进制目录 GUN 工具 命令/cdrom
光盘/etc
系统配置文件/home
用户主目录/lib
库目录 存放库文件/lost+found
当系统发生错误时,将一些遗失的片段放置在这个目录下/mnt
挂载(外在的设备和电脑进行连接)目录/proc
伪文件系统/run
运行目录/snap
包管理,软件包安装管理方式/tmp
临时目录/var
可变目录/boot
启动目录/dev
设备目录/media
媒体目录/opt
可选目录/root
root 用户的主目录 管理员/sbin
系统二进制目录,GNU 高级管理员使用的命令或工具/srv
服务目录/usr
用户二进制目录,GNU 工具- 详见:FHS 文件系统层级标准
4.6 cd 命令#
cd
进入用户主目录cd..
切换到上一层cd –
返回到上一次的工作目录。
4.7 Ctrl + C? 拉到吧,在 Linux 上可不是复制#
- Ctrl+c (kill foreground process) 发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行
- Ctrl+l 清屏
4.8 绝对路径#
- 全路径 D:\Study\Frank_FuckPPT\Linux
4.9 相对路径#
- 不全路径 \Frank_FuckPPT\Linux
4.10 Linux 上的路径与 Windows 上的路径#
gedit /Doucument/doc/1.txt
操作根目录 绝对路径gedit ~/Document/doc/1.txt
当前目录 相对路径gedit ./Document/doc/1.txt
当前目录 相对路径gedit Document/doc/1.txt
当前目录 相对路径
4.11 如何练习?经验课#
- 单点符号。当前文件
- 双点符号.. 当前目录的父目录
4.12 ls 进阶用法:文件夹下各种匹配过滤符号#
*
号替代多个符号?
号替代一个符号-a,,--all
列出目录中所有文件,包括以 “.” 开头的文件-l, --format=long,--format=verbose
除每个文件名外,增加显示文件类型、权限、硬链接数等信息-F,--classify, --file-type
在每个文件名后附上一个字符以说明该文件的类型
4.13 touch 命令#
touch
命令 两个功能
- 一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式)
- 二是用来创建新的空文件
4.14 cp 命令#
cp
命令 将源文件或目录复制到目标文件或目录中- 源文件:制定源文件列表。默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用 - R 选项
- 目标文件:指定目标文件。当 “源文件” 为多个文件时,要求 “目标文件” 为指定的目录
cp
你想复制的文件? 你想复制到哪?- -i 覆盖既有文件之前先询问用户
-R/r
递归处理,将指定目录下的所有文件与子目录一并处理
4.15 cp 递归练习技巧#
pwd 显示当前工作目录
cp -R ./*.java ~/Documents/temp/
4.16 Linux 终端光标移动技巧#
- Tab 自动补全
- Ctrl + E 跳到行尾
- Ctrl + B 光标向左移动
- Ctrl + H 删除光标前一个字符 相当于退格
- Ctrl + T 把光标前一个字符往后移动
- Ctrl + R 搜索之前用过的命令
- Ctrl + W 删除光标前一个单词
- Ctrl + U 删掉光标前面的内容
- Ctrl + K 删掉光标后面的内容
4.17 lnk 链接文件的介绍#
-
.lnk 快捷方式
-
Linux 链接文件
-
1. 符号链接 (软链接)
指快捷方式 原来的文件 / 文件夹必须存在
-
2. 硬链接
指副本 原来的文件 / 文件夹必须存在
4.18 符号链接和硬链接#
ln
命令 用来为文件创建链接,链接类型分为硬链接和符号链接两种,默认的链接类型是硬链接。如果要创建符号链接必须使用 "-s" 选项ln
原文件名 链接的文件名ls -l
查看- 软链接:有指向,是一个单独的文件,不同介质
- 硬链接:无指向,同一介质
- 软链接复制的是链接文件
4.19 注意事项#
- 符号链接 Symbolic links
- 软链接 Soft links
4.20 mv 命令#
- mv 命令 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
- 做重命名,mv 重命名谁 命名成什么
4.20 移动和骚操作#
- 做移动,
mv
移动的文件 移动到的目录 - 输入完之后,
cd !$
- !$ 是列出并执行你的命令历史里面最近的一条记录
4.21 rm—— 最佳年度删库跑路#
sudo rm -rf /*
该命令极度危险rm
命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变rm -i
有提示rm -i -rf
无提示- 注意: linux 没有回收站
4.22 创建文件夹以及删除文件夹#
mkdir
用来创建目录rmdir
用来删除空目录
4.23 文件类型#
file
用来探测给定文件的类型- Windows 文本是 txt
- linux 文本是 text
4.24 cat ,more ,less#
cat
连接多个文件并打印到标准输出,适用于短文本-n, --number
对所有行编号,从 1 开始编号more
显示文件内容,每次显示一,以全屏方式显示- b 上一页 space 下一页 q 退出
less
分屏上下翻页浏览文件内容less
命令允许用户向前或向后浏览文件,而more
命令只能向前浏览。- 用
less
命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键 - 浏览文件中输入 / 用于搜索
4.25 tail 和 head 命令#
-
tail
在屏幕上显示指定文件的末尾若干行tail -n 2 demo.c
-
head 显示文件的开头部分
head -n 2 demo.c
5.1 任务管理器#
- 进程、性能、用户、服务
- 服务:监测用户行为,为用户服务
5.2 ps 和 top 命令#
top
可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具ps
(process status) linux 最复杂的命令之一,是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的ps axo pid,comm,pcpu
# 查看进程的 PID、名称以及 CPU 占用率ps -aux | grep named
# 查看 named 进程详细信息
5.3 kill 命令#
配合ps -aux | grep named
# 查看 named 进程详细信息
kill pid
杀死进程
5.4 挂载的含义#
详见:linux 挂载的作用 (https://blog.csdn.net/qq_35583154/article/details/86569903)
插入新硬盘,分了新磁盘区 sdb1,但它现在还不属于 /, 把新硬盘的区 sdb1 挂载到工作目录的 / Share / 文件夹下,之后访问这个 / Share / 文件夹就相当于访问这个硬盘的 sdb1 分区了,对 / Share / 的任何操作,都相当于对 sdb1 里文件的操作
5.5 mount#
mount
用于挂载 Linux 系统外的文件/mnt
为自动挂载点sudo fdisk -l
查看硬盘及分区信息sudo mount /dev/sdc1 /mnt
sudo umount /mnt
- 自动挂载的目录不能卸载
5.5 挂载的意义 —— 尝试使用 U 盘?自动播放黑客恶意?#
- 企业里不自动挂载,防止恶意播放脚本 auto 病毒
5.6 安卓设备连接挂载#
- 安卓链接协议 (SMB) 挂载路径
/run/suer/1000/gvfs
5.7 df 和 du#
df
用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息h
或--human-readable
:以可读性较高的方式来显示信息du
也是查看使用空间的,但是与df
命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和 df 命令有一些区别的
5.8 sort 命令#
sort
对文本文件中所有行进行排序- 默认对每一行第一个字符排序,并展示出来,并不会改变原来的文件
-n
,--numeric-sort
根据数字排序-M
,--month-sort
按照非月份、一月、十二月的顺序排序-r
,--reverse
将结果倒序排列
5.9 grep 基础认识、搜索文件#
-
grep
(global search regular expression(RE) and print out theline,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
-
grep 543 ~/Templates/1.txt
5.10 打包、压缩、归档、解压缩 它们究竟区别在哪?#
tar
打包、压缩tar -cvf 1.tar 1.txt
仅打包,不压缩tar -zcvf 1.tar.gz 1.txt
打包后,以 gzip 压缩tar -zxvf /opt/soft/test/1.tar.gz
将 tar 包解压缩
6.1 父子 shell 的概念#
- bash
- ps-f
- ps –forest
6.2 分号在命令里有什么作用#
- 命令之间带分号 ; 依次执行
- 创建一个子 shell 去执行
6.3 sleep 和 jobs#
-
sleep
将目前动作延迟一段时间 ,后面可接s
为秒,m
为 分钟,h
为小时,d
为日数挂在后台,如果要干掉,则用
kill
命令 -
jobs
显示作业的状态,-l
在作业信息中额外的列出 PID
6.4 后台#
- 后台执行
tar -zxvf ……;&
6.5 coproc 协程#
- Liunx 协程处理命令。协程可以同时做两件事。在后台生成一个子 shell,并在子 shell 中执行命令
coproc sleep 10
coproc frank_av{ sleep 10; sleep 300;}
- 一定要分号结尾,大括号内空格
6.6 外部命令和内建命令#
- Shell 执行的命令可以分为内建命令(built-in)和外部命令(external) 前者是构建在 shell 内部
- 后者是一个独立的文件(可以是二进制文件,也可以是一个脚本) 内建命令由当前 shell 本身来执行,例如 echo, cd 等等
- 外部命令的执行 shell 进程会 fork 一个子进程,父进程随后挂起,然后在子进程中 exec 加载外部文件,子进程返回后,父进程才继续执行
6.7 alias 别名#
alias
定义或显示别名。type
显示指定命令的类型。alias li=’ls -li’
- 但是关闭当前 shell 就不能用了
7.1 什么是环境变量?彻底搞清楚究竟什么是环境变量!!!!!#
- 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等
- 文件夹写入的环境变量,意味则可以在任何位置访问该文件夹,相当于告诉系统这个目录在哪里
7.2 全局环境变量和局部环境变量#
- windows: 系统变量与用户变量
- linux: 全局环境变量和局部环境变量
- 全局环境变量
printenv
printenv USER
echo $USER
cd $HOME
7.3 用户和局部变量的定义#
- 局部变量只能在当前 shell 执行,子 shell 或者退出后就不能用了
- 注意 定义局部变量不要大写
- 全局变量用大写,下划线命名法
7.4 定义全局变量#
export
为 shell 变量或函数设置导出属性。- 可以子 shell 里执行,但关闭后仍失效
7.5 默认的环境变量#
set
7.6 为啥要用环境变量#
- 配置开发环境需要使用
- 临时环境变量
PATH=$PATH:/home/yeats/Templates/
7.7 永久配置环境变量?#
-
启动文件:开机的时候默认执行的环境变量
-
bash shell
-
1 登录 shell
-
2 非登录就打开 shell
-
3 运行脚本非交互 shell
-
cat /etc/profile
-
~/.bashrc
-
~/.bash_profile
-
~/.profile
-
~/.bash_login
-
cat bashrc
-
加入全局环境变量 (需学习 vim)
8.1 PMS 系统和软件安装的介绍#
- PMS Package Management System
- 解决工具依赖问题
apt install
apt-get install
apt-cache
aptitude(已淘汰)
8.2 安装、更新、卸载#
apt -h
- 更新
sudo apt update
- 升级
sudo apt upgrade
- 卸载
sudo apt remove oneko
8.3 其他发行版本?#
-
server 版本配置镜像源
-
sudo vim /etc/apt/source.list
-
修改成国内阿里云库:
8.4 安装第三方软件案例:例如 github 开源软件的指导#
9.1 用户权限的含义和作用#
- 用户与权限
- 不可能让所有人有所有的权限 - 不安全
- 避免被入侵
- 用户 ID UID
- 系统用户 UID<500
cat /etc/passwd
sudo cat /etc/shadow
9.2 创建、删除、更改用户#
- 创建
sudo useradd user1
- 删除
sudo userdel user1
- 更改密码
sudo passwd user1
chage
修改帐号和密码的有效期限
9.3 group#
-
linux 组 groups
目的 :共享资源的权限
-
tail /etc/group
-
ubuntu 不允许把所有用户纳入一个组,而是每个用户都有一个单独的组
-
sudo groupadd groupfrank
-
sudo groupdel groupfrank
9.4 文件、文件夹权限#
rwx
文件所有者(Owner)组创始人的权限
r-x
用户组(Group)组下属成员权限
r-x
其它用户(Other Users)其它组成员权限
详见:Linux chmod 命令(Linux chmod 命令 | 菜鸟教程 (runoob.com))
9.5 chmod 命令#
usermod
命令 用于修改用户的基本信息。usermod
命令不允许你改变正在线上的使用者帐号名称。- 当
usermod
命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序
附上:vi/vim 键盘图#
10.1 编辑器简单介绍:vim 编辑器之神; emac 神之编辑器#
- emacs - 神之编辑器
- vim - 编辑器之神
- Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器
- vi 编辑器通常被简称为 vi,而 vi 又是 visual editor 的简称 。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的
- Vim 是 vi 的加强版,比 vi 更容易使用。vi 的命令几乎全部都可以在 vim 上
10.2 vim 的简单使用方式#
- 安装 vim
sudo apt install vim
vim 工作模式,国外一般认为两种模式#
-
普通模式 (命令操作模式):操作文件
-
插入模式:编辑
-
编辑模式到普通模式:ESC
国内一般认为三种模式#
-
一般命令模式:简称一般模式,也是最先进入的工作模式,输入 vi + 文件名可直接进入一般命令模式,在此模式下可进行文本内容的查看、复制、删除、替换等功 能。当不能输入相关文本内容
-
编辑模式:在一般模式下,输入 i 或 o 或 a 进入编辑模式,在此模式下可输入文本内 容。当输入 i 时,工作界面如图所示,只有此时状态才可以输入文件内容。输 入完成后,可单击 ESC 键退出编辑状态,进入一般模式
-
命令行模式:在一般模式下,输入:或 / 或?进入命令行模式,在此模式下可输入相关命令当输入:wq 此时命令表示保存退出命令,单击回车键,自动保存文件,并退 出 vi 编辑器或者单击 ESC 键,重新返回一般模式
三种工作模式关系如图所示#
vim 编辑器的退出,一般分三种情况#
:q
表示不保存退出:wq
保存退出:q!
强制退出,此时也不保存文件
10.3 移动光标#
- 上:
k
- 下:
j
- 左:
h
- 右:
l
- 下一行:
b
- 上一行:
w
- 查找上一处字符:
N
- 查找下一处字符:
n
10.4 翻页#
- 上翻页 (BACKWARD):
ctrl+B
- 下翻页 (FORWARD):
ctrl+F
- 上滚:
ctrl+E
- 下滚:
ctrl+Y
- 移动到最后一行:
G 或者shift+g
- 移动到第一行:
gg
10.5 不同方式编辑文本、跳跃单词操作技巧#
i
光标位置的前面插入a
光标位置后面的插入o
直接 enter 到下一行x
删除光标所在字符dd
删除整个一行u
撤销dw
移除当前所在光标往后到单词b
跳跃单词首字母e
跳跃单词最后w
跳跃单词 先跳跃到单词首字母,然后跳跃到单词最后shift+w
;shift+b
大跳
10.6 跳跃行首行尾技巧#
shift+6
或者0
跳跃到本行到开头shift+4
跳跃到本行末尾
10.7 大括号跳跃函数段落技巧#
{}
跳跃大括号
10.8 vim 复制剪切粘贴#
p
粘贴yw
复制一个单词y$
从当前开始往后复制到行末尾
10.9 Visual 可视化模式#
v
选择文本V
选择行v G
全选ctrl+v
矩阵选择o
切换文本首尾vaw
快速选择单词vab
包括括号vaB
包括大括号va<
包括尖括号
10.10 视图模式其它技巧#
v shift+<
往左缩进v shift+>
往右缩进shift+~
或者shift+u shift+U
大小写转换
10.11 查找和替换#
- 查找
/
- 按 n 查找下一个
:s /const/let/g
一行 const 替换成 let:%s /const/let/g
所有 const 替换成 letset number
临时显示行号:9,15s /const/let/g
9-15 行 const 替换成 let:%s /const/let/gc
有提示的替换
10.12 vim 的基础配置#
touch .vimrc
vim .vimrc
将以下代码写入.vimrc 中
set syntax=on
set tabstop=4
set softtabstop=4
set number
set enc=utf-8
set showmatch
- source .vimrc