Linux Note
零 Linux初步认识
0.1 操作系统的认识
Operating System,缩写:OS,是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序,同时也是计算机系统的内核与基石。
大白话来讲,就是 鼠标能点击,键盘能输入,可以阅读、看电影,还可以扩展安装一些软件等人机交互 的东西。
世界上目前流行的电脑系统:
1.Windows
—— 微软 —— 比尔·盖茨
2.Linux
—— 林纳斯
2.Unix
(可以看作Linux的前身) —— 汤普逊和里奇(C语言创始人)
0.2 Linux操作系统认识及开源的提出
开源(开放源代码):我写的代码公开 公众于世界——非商业行为 开源精神即共享精神
a.苹果IOS
系统 不开源 商业行为
b.安卓系统(核心:Linux)—>开源 -->mi oppo vivo huawei
所以经常会看到基于Android xxx
的xx(例MIUI
)
真正的安卓系统 Google Pixel
Linux -> Ubuntu
、CentOS
、Red Hat
、Kali
……
Ubuntu
面向个人用户 CentOS
面向公司企业 Kali
黑客使用
需要注意的是,一些企业会使用定制的Linux系统
开源一定免费吗?
NO!开源不一定免费。举例:Red Hat被一些公司如福特或某些银行使用;虽说是开源的且普通用户是免费的,但是如果是企业用或进行商业行为,就要收费。
0.3 Linux用途及各种发行版
Linux是一种自由和开放源码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布,再加上用户空间的应用程序之后,就成为了Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU 通用公共许可证(GPL
),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数Linux系统还包括像提供GUI的X Window之类的程序。
(Windows就是典型的GUI(Graph User Interface,图形用户界面))
Linux严格来说是单指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具。如今Linux常用来指基于Linux的完整操作系统,内核则改以Linux内核称之。(吃核桃<——>吃核桃仁)
0.3.1 用途
Linux可以运行在服务器和其他大型平台之上,如大型计算机和超级计算机。世界上500个最快的超级计算机已100%运行Linux发行版或变种。(企业要求Linux的原因)
Linux也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。
0.3.2 主流Linux发布版
包括:
Debian(及其派生版本Ubuntu、Linux Mint、[Kali][https://zh.wikipedia.org/wiki/Kali_Linux])、
Fedora(及其相关版本Red Hat Enterprise Linux、[CentOS][https://zh.wikipedia.org/wiki/CentOS]、Moblin )和
openSUSE(及其相关版本Tumbleweed、Leap、 MicroOS)等。
一 VMware
虚拟机与Ubuntu
安装Linux系统基本上分3种:
1.实体机 CPU等硬件不支持 ×
2.双系统 ×
3.虚拟机 √
关于软件版本:大多数人往往追求”新“,但在企业中总是追求”稳“。
1.1 VMware
虚拟机
1.2 Ubuntu
的安装
1.3 VMwareTools
1.4 Ubuntu
的一些配置
1.5 其他发行版下载与安装
(详情请看视频)
二 步入Linux的世界
2.1 Linux究竟要学什么——四大组成部分
“ Linux入门不是学‘Linux’ ”:
1.体验:比较和其他系统的不同和相同点;
2.Linux GUI —> Shell
Linux操作系统的四个部分:
1.Linux kernel 内核
2.GNU工具
3.GUI Desktop环境
4.Application 应用
Linux真正的名字 GNU/Linux
2.2 GUI和GNU——Linux系统组成
2.3 Linux内核组成部分
Linux内核:操作系统
-
硬件设备(键盘、鼠标等) 管理使用
-
软件程序(系统)——>操作软件 就是管理进程
-
系统内存(物理内存/虚拟内存?)
-
文件管理 保存、删除、修改文件等
重点:文件系统
不同的文件系统会有不同的读、写标准
Windows文件系统类型:
FAT32 NTFS exFAT
Linux文件系统类型:
Linux系统核心可以支持十多种文件系统类型:Btrfs、JFS、ReiserFS、exFAT、ext、ext2、ext3、ext4、XFS、ISO 9660、Minix、MSDOS、UMSDOS、VFAT、NTFS(Linux Kernel内置的NTFS驱动程序,写入功能不稳定)、HPFS、NFS、SMB、SysV、PROC等。
2.4 GNU核心——coreutils and shell
2.4.0 GNU组织
Unix上具有的一些软件,Linux内核本身没有,所以GNU他们模仿Unix,为Linux写了一些必要的软件
2.4.1 GNU核心:
原本在Unix上的一些命令和工具,被模仿到了Linux上。
供Linux使用的这套工具:coreutils coreutilities软件包
(1)用来处理文件的工具
(2)用来操作文本的工具
(3)用来管理进程的工具
2.4.2 shell
提供给用户使用的软件:用户拿它来使用电脑,与电脑交互。
命令行壳层提供一个命令行界面(CLI);
而图形壳层提供一个图形用户界面(GUI)
Linux shell -> CLI (Command-Line Interface)
CLI shell
bash shell 基础shell base
不同的Unix shell:zsh(包含后三个) ash korn tcsh
Mac OS -> Unix 专业人选
2.5 GUI Desktop —— XW KDE GNOME Unity
GUI:
三 Shell 命令
3.1 CLI准备
Ctrl+Alt+T: 打开终端
一些配置:自己摸索
关于字体:如果不想要默认字体,那你一定要选等宽字体
ls:显示当前目录文件夹,隐藏要+-a
,中间用空格
3.2 打开CLI终端
设置->About->device可修改计算机名
例:chaos@chaos-virtual-machine:~$
-
用户名@机器名:当前所在目录$
- 当前用户home目录
$ 等待用户输入…
3.3 Linux命令参数,自由使用命令
ll(缩写):ls -a -l
bash手册:man 命令
例如:man ls
显示ls命令是什么意思
3.4 Linux根目录
Windows 分盘 C D E…
U盘,H…
盘符:路径
”Linux一切皆文件“
cd / / 目录:Linux最根目录
cd … 返回上一目录
\ 反斜线 windows
/ 正斜线 Linux
3.4.0 根目录解析
/ 目录:Linux最根目录
/bin 二进制目录 GNU的工具 ls等系统自带的命令
存放许多用户级
/cdrom
/etc 系统配置文件
/home 主目录,显示所有用户目录
/lib 库目录 一些依赖,必须需要的
/lost+found …断电等突发情况丢失的文件会在这里
/mnt 挂载目录,U盘 挂载:外在设备和电脑进行连接
/proc 虚拟文件,伪文件系统
/run 临时的运行目录
/snap Ubuntu的产物
/tmp 临时目录(temp)
/var 可变目录 存放log等一些经常变化的文件/目录
/boot 启动目录
/dev 设备目录 设备管理器
/media 媒体目录 MP3等自动播放的 与/mnt的区别
/opt 可选目录 第三方的一些软件包和数据
/root root用户的主目录 相当于管理员 sudo rm -rf/*删库命令
/sbin 系统二进制目录,GNU高级管理员使用的命令工具
/srv 服务命令 本地服务
/usr 本质上,用户二进制目录,GNU工具,/usr/bin/ =>自己安装的软件或命令存放之处
FHS:文件系统层级标准=》Linux常见的标准
官网:Filesystem Hierarchy Standard
3.5 cd
命令
cd ~
或者cd
=> 进入用户目录
cd ..
=> 返回上一级目录 .
=> 当前目录
cd ../..
=> 返回上2级目录
cd !$
=> 把上个命令的参数作为cd参数使用
pwd
=> 显示当前目录
3.6 Ctrl+C
在linux是啥
不是复制粘贴,而是在命令执行过程之中要强制退出 ==》Ctrl+C
实际的复制粘贴是:Ctrl+Shift+C/V
Linux没有撤销的概念;
3.7 文件目录
3.7.1绝对路径
全的路径。
Windows:从盘符开始…… ==》盘符:\文件夹\…\文件
3.7.2 相对路径
不全的路径。
⭐前提:必须知道你在哪?并以此相对于你,你的目标在哪?
3.7.3 Linux上的路径 /……/
gedit 文件路径
==》 打开文件
在使用相对路径时注意不要在前面加/
,如果加了,Linux会认为这是绝对路径,会出错。如果执意要加,请在前面加 ./
而不是 /
,这意思是在当前目录的当前文件夹下。
单点符.
是当前文件夹
双点符..
是当前文件的父目录
3.8 ⭐如何练习
ls 路径
ll 路径
这两个只是看在该路径下的文件(夹),并不进入。
自己来回切换
3.9 ls进阶+匹配过滤符号
ls -F -R -A -S
ls -alF
一般把小写的属性放前边
文件扩展匹配符:
例:过滤:ls -l fhs-2.3_*
,
*
可替代多个字符
?
可替代一个字符
例:ls *.pdf
通配符:
完全使用指定的字符范围进行匹配
例:如果我有fuck.txt
fack.txt
fcck.txt
fbck.txt
fzck.txt
,
ls -l f[a-x]ck.txt
结果:除了fzck.txt
都列了出来
ls -l f[!a-x]ck.txt
结果:列出了fzck.txt
元字符通配符 []
3.10 文件操作命令
我们以上所讲的命令都是对文件夹进行操作,接下来,我们将学习文件的操作的命令。
组合命令 cd .. && ls -alF
&&
==> 并且
3.10.1 touch创建文件
创建文件 touch命令
有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
3.10.2 cp 复制文件(文件夹)
将源文件或目录复制到目标文件或目录中cp命令
文件
cp 源文件 目标文件
大白话的说 :cp ①你想复制的文件 ②你想复制到哪
若②没有,则会创建②再进行复制;
若②有,则会覆盖②。所以一定要使用cp -i 1.txt 2.txt
会进行关于是否覆盖的提醒。若覆盖掉,则新的文件时间会更新。
文件夹
-r
将此目录和其下所有文件都复制过来
cp命令十分强大,有四种方式:
cp 具体文件 具体文件
cp 绝对/相对路径 绝对/相对路径
cp 具体文件 绝对/相对路径
cp 绝对/相对目录 具体文件
练习cp递归和小技巧
结合通配符*
例如:cp -R ./*.java ~/Documents/temp/
就是把当前目录下所有以java
为后缀的文件复制到temp
文件夹下
cd -
==》切换到上一次操作的目录的命令 会首先显示要切换到的目标目录,然后再进入
3.11 终端光标移动技巧
Tab键
制表符 自动补全Ctrl+L
快捷键 类似于clearCtrl+方向左右键
跳跃Linux的命令单词这或许就是C语言用下划线命名法的一部分原因Ctrl+A
直接跳到命令开头Ctrl+E
直接跳到命令结尾Ctrl+H
退格键Ctrl+B
光标往前移 代替左键Ctrl+F
往后移Ctrl+T
一直把光标前面的字符向后移Ctrl+R
搜索之前用过的命令Ctrl+U
光标之前一键删除Ctrl+K
光标之后一键删除Ctrl+P
类似上键Ctrl+N
类似下键Ctrl+K
回车
3.12 .lnk链接文件
Windows中快捷方式(.lnk)
Linux中有无快捷方式?
链接文件(link file)
3.12.1 符号链接(软链接,symbolic link)
==》 快捷方式,本身是一个文件
实际当中,Windows不仅exe等程序可以添加快捷方式,文件夹也可以。
学过C语言的都可能会联想到指针,他就像一个链子一样连接。Linux当中也类似。
符号链接是一个单独的文件,它指向一个实在的目录。
其他:我们都知道空指针,若存在快捷方式,快捷方式所连接的原文件不存在,就会报错。所以,原来的文件/文件夹必须存在。
ln -s 文件/文件夹
(-s
就是symbolic
)
ls -l
会看到 ->
,指针啊!
软链接创建出来的文件大小与原文件不同,因为它是单独的文件;而硬链接与原文件相同,就直接是副本。
3.12.2 硬链接
有点像Windows中创建副本。
原来的文件/文件夹 必须存在。
ln 文件/文件夹
会发现没有箭头指向了
那我们用硬链接还是软链接?
并无讲究,一般而言,用软链接:因为很清楚看出指向。
⭐区别:
硬链接只能在同一个硬盘里创建,不能放在别的硬盘里。
不同存储媒体之间创建链接只能用软链接。
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
注意:
1.如果我们用cp命令复制链接文件会出现什么结果?
报错,不要复制链接文件!就像把快捷方式发给朋友。
一个文件可以有多个快捷方式,但不要创建软链接(快捷方式)的快捷方式,会产生混乱链接。
其他事项:
符号链接(软链接)
符号链接 =》Symbolic links
软链接 =》Soft links
3.13 mv
mv是move的缩写,既可以移动也可以重命名
3.13.1 重命名
mv 文件旧名 文件新名
:重命名
3.14.2 移动及骚操作
mv 文件(夹) 目录
:移动
骚操作:当你移动过后,先不慌按 ls
,你无非是想看它是否移动过去了;cd !$
直接到你的目标目录中了,cd !$
意思是我要执行上一条命令的最后一个路径,如果在这之前你执行了ls
就不能再用了。
3.14 rm 删库跑路喽
rm
是removing=》删除
rm删除的文件(夹)没有回收站!
sudo rm -rf /*
危险!!!
根目录下所有都删了,Linux直接炸了,芜湖!
-r
遍历 -f
强制删除
rm -i
会提示你确定要删除吗 ?
rm
命令一定要用-i
;-rf
不要用,太危险了,除非你是真的要销毁。所以一定要-i
。
小心误操作呀!
后面我们可以学习有其他项目替代它,GitHub上的。
使用su
进入管理员身份。
3.15 创建/删除 文件夹
上面大都在讲文件的操作,这里我们讲讲文件夹。
首先有这样的认识,Linux中目录就是文件夹。
上面的操作cp rm mv既可以对文件也可对文件夹
touch
创建文件
mkdir
创建文件夹 ==>(make directories)
mkdir 文件夹名
-p
可以创建父目录 就是多层目录
rmdir
删除空文件夹
只删除空目录,所以这个命令基本上废了;因此一般情况下我闷还是使用rm
命令。
3.16 文件类型
音频格式 flac wac mp3
图片 png jpg
视频 avi mp4
那Linux中怎么查看文件类型呢?
file
命令
用来探测所给文件类型
text格式
directory格式
3.17 cat,more,less查看文件命令
cat常用于体积较小的文件
cat -A
用字符替代回车、Tab键等
more
字母b上一页 空格下一页 q彻底退出
less
最实用
关于命令的学习,请使用Linux命令搜索引擎查看文档,全面认识。
但一般情况下,上面三个都不常用。
3.18 tail 和 head
tail
指定文件末尾多少行
tail -n 行数 文件
显示行数,常查看log文件
head
同理。