Linux基础
1 操作系统(科普)
1.1 科普
1.2 不同应用领域的主流操作系统
1.2.1 桌面操作系统
- Windows系列—用户群体大,安全性不好,稳定性不好
- masOS—适合于开发人员
- Linux—应用软件少,更加适合于服务器和嵌入式领域
1.2.2 服务器操作系统—远程维护
- Linux—安全,稳定,免费,占有率高
- Windows Server—付费,占有率低
1.2.3 嵌入式操作系统
- Linux
1.2.4 移动设备操作系统
- iOS
- Android(基于Linux)
1.3 虚拟机
就是一个软件,辅助我们操作系统
1.4 操作系统的发展史(科普)
1.4.1 Unix
1.4.2 Minux
1.4.3 Linux
1.5 Linux内核及发行版
1.5.1 Linux内核版本
- **内核(kernel)**是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在逻辑设备与应用程序间的抽象层;
- Linux内核版本又分为稳定版和开发板,两种版本相互关联,相互循环;
- 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序;
- 开发版:由于要实验各种解决方案,所以变化很快;
!!发行版本多个!!内核版本只有一个!!
1.5.2 Linux发行版
- **Linux发行版(也被叫做GNU/Linux发行版)**通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件;
1.6 Linux系统下的文件目录结构
1.6.1 单用户操作系统和多用户操作系统
- 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源;
- Windows XP之前的版本都是单用户操作系统
- 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源;
- Unix和Linux的设计初衷就是多用户操作系统;
1.6.2 Windows和Linux的文件系统区别
(1)Wnidows下的文件系统
(2)Linux下的文件系统,没有盘符概念
上图中,多个用户(theima/python/laowang)是多个用户,可以同时都在home下进行自己的操作,但python下自己的文件是别的用户是不可以访问的;
- Ubantu中没有盘符,因此用/表示根目录;
1.6.3 Linux主要目录速查表
- 需要注意的是,下图所有文件都是操作系统的文件,随意改动删除都会造成操作系统出现问题,所以,尽量以后文件都在home文件夹中操作;
2 常用Linux命令的基本使用
- 学习Linux终端命令的原因
- Linux刚面世时并没有图形界面,所有操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等;
- 职场中,大量的服务器维护工作都是远程通过SSH客户端完成没有图形界面,所有维护工作都需要通过命令来完成;
- 常用Linux命令就10多个而已,其他再百度;
2.1 Linux命令
2.1.1 常用Linux命令的基本使用
-
放大:ctrl+shift+=
-
缩小:ctrl±
-
rm是删除文件,删除目录需要额外操作;
2.1.2 Linxu终端命令格式—[ ]可选
-
命令和选项之间,选项和参数之间要有空格;
-
查阅命令帮助信息:man是mannual的简称
- –help:command --help;
- man: man command;
2.2 文件和目录常用命令
2.2.1 目标
- 查看目录内容
- ls
- 切换目录
- cd
- 创建和删除操作
- touch
- rm
- mkdir
- 拷贝和移动文件
- cp
- mv
- 查看文件内容
- cat
- more
- grep
- 其他
- echo
- 重定向>和>>
- 管道l
2.2.2 终端使用技巧
(1)自动补全
- 在敲出文件/目录/命令的前几个字幕之后,tab键会自动补全;
- 不能确定时,两次tab,系统会提示可能存在的命令;
(2)曾经使用过的命令
- 按上/下光标键可以在曾经使用过的命令之间来回切换;
- 如果想要退出选择,并不想执行当前选中的命令,可以按ctrl+c;
2.2.3 ls命令说明
-
ls是英文单词list的简写,列出目录内容,用户最常用命令之一,类似于DOS下的dir命令;
-
Linux下的文件和目录的特点
-
Linux文件或者目录名称最长可以有256个字符;
-
以 . 开头的文件尾隐藏文件,需要用-a参数才能显示;
-
.代表当前目录
-
…代表上一级目录,cd …就可以返回上一级目录
-
-
ls常用选项 -h要配合-l一起使用,不能单独使用-h
-
可以将选项合在一起,例如:ls -lha
-
ls通配符的使用
通配符 | 含义 |
---|---|
***** | 代表任意个数个字符,ls *1.txt; ls 1 *, ls * 3 * |
? | 代表任意一个字符,至少1个,ls 1?1.txt |
[] | 表示可以匹配字符组中的任意一个, |
[abc] | 匹配a\b\c中的任意一个,ls [12345]23.txt; |
[a-f] | 匹配从a到f范围内的任意一个字符,ls [1-5]23.txt |
2.2.4 cd命令说明
1、cd
- cd是change directory的简写,更改当前的工作目录;
- 注意:Linux所有的目录和文件名都是大小写敏感的
2、相对路径和绝对路径
- 相对路径:在输入路径时,最前面不是/或者~,表示相对当前目录所在的目录位置;
- 绝对路径:在输入路径时,最前面的是/或者~,表示从根目录/家目录开始的具体目录位置;
2.2.5 创建和删除操作touch,mkdir,rm
1、touch
- 创建文件或修改文件时间
- 文件不存在,就创建一个空白文件
- 文件已经存在,修改文件的末次修改日期
2、mkdir
- 创建一个新的目录
- 注意:在Linux中同一个目录下,文件和目录不可以同名!
3、rm
-
删除文件或目录
-
注意:rm会直接从磁盘上删除文件或目录,所以要谨慎使用!
-
这条指令会删除当前目录下的所有文件或目录!
2.2.6 拷贝或移动文件tree、cp、mv
1、tree
-
tree命令可以以树状图列出文件目录结构
-
~表示家目录,/表示根目录,.表示隐藏
2、cp
- cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令;
- 如果文件名不发生改变,可以只指定目标路径;
3、mv
-
mv命令用来移动文件或目录,也可以给文件或目录重命名
-
**重命名:**与目标文件路径相同,就不执行移动,而是重命名;
-
注意:在终端命令行中对文件的操作不可以回撤,因此-i很重要
2.2.7 文件内容命令cat、more、grep
1、cat
-
cat命令可以用来查看文件内容,创建文件,文件合并,追加文件内容等功能;
-
cat会一次显示所有的内容,适合查看内容较少的文本文件;
2、more -
more命令可以用于分屏显示文件内容,每次只显示一页内容;
-
适合于查看内容较多的文本文件;
3、grep
- Linux系统中grep命令是一种强大的文本搜索工具;
grep
允许对文本文件进行模式查找,所谓模式查找就是正则表达式;
- 常用的两种模式查找
2.2.8 其他命令echo、>,>>,|
1、echo文字内容
echo
会在终端中显示参数指定的文字,通常会和重定向联合使用;
- 使用echo可以直接在创建新文件的同时,指定文件内容
2、重定向>和>>
- Linux允许将命令执行结构重定向到一个文件
- 重定向:将本应该显示在终端上的内容输出/追加到指定文件中
其中 >
表示输出,会覆盖文件原有内容>>
表示追加,会将内容追加到已有文件的末尾
3、管道|
- Linux允许将一个命令的输出可以通过管道作为另一个命令的输入
常见的管道命令有:
more
:分屏显示内容;grep
:在命令执行结果的基础上查询指定的文本;
2.3 远程管理常用命令
2.3.1 关机/重启/shutdown
- shutdown命令可以安全关闭或者重新启动系统;
选项 | 含义 |
---|---|
-r | 重新启动 |
- 不指定选项和参数,默认表示1分之后关闭电脑;
- 远程维护服务器时,最好不要关闭系统,而应该重新启动系统;
2.3.2 查看或配置网卡信息ifconfig、ping
1、网卡:
- 网卡是一个专门负责网络通讯的硬件设备;
- IP地址是设置在网卡上的地址信息;
- 我们可以把电脑比作电话,网卡相当于sim卡,IP地址相当于电话号码;
2、IP地址
- 每台联网的电脑都有IP地址,是保证电脑之间正常通讯的重要设置
- 注意:每台电脑的IP地址不能相同,否则会出现IP地址冲突,并且没有办法正常通讯;
3、ifconfig
-
ifconfig
可以查看/配置计算机当前的网卡配置信息
-
一台计算机中可能有一个物理网卡和多个虚拟网卡,在Linux中物理网卡的名字通常以
ensXX
表示; -
127.0.0.1
被称为本地回环/环回地址,一般用来测试本地网卡是否正常;
4、ping
ping
一般用来检测当前计算机到目标计算机之间的网络是否畅通,数值越大,速度越慢;- ping的工作原理与潜水艇的声呐相似,ping这个命令取自声呐的声音
- 原理:网络上机器都有唯一确定的IP地址,给目标IP地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,确定目标主机的存在;
- 提示:在Linux中,想要终止一个终端程序的执行,绝大多数都可以使用
ctrl+c
2.3.3 远程登录和复制文件ssh、scp
1、ssh基础(重点)
2、域名和端口号
(1)域名
- 由一串用点分隔的名字组成,例如:
www.itcast.cn
- 是IP地址的别名,方便用户记忆
(2)端口号
-
IP地址:通过IP地址找到网络上的计算机;
-
端口号:通过端口号可以找到计算机运行的应用程序
- SSH服务器(也是一个软件)的默认端口号是22,如果是默认端口号,在连接的时候可以省略;
-
常见服务器端口号列表
3、SSH客户端的简单使用—exit退出连接
4、scp(掌握)
- 例如,一个01.py的传送
- 目录(多个文件)一起传送,-r
- 注意:
2.4 SSH高级
- 免密码登录
- 配置别名
提示:有关SSH配置信息都保存在用户家目录下的.ssh
目录下,.
表示隐藏目录;-a
才可以看到;
- 当第一次连接,会提示yes授权信息,在连接一次之后,就会生成known_hosts文件用来保存刚刚连接的授权信息,再次连接时,就不会出现询问信息;而这个文件就是保存在.ssh目录下的;
2.4.1 免密码登录(SSH或者FTP都是)
(1)步骤(!!在客户端执行以下两个命令,就可以免密登录!!)
-
配置公钥
- 执行
ssh-keygen
即可生成SSH钥匙,一路回车即可;
- 执行
-
上传公钥到服务器
- 执行
ssh-copy-id -p port user@remote
,可以让远程服务器记住我们的公钥;
- 执行
2、免密码登录工作原理
2.4.2 配置远程计算机的别名
-
每次都输入
ssh -p port user@remote
,会比较麻烦,配置别名可以简化;
-
在
~/.ssh/
中创建文件config
;并将上述内容写入; -
gedit
打开文件;
2.5 用户权限相关命令
- 用户和权限的基本概念
- 用户管理终端命令
- 组管理终端命令
- 修改权限终端命令
2.5.1 用户和权限的基本概念
1、基本概念
- 用户是Linux系统工作中重要的一环,用户管理包括用户与组管理;
- 在Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限;
- 对文件/目录的权限包括:
2、组—为了方便用户管理,不需要单独用户设置,而是针对组设置不同权限
2.5.2 ls-l扩展
-
ls -l
可以查看文件夹下文件的详细信息,从左到右依次是:
-
权限,第1个字符如果是
d
表示目录; -
硬链接数,通俗讲,就是有多少种方式,可以访问到当前目录/文件;
-
拥有者,家目录下文件/目录的拥有者通常都是当前用户;
-
组,在Linux中,很多时候,会出现组名和用户名相同的情况;
-
大小
-
时间
-
名称
-
**硬链接数3分别是
绝对路径
+cd .
+cd ..
(n个子目录就有n个cd…可返回,对应硬链接数也会+n!!):**文件硬链接一般是1,目录硬链接数取决于有多少子目录;
2.5.3 chmod简单使用(重要)
-
chmod
可以修改用户/组对文件/目录的权限;
-
提示:以上方式会一次性修改拥有者/组的权限;
-
目录如果没有可执行权限就不能访问;
2.5.4 超级用户sudo
2.6 组管理 终端命令
2.6.1 groupadd、groupdel、cat /etc/group
-
提示:创建组/删除组的中断命令都需要通过
sudo
执行;
-
提示:
- 组信息保存在
/etc/group
文件中; /etc
目录是专门用来保存系统配置信息的目录;- /根目录,~家目录;
- 组信息保存在
2.6.2 群组演练目标确定chagrp
2.7 用户管理终端命令
- 提示:创建用户/删除用户/修改其他用户密码的中断命令都需要通过
sudo
执行
2.7.1 创建用户/设置密码/删除用户
2.7.2 查看用户信息,id、who、whoami
1、passwd文件
-
uid是用户代号,gid是群组代号;
-
下面,只有python : x:1000:表示的是python组,其他都是表示python用户在不同的组中;即定义一个用户,将用户放入不同组中拥有不同的权限;
-
zhangsan:123
2.7.3 usermod
-
与上图对应,一个主组后面都是附加组;
-
Shell是一个软件,在ubuntu中就是可以输入命令行的终端窗口;
2.7.4 which(重要)
-
提示
/etc/passwd
是用来保存用户信息的文件;/usr/bin/passwd
是用于修改用户密码的程序;
-
which
命令可以查看执行命令所在位置,例如:
bin和sbin,bin是普通的可执行文件,sbin是系统管理有关的可执行文件;
- 提示:
cd
这个终端命令是内置在系统内核中的,没有独立文件,因此用which
无法找到;
2.7.5 切换用户su,exit
2.7.6 修改文件权限chown、chgrp、chmod
chmod
在设置权限时,可以简单地使用三个数字分别对应拥有者/组和其他用户的权限;
- chmod演练目标
2.8 系统信息
-
本节内容主要是为了方便通过远程终端维护服务器时,查看服务器上当前系统日期和时间/磁盘空间占用情况/程序执行情况;
-
本小节学习的终端命令基本都是查询命令,通过这些命令对系统资源的使用情况有个了解;
-
目标
- 时间和日期
- date
- cal
- 磁盘和目录空间
- df
- du
- 进程信息
- ps
- top
- kill
- 时间和日期
2.8.1 时间和日期date,cal
2.8.2 磁盘信息df -h、du-h
2.8.3 进程信息pa aux、top、kill
-
所谓进程,就是当前正在执行的一个程序
-
要退出
top
可以直接输入q
; -
不用轻易使用
kill
杀死root进程,因为有系统服务的程序/进程;
2.9 其他命令
- 目标
- 查找文件
- find
- 软链接
- ln
- 打包和压缩
- tar
- 软件安装
apt-get
- 查找文件
2.9.1 查找文件find
2.9.2 软链接 ln -s(windows下的快捷方式)
- 源文件要使用绝对路径
2.9.3 硬链接
-
在使用
ln
创建链接时,如果没有-s
选项,就会创建一个**硬链接,**而不是软链接;
-
硬链接,即使源文件删除,也并不会影响到硬链接文件,对应硬链接数2->1;
-
只有当一个文件数据的所有硬链接都删除之后,文件数据才会被移除磁盘!
2.10 打包压缩tar
- 在不同操作系统中,常用的打包压缩方式不同
Windows
常用rar
Mac
常用zip
Linux
常用tar.gz
2.10.1 打包/解包tar -cvf/-xvf
tar
是Linux中最常用的备份工具,可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件;- tar只负责打包,不负责压缩
2.10.2 压缩/解压缩gzip,bzip
(1)gzip
- 注意:可以使用-C直接解压缩到指定目录
(2)bzip2(two)
2.11 软件安装
2.11.1 通过apt安装/卸载软件
-
apt是
Advanced Packaging Tool
,是Linux下的一款安装包管理工具; -
可以在终端中方便安装/卸载/更新软件包;
-
安装演练