步入Linux的现代方法
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安装
1 | tar zxvf VMwareTools-10.3.22-15902021.tar.gz \ |
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
1 | 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 显示当前工作目录
1 | 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
在屏幕上显示指定文件的末尾若干行1
tail -n 2 demo.c
head显示文件的开头部分
1
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中
1 | set syntax=on |
- source .vimrc