前言
- 本文参考视频【黑马程序员-linux从入门到精通】
https://www.bilibili.com/video/BV1Sp411o7Dx
- 参考教程java3y的linux
- 参考菜鸟教程linuxhttps://www.runoob.com/linux/linux-tutorial.html
- 本文基于ubuntu server 20.
- 推荐一个好用的linux命令查询的网站https://man.linuxde.net/
一.linux的历史
- linux的前身是Unix(Unix最初由汇编语言开发,后来因移植性不好又用C语言重写开发)。
- linux是由李纳斯·托瓦兹(Linus Torvalds)开发的,他把Unix的底层代码进行了修改,由此产生了linux。
- linux之父:
二.linux系统的特点
- linux是开源,多用户,多任务,良好的用户界面,优异的性能与稳定性。
- 简单了解一下多/单用户与多/单任务:
单用户:一个用户。在登录计算机(操作系统)时,只能允许同时登录一个用户。
单任务:一个任务。允许用户同时进行的操作任务数量为一。
多用户:多个用户。在登录计算机(操作系统)时,允许同时登录多个用户进行操作。
多任务:多个任务。允许用户同时进行的操作任务为多个。
- 根据上面的描述得知 Windows系统属于单用户多任务,linux系统属于多用户多任务。单任务只是一个概念上的东西,实际中由于功能过于鸡肋,并不采用。
三.linux常见的分支
- 实际上Linus Torvalds所创建的是linux内核,而linux内核至今只发行了几个版本,变化并不是很大。但围绕着linux内核,不同的开发商开发出了很多linux系统(在linux内核上加入一些应用软件),这些linux系统就称为linux的分支。
- linux有非常多的分支,常见的分支有CentOs,Ubuntu,RedHat等。
四.linux系统的安装
- 目前主要采用虚拟机安装,常见的虚拟机有vmware出品的vmware workstation、oracle 出品的virtual Box.但vmware的性能比virtual Box好一点。
- 具体的安装方式百度一下教程。
- 这里注意一下VMware的备份功能,合理使用可以提高效率。VMware的备份方式有两种:克隆和快照。
- 快照:又称还原点,就是保存在拍快照时候的系统的状态(包含了所有的内容),在后期的时候随时可以恢复。【侧重在于短期备份,需要频繁备份的时候可以使用快照,做快照的时候虚拟的操作系统一般处于开启状态】
- 克隆:就是复制的意思。【侧重长期备份,做克隆的时候是必须得关闭】
五.linux系统文件与目录
1.linux中一切皆文件
- 首先了解一下什么是文件,什么是文件夹。
- 文件:一般都是一个独立的东西,可以通过一些特定的工具进行打开,并且其中不能在包含除了文字以外的东西。
- 文件夹:可以包含其他文件的东西。
- 在linux中一切皆文件,linux本身也是一个基于文件形式表示的操作系统。所以在linux中的操作本质上就是对文件的操作。
2.linux的 目录结构
#### 第一步
相对/绝对路径
linux的工作路径分为两种:相对路径和绝对路径。
- 相对路径:‘相对’指的是相对于当前的工作路径。相对路径的写法:
./
表示当前目录。../
:表示上一级目录。例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd ../man
这就是相对路径的写法- 绝对路径:从根目录
/
下找对应路径。cd /home
:可以直接从任意目录到达home目录。
对文件目录结构的分析
上面蓝色的表示文件夹,白色的表示文件,绿色表示拥有所有权限,红色表示压缩包。
- bin : 全称binary(二进制),该目录中存储的都是一些二进制文件,文件都是可以被运行的。
- boot: 这里存放一些启动linux时使用的核心文件,包括一些连接文件以及镜像文件。
- dev :该目录中主要存放的是外接设备,例如盘,其他的光盘等。其中的外接设备不能直接被使用,需要挂载(类似Windows下的分配盘符)
- etc: 主要存储系统管理所需的一些配置文件。
- home: 表示“家”,存储除了root用户以外其他所有用户,类似于Windows下的user/用户。在linux中,每个用户都有自己的家目录,一般该目录名以用户的账号命名。
- proc :全称process(进程),该目录存储linux运行时的进程。【这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
】
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- lib : 全称library(库),存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
- lost+found : 这个目录一般是空的,当系统非法关机后,会存放一些文件。
- media : linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
- mnt : 当外接设备要挂载时,挂载到此目录下。可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
- opt : 全称optional(可选的),在系统中安装额外的软件(例如数据库)所摆放的位置。默认是空的。
- root :该目录是root用户的家目录,拥有超级权限。
- run : 该目录临时存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除
- sbin : 全称super binary,存储系统管理员使用的二进制系统管理程序
- srv : 存一些服务启动之后需要提取的数据。
- sys : 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
- tmp : 全称temporary(临时的),当系统运行时产生的临时文件会在这个目录下。
- usr : 全称unix shared resources(共享资源), 存放的是用户的应用程序和文件。类似于Windows下的program files.
- usr/bin : 存放系统使用的文件程序。
- usr/sbin :存放超级用户使用的比较高级的管理程序和系统守护程序
- usr/src :内核源代码默认放置位置。
- var : 存放程序/系统的日志文件
其中重要的目录有如下几个(上面加粗的)
六.linux的基本指令
linux指令的格式:
$ 指令主体(空格)[选项](空格)[操作对象]
其中指令可以包含多个选项和空格
linux基础指令
1. ls指令
ls
: 列出当前工作目录下的所有文件和文件夹名称ls 路径
:列出指定路径下的所有文件和文件夹的名称。
在home目录下直接访问dev目录下的所有文件,文件夹
3. `ls -l 路径` :以详细列表的形式展示对应路径下的文件,文件夹。
4. `ls -la 路径` : 显示所有文件,文件夹(包括隐藏文件,文件夹)
- 上述列表第一行字符表示文档类型,其中“-”表示类型为文件,“d”表示文档类型为文件夹。
- 在linux中隐藏文档以
.
开头
5. `ls -lh 路径` : 以可读性较高的形式显示 文件,文件夹
2. pwd指令
pwd
:显示当前工作目录
3. cd指令
cd 路径
: 切换当前工作目录到指定目录。cd /
:切换到根目录cd ~
:切换到当前用户的家目录cd ..
: 返回上一级目录cd
:切换到当前用户的家目录
4. mkdir指令
mkdir 文件夹名称
:创建一个文件夹 (可以在前面加上文件夹的绝对路径)
mkdir /usr/helloworld
:在usr目录里创建一个helloworld文件夹
mkdir 文件夹1 文件夹2 文件夹3 ...
: 一次性创建多个文件夹,中间用空格隔开。
5. touch 指令
touch 文件名
:创建文件touch 文件名1 文件名2 文件名3 ...
: 一次性创建多个文件,中间用空格隔开。
6. cp指令
cp 文件路径 要复制到的路径
: 复制文件到指定位置。
注意这里是相对路径
注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
cp -r 文件夹路径 文件夹要去的路径
:复制文件夹到指定位置。-r
表示递归复制,否则复制失败
7. mv指令
mv 文件/文件夹路径 要去的路径
: 移动(剪切)文件/文件夹到指定位置 。mv 文件/文件夹名 新的文件/文件夹名
:对文件/文件夹重命名
8. rm 指令
rm 文件
: 删除文件rm -f 文件
:强制删除文件,不提示是否删除。-f
表示强制(force)rm -r 文件夹
:删除文件夹。-r
表示递归rm -rf 文件夹
:删除文件夹,并且不需要进行删除确认询问。rm -rf 文件1 文件2 文件3 ...
:删除多个文件或文件夹
9. 输出重定向
- 一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
- 重定向有覆盖输出和追加输出两种。
执行的指令 > 文件路径
:覆盖输出,会覆盖掉原先的文件内容。执行的指令 >> 文件路径
: 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加- 如果在指定的路径中文件不存在,会自动新建一个。
10. cat指令
- cat 文件路径 在指定路径打开一个文件。
cat 文件路径1 文件路径2 ... > 文件路径x
: 文件文件路径1 文件路径2 ...的内容全部转到文件路径x 【配合输出重定向使用】
11. clear / ctrl + L指令
clear
: 清除终端已经存在的命令和结果,不是真的清除,只是隐藏起来。- ctrl + L:功能同上
12 .history 指令
history
:查看之前输过的历史指令
13.有关ctrl的快捷键操作
ctrl+c
:强制终止程序的执行ctrl+z
:常用于挂起一个进程ctrl+d
: 一个特殊的二进制值,表示 EOF,作用相当于在终端中输入exit后回车;ctrl +s
:中断控制台的输出ctrl+q
:恢复控制台输出ctrl+l
:清屏
14. .tra.gz文件的解压缩及相关操作
参考链接:Ubuntu 常用解压与压缩命令:https://blog.csdn.net/songbinxu/article/details/80435665
tar -zxvf FileName.tar.gz
# 解压
tar -zcvf FileName.tar.gz DirName
# 将DirName和其下所有文件(夹)压缩tar -C DesDirName -zxvf FileName.tar.gz
# 解压到目标路径
n. shift + PgUp/PgDn
shift + PgUp
:向上翻页shift + PgDn
:向下翻页
linux进阶指令
1. df指令
df -h
: 查看磁盘空间。-h
表示以可读性较高的方式展示大小。
2.free指令
free -m
:查看内存使用情况。-m
表示以mb为单位查看。
3.head指令
head -n
:查看一个文件的前n行,如果不指定n,则默认显示前十行。
查看t.txt文件的前四行:
4.tail指令
tail -n 文件路径
:查看文件的末n行,n 不指定则默认显示后十行。tail -f 文件路径
:一般用于查看系统的日志,查看文件的动态变化内容。
5.less指令
less 文件路径
:查看文件,以较少的内容进行输出。- 退出使用
q
指令
6.wc指令
wc 文件路径
:统计文件内容的行数,单词数,字节数。wc -l 文件路径
:统计文件内容的行数。-h
表示lines,行数。wc -w 文件路径
:统计文件内容的单词数,依据空格来判断单词数量。-w
表示words,单词数。wc -c 文件路径
:统计文件的字节数。-c
表示bytes,字节数。
7.date指令
date
: 显示当前的时间
date +%F
或者date "+%Y-%m-%d"
date "+%F %T"
或者date "+%Y-%m-%d %H:%M:%S"
date -d "-1 day" "+%Y-%m-%d %H:%M:%S"
获取之前或者之后的某个时间,其中的可选值:+,-,day , month , year .
%F:表示完整的年月日
%T:表示完整的时分秒
%Y:表示四位年份
%m:表示两位月份(带前导0)
%d:表示日期(带前导0)
%H:表示小时(带前导0)
%M:表示分钟(带前导0)
%S:表示秒数(带前导0)
8.cal指令
cal
: 输出当前月份日历cal -3
:输出上+本+下三个月cal -y 年份
:输出某一年的日历。
9.管道指令
- 管道符 :
|
。它的作用一般是“过滤”,“特殊”,“扩展处理”。它不能单独使用,一般是结合一些指令使用,管道在其中起到辅助作用。管道顾名思义就是起到一个管道的作用,一个管道指令以管道符|
为分界线,表示将管道符前边的指令输入管道,然后经过管道符后面的指令的处理然后输出。 - 作用1:过滤。
ls / | gerp y
:通过管道查询出根目录下包含y的文档名称。grep
指令表示过滤
- 作用2 :特殊用法
cat 文件路径 | less
:通过管道的操作方法来实现less的等价效果。
- 作用3:扩展处理
ls /home/chenshuai | wc -l
: 统计用户目录下文档的个数
linux高级指令
1.hostname指令
hostname
: 输出完整的主机名hostname -f
输出当前主机名中的FQDN(全限定域名)
2.id指令
id
:默认显示当前执行命令的用户的基本信息(基本信息=用户id,用户组id,附加组id…)id 用户名
: 显示指定用户的基本信息。
3.whoami 指令
whoami
:显示当前登录的用户名,一般用于shell脚本,用于获取当前操作对象的用户名方便记录日志。
4.ps -ef指令
- ps -ef :查看服务器进程信息。-e 等价于“-A”表示列出全部的进程。-f 显示全部的列(显示全字段)
上图的含义:
UID: 该进程执行的用户id
PID:进程id
PPID:该进程的父进程id,如果一个程序的父级进程找不到,该程序的的进程称为僵尸进程。
C:cpu的占用率,其形式是百分数。
TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
TIME:进程的执行时间
CMD:该进程的名称或者对应的路径;
5.top指令
top
:查看服务器的进程占的资源(q
指令退出)- 对top指令结果的操作:
M:将结果按内存从高到低进行降序排列
P:表示将结果按照CPU使用率从高到低进行降序排列;
1:当服务器拥有多个cpu的时候可以使用“1”快捷键来切换是否展示显示各个cpu的详细信息;
表头含义:
PID:进程id;
USER:该进程对应的用户;
PR:优先级;
VIRT:虚拟内存;
RES:常驻内存;
SHR:共享内存;
计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
S:表示进程的状态status(sleeping,其中S表示睡眠,R表示运行);
%CPU:表示CPU的占用百分比;
%MEM:表示内存的占用百分比;
TIME+:执行的时间;
COMMAND:进程的名称或者路径;
6.du -sh 指令
du -sh 文件路径
:查看文件的真实大小
7.find 指令
find 路径 -name *.conf
:查询指定路径下以.conf结尾的文件。
8.service指令
service 服务名 start/stop/restart
:控制一些软件的服务启动/停止/重启
9.kill指令
killall 进程名称
:杀死进程
10.ifconfig
ifconfig
:获取网卡信息。
ens33表示Linux中的一个网卡,eth0是其名称。Lo(loop,本地回还网卡,其ip地址一般都是127.0.0.1)也是一个网卡名称。inet 就是网卡的ip地址.
详细分析https://man.linuxde.net/ifconfig
11.reboot指令
reboot
:重启计算机reboot -w
:模拟重启,但是不重启(只写关机与开机日志信息)
12.shutdown 指令
shutdown -h now "关机提示"
或者shutdown -h 12:00 "关机提示"
:立即关机和指定时间关机
13.uptime 指令
uptime
:输出计算机从开机到现在的运行时间
14.uname指令
uname
:获取操作系统的类型uname -a
:获取全部系统信息(类型,全部主机名,内核版本,发布时间,开源计划)
15.man指令
man 指令
:查询指令的用法(英文描述)退出用q
指令
16. 防火墙指令
Linux原始的防火墙工具iptables比较繁琐,ubuntu默认提供了一个基于iptable之上的防火墙配置工具ufw,使管理iptables更简单。
- 查看防火墙当前状态:
sudo ufw status
- 开启防火墙:
sudo ufw enable
- 关闭防火墙:
sudo ufw disable
- 查看防火墙版本:
sudo ufw version
- 默认允许外部访问本机:
sudo ufw default allow
- 默认拒绝外部访问本机: sudo ufw default deny
- 允许外部访问端口33:
sudo ufw allow 53
- 拒绝外部访问端口33:
sudo ufw deny 53
- 允许某个IP地址访问本机所有端口:
sudo ufw allow from 192.168.0.1
17.ping命令
ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
ping 目的主机
:测试与目的主机网络连接情况。
七.vim编辑器
1. 简单了解vim
- vi 是Unix和linux系统下的最基本的文本编辑器,适用于linux的任何版本,类似于Windows下的记事本。vim是vi的升级版,是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
2. vim的三种模式
- vim中存在三种模式:命令模式,编辑模式,末行模式。
首先简单认识一下基本概念:
- 命令模式:即用vim打开文件后默认的模式,在该模式下是不能对文件直接编辑的,但可以通过快捷键进行一些操作,常见的操作:删除行,复制行,移动光标,粘贴等。
- 编辑模式:在该模式下可以对文件的内容进行编辑。
- 末行模式:可以在末行输入命令来对文件进行操作,常见的操作:搜索,替换,保存,退出,撤销,高亮等。
- vim打开文件的方式
vim 文件路径
:打开指定文件。vim 文件路径1 文件路径2 文件路径3
: 打开多个文件
3.命令模式的常用操作
- 使用命令
vim 文件路径
后第一个看到的模式就是命令模式 - 退出: 使用
:q+回车
- 操作1:光标移动
光标移动到行首:^
光标移动到行尾:$
光标移动到第一行:gg
光标移动到最后一行:G
向上翻屏:PgUp
向下翻屏:PgDn
- 操作2:复制操作
复制 :先ctrl +v
然后通过↑↓←→
选择复制内容,最后用y
复制
粘贴:p
- 操作3:剪切,删除
- 剪切/删除光标所在行(删除之后下一行上移):
dd
----这里注意dd
严格来说是剪切命令,如果剪切后不用p
粘贴就是删除。- 剪切/删除光标所在行及以下指定的行 :
数字n dd
- 操作4 :撤销,恢复
撤销::u
恢复:ctrl+r
- 操作5:光标的移动
光标的左右上下移动:↑ ↓ ← →
光标移动到指定n行:nG
4.末行模式的常用操作
- 在命令模式下使用
:
或者/
即可进入末行模式。 - 退出:按下
esc
或者 连按两下esc
或者 删除末行全部输入字符(三种方式选择) - 操作1:保存操作
保存文件 ::w
另存为 ::w 路径
5.编辑模式常用操作
- 在命令模式下,使用命令
i
或者a
进入 - 退出方式:按下
esc
6.三个模式之间的关系图
- 关于命令模式向终端的一些退出方式说明
:q
:未对文件做任何修改退出:q!
:强制退出,不保存修改:wq
:保存修改并退出:wq!
:保存修改并强制退出:x
: 在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
- 注意1:
:x
与:wq
的区别
如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
*注意2:X
表示对文件加密,x
表示文件的退出
7.vim的异常退出
- 当使用vim编辑文件时,如果没有正常的使用vim提供的退出方式(
:wq
)强制关闭终端时,就会产生异常退出,如下图。这时系统会建立file.swp这个缓存文件,这个文件中保存着没有:wq
动作保存的信息。
- 解决办法:删除file.swp文件。
rm -rf file.swp
八. apt软件管理包
快速了解
- apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
- apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- apt 命令执行需要超级管理员权限(root)。
常用命令
- 语法:
apt [options] [command] [package ...]
- options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
- command:要进行的操作。
- package:安装的包名。
- 安装软件:
sudo apt install <package_name>
- 删除软件包:
sudo apt remove <package_name>
- 清理不再使用的依赖和库文件 :
sudo apt autoremove
- 更新软件包:
sudo apt update <package_name>
- 移除软件包及配置文件:
sudo apt purge <package_name>
- 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:
sudo apt show <package_name>
- 升级软件包:
sudo apt upgrade
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。