Linux
1.文件和目录
command --- 命令
options --- 选项
parameter --- 参数
ls
命令
ls [-a / -l / -h] [Linux路径]
-a --- all --- 列出该路径下的所有文件(夹) 【其中以.开头的文件为隐藏文件,不使用-a选项无法看到】
-l --- list --- 以列表形式展示内容,并展示其他更多信息
-h --- 列出文件大小(必须和-l一起使用)
cd
命令
cd [Linux路径]
cd --- change directory --- 改变目录
cd 默认回到HOME目录
cd 路径 --- 跳转到指定路径下
pwd
命令
pwd
pwd --- print work directory --- 打印工作目录
pwd --- 查看当前工作目录并输出路径
- 绝对路径和相对路径
绝对路径:从根目录开始,给出完整的路径
相对路径:默认以当前工作目录为起始(这种只能适用于在当前目录下的文件(夹))
特殊路径符:
. --- 表示当前目录
.. --- 表示上一级目录
~ --- 表示HOME目录
mkdir
命令
mkdir [-p] Linux路径
mkdir --- make directory 制造目录
-p --- 创建连续多层级的目录
例如:
mkdir ~/test --- 在HOME目录下创建一个test文件夹
mkdir -p ~/ppp/kkk --- 在HOME目录下创建一个ppp文件夹,在ppp文件夹中再创建一个kkk文件夹
注意:对于普通用户,只能在该用户的HOME目录下进行创建目录。如果要对其他文件夹下创建目录,需要用到root权限
touch
命令
touch Linux路径
touch 路径 --- 创建文件
cat
命令
cat Linux路径
cat 路径 --- 查看该路径下的文件
将文件内容全部展示
more
命令
more Linux路径
more 路径 --- 查看该路径下的文件
支持翻页查看 --- 空格翻页 --- q退出 --- enter单行下拉 --- b退回上一页
cp
命令
cp [-r] 参数1 参数2
cp --- copy 复制
复制文件(夹)
-r --- 用于复制文件夹(递归)
参数1 --- 路径,被复制的文件(夹)
参数2 --- 路径,要复制到的地方
例如:
cp ~/test1.txt ~/test2.txt --- 将test1文件改名到test2文件
cp -r ~/ppp ~/kkk --- 将目录ppp复制到目录kkk
mv
命令
mv 参数1 参数2
mv --- move 移动
移动文件(夹)
参数1 --- 路径,被移动的文件(夹)
参数2 --- 路径,要移动到的地方
例如:
mv test.txt ~/desktop --- 将文件test移动到文件夹desktop下
mv test1.txt test2.txt --- 将文件test1改名为test2
mv ~/test ~/desktop --- 将文件夹test移动到文件夹desktop下
文件 移动-> 文件夹
文件 改名-> 文件
文件夹 移动-> 文件夹
rm
命令
rm [-r -f] 参数1 参数2...
rm --- remove 移动,删除
-r --- 用于删除文件夹
-f --- force强迫 --- 不会弹出确认信息
参数 --- 路径,要删除的文件(夹)
- 通配符
*
通配符*用来做模糊匹配
例如:
test* --- 匹配所有以test开头的内容
*test --- 匹配所有以test结尾的内容
*test* --- 匹配所有包含test的内容
witch
命令
whitch 命令
witch 命令 --- 查看该命令的程序文件所在路径
例如:
witch cd --- 查看cd命令的程序文件所在路径
print:/usr/bin/cd
find
命令
find 起始路径 -name "要查找的文件名"
find 起始路径 -size +/-文件大小(kMG)
find 起始路径 -name "要查找的文件名" --- 从起始路径开始向下查找指定文件
find 起始路径 -size +/-大小(kMG) --- 从起始路径开始查找大于(+)/小于(-)指定大小的文件
例如:
find / -name "test" --- 从根目录开始查找所有名为"test"的文件
find ~ -size +20M --- 从HOME目录开始查找所有大于20M的文件
grep
命令
grep [-n] "过滤关键字内容" 文件路径
grep命令:过滤指定文件中的关键字内容
-n --- 显示过滤信息的行号
-
wc
命令
wc [-c -m -l -w] 文件路径
wc命令:统计指定文件中的内容数量
-c --- 统计bytes的数量
-m --- 统计字符数量
-l --- line --- 统计行数
-w --- word --- 统计单词数量
如果不带任何选项,输出结果为: 行数 单词数 字节数 文件名
- 管道符
|
将管道符左边命令的结果(必须是能输出内容的命令)作为右边命令的输入
例如:
cat test.txt | grep "haha"
等价于
grep "haha" test.txt
从test文件中过滤关键字内容haha
echo
命令
echo 输出的内容
echo命令:将输出的指定内容打印(默认是到屏幕上)
类似printf
- 反引号
`
用``将字符串包围起来,会被作为命令来看作,而不是看成普通地方字符串
例如:
echo pwd --- 这时输出的内容就是三个字母pwd
但是如果想要把pwd命令的结果输出,就需要``
echo `pwd` --- 这时输出的内容就是pwd命令的结果
- 重定向符
> 和 >>
> --- 将左侧命令的结果,覆盖写入右侧的指定文件中
>> --- 将左侧命令的结果,追加写入右侧的指定文件中 --- 自动换行追加内容
tail
命令
tail [-f -num] 路径
tail命令:查看文件尾部的内容
-f --- follow跟随 --- 表示持续跟踪
-num --- 表示查看尾部多少行(默认10行)
2.Vim编辑器
- 三种模式
- 命令模式:可以理解为快捷键对文本进行操作
- 输入模式:就是正常的编辑模式
- 底线命令模式:对文本就行保存,退出等操作
进入Vim就是命令模式;按i/a/o进入输入(编辑)模式,按esc退回到命令模式;按 : 进入底线命令模式,wq保存并退出(q!强制退出不保存;w保存,q退出)
3.用户和用户组
- root用户
root用户是超级管理员,具有最大的系统操作权限
正常使用的用户就是每个人的个人账户,也就是普通用户
普通用户的权限一般只能局限于在HOME目录内,而而出了HOME目录,普通用户只有只读和执行权限,没有修改权限,需要用到root用户
切换用户
命令
su [-] [用户名]
su命令:
su --- switch user 转换用户
- 表示是否在切换用户后加载环境变量,建议带
参数 --- 要切换的用户,省略则表示切换到root
exit命令:
退回到上一个用户,也可用快捷键ctrl+d
sudo
命令
sudo 命令
sudo命令:为普通用户临时授权root权限
在使用更高权限命令时,在前面加上sudo
使用sudo命令,需要为用户配置sudo认证
1. visudo
2. 编辑,最后一行加入 pbk ALL=(ALL) NOPASSWD:ALL
3. 保存退出
此时在配置的用户中就可以使用root权限了,但命令前面要加sudo
3.1用户
关于用户命令都需要root权限
- 创建用户
useradd [-g -d] 用户名 [用户组/路径]
-g --- 指定用户的组。如果不指定,那么默认创建一个与用户同名的组并加入
-d --- 指定用户的HOME目录。如果不指定,则默认在/home/下面创建一个与用户同名的目录作为HOME目录
例如:
useradd ppp --- 不指定加入的组,默认创建一个ppp组并加入
useradd -g ppp pbk --- 创建用户ppp并加入组pbk
useradd ppp --- 不指定HOME路径,默认在/home下创建一个同名的目录作为HOME目录
useradd -d ppp /home/HOMEppp --- 创建用户ppp并将HOME目录设置为/home/HOMEppp
- 删除用户
userdel [-r] 用户名
-r --- 删除用户的HOME目录。如果没有则将保留该用户的HOME目录不删除
- 查看用户所属的组
id [用户名]
id 用户名 --- 查看指定用户的信息
id --- 查看当前用户的信息(即个人信息)
- 修改用户所属的组
usermod -aG 用户组名 用户名
将用户加入到指定的用户组中(-aG表示加入新组并且不出原来的组)
3.2用户组
关于用户命令都需要root权限
- 创建用户组
groupadd 用户组名
- 删除用户组
groupdel 用户组名
3.3相关命令
getent
命令
getent passwd
getent grop
getent passwd --- 查看操作系统中有哪些用户
每一份的信息:
x(密码):用户id:组id:描述信息:HOME目录:执行终端(默认/bin/bash)
getent group --- 查看有哪些用户组
每一份信息:
组名称:x(组认证):组id:
4.权限管理
序号1:表示文件、文件夹的权限控制信息
序号2:表示文件、文件夹的所属用户
序号3:表示文件、文件夹的所属用户组
- 权限信息
权限细节共有10个槽位
第一个槽位可填- d l
。其中-
表示文件,d
表示文件夹,l
表示软链接
后面九个槽位每3个一组,分别表示所属用户权限,所属用户组权限,其他用户权限。
权限可填r w x -
。其中r
表示可读(read),w
表示可写(write),x
表示可执行(execute),-
表示没有此权限
例如:drwxr-xrw-
d --- 表示为文件夹
rwx --- 表示所属用户对该文件夹有可读可写可执行权限
r-x --- 表示所属用户组对文件夹有可读不可写可执行权限
rw- --- 表示所属用数组对文件夹有可读可写不可执行权限
-
rwx
r
表示可读(read)- 对于文件:表示查看文件内容的权限
- 对于文件夹:表示查看文件夹内容的权限
w
表示可写(write)- 对于文件:表示修改文件内容的权限
- 对于文件夹:表示在文件夹内进行创建、删除、修改等权限
x
表示可执行(execute)- 对于文件:表示可以将文件作为程序执行(例如.cpp源文件)
- 对于文件夹:表示可以更改工作目录到此文件夹,即
cd
进入
-
修改权限命令
chmod [-R] 权限 文件/文件夹
只有该文件/文件夹的所属用户和root用户才有权限去用修改权限命令
-R --- 对文件夹内的全部内容都进行相同的操作(递归)
例如:
chmod u=rwx,g=r-x,o=--x test.txt
对文件test.txt修改权限(其中u表示user所属用户权限,g表示group所属用户组权限,o表示other其他用户权限)
-
- 权限的数字序号
- 权限可以用3位数字表示,第一位数字表示用户权限,第二位数字表示用户组权限,第三位表示其他用户权限。例如:751
r
记为4,w
记为2,x
记为1- 将数字组合0~7表示所有的权限可能
- 0 — 无权限
---
- 1 — 仅有
x
权限--x
- 2 — 仅有
w
权限-w-
- 3 — 有
w
和x
权限-wx
- 4 — 仅有
r
权限r--
- 5 — 有
r
和x
权限r-x
- 6 — 有
r
和w
权限rw-
- 7 — 有所有权限
rwx
- 0 — 无权限
- 例如:751 意思就是
u=7(rwx),g=5(r-x),o=1(--x)
- 权限的数字序号
-
修改所属用户/用户组命令
chown [-R] [用户]:[用户组] 文件/文件夹
只有root用户才有此修改权限
-R --- 对文件夹内全部内容进行相同操作
[用户] --- 修改所属用户
[用户组] --- 修改所属用户组
: --- 用于分隔用户和用户组
例如:
chown root hello.txt --- 将hello文件的所属用户修改为root
chown :pbk hello.txt --- 将hello文件所属用户组修改为pbk
chown pbk:pbk hello.txt --- 将hello文件所属用户(组)都修改为pbk
5.初步进阶
5.1 基本快捷键使用
ctrl + c
强制停止
强制停止某些程序的运行
命令输入错误退出重新输入
ctrl + d
退出或登出
退出账户的登录(退回到上一个用户)
退出某些特定程序的页面
不能用于退出vim
-
history
历史命令搜索 -
ctrl + r
匹配历史命令
ctrl + r 输入内容
如果该命令是想要的,直接回车执行
如果该命令不想要,左右键修改命令
- 终端光标移动快捷键
ctrl + a --- 跳到命令开头
ctrl + e --- 跳到命令结尾
ctrl + 左键 --- 向左跳一个单词
ctrl + 右键 --- 向右跳一个单词
ctrl + l
清屏
clear
5.2软件安装
需要root权限,需要联网
yum [-y] [install / remove / search] 软件名称
-y --- 自动确认,无需手动确认安装或卸载过程
install --- 安装
remove --- 卸载
search --- 搜索
Linux中的执行程序文件后缀为.rpm
,相当于Windows中的.exe
5.3控制软件启动和关闭
systemctl start/stop/status/enable/disable 服务名
用于控制软件(内置或第三方)启动,停止等
能够被systemctl控制的软件被称为`服务`
内置的服务:
NetworkManager --- 主网络服务
network --- 副网络服务(网卡)
firewalld --- 防火墙服务
sshd,ssh --- 远程登录服务
start --- 启动
stop --- 关闭
status --- 查看状态
enable --- 开机自启
disable --- 关闭开机自启
5.4软链接
- 软链接,将文件、文件夹链接到其他地方,类似Windows中的快捷方式
ln -s 被链接的文件(夹) 链接去的目的地
-s --- 创建软链接
简单用于将复杂路径下的文件/文件夹设置软链接到简单熟悉的路径下
5.5日期和时区
date
命令
date [-d] [+格式化字符串]
显示日期
-d --- 按照给定的字符串显示日期,一般用于日期计算
格式化字符串:
%Y --- 年 year
%y --- 年份后两位数字 year
%m --- 月份 month
%d --- 日 day
%H --- 小时 hour
%M --- 分钟 minute
%S --- 秒 second
-
修改时区
-
自动校准系统时间
ntp
程序
5.6 IP地址和主机名
- IP地址
IPv4
地址格式:a.b.c.d,其中abcd表示0~255
可以通过ifconfig
命令查看本机IP地址
特殊的IP:0.0.0.0 可以用于指代本机
- 主机名
可以通过hostname
命令查看当前主机名
-
修改主机名
hostnamectl set-hostname 主机名
-
域名解析
IP地址是服务器的唯一地址标识,但IP地址难以记住,所以,设置一个网址(域名解析),将该域名映射到对应的IP地址,这样就可以通过域名解析找到想要查看的IP地址
域名 = 网址 = 主机名
-
- 域名解析流程
如果要查看某个网站(域名),会先从本机的特定位置寻找该域名对应的IP地址有没有记录,如果有就访问对应IP,如果没有就要联网去访问DNS服务器查询想要查看的域名对应的IP地址
- 通过域名解析配置主机名与IP地址的对应关系
Windows系统配置虚拟机主机名对应的IP地址
管理员身份打开记事本—>C:\Windows\system32\drivers\etc\hosts,配置IP地址与主机名的映射。完成之后就可以通过主机名访问对应的IP地址
5.7配置固定IP地址
虚拟机的Linux操作系统IP地址是通过DHCP服务获取,这是动态获取IP地址,每次重启设备都会获取一次,可能会导致本机IP地址频繁变更
5.8网络传输
1.下载与网络请求
ping
命令
检查指定的网络服务器是否是可联通的状态
ping [-c num] IP/主机名
-c --- 检查的次数;若不指定-c则无限次持续检查
IP/主机名/网址(域名)
wget
命令
wget是非交互式的文件下载器(相当于迅雷),可以在命令行内下载网络文件
wget [-b] url
-b --- 后台下载,并将下载日志写入当前工作目录的wget-log文件
参数url --- 下载链接
curl
命令
curl可以发送http网络请求,可用于下载文件、获取信息等
curl [-O] url
-O --- 用于下载文件(当url是下载链接)
参数url --- 发起请求的网络地址
2.端口
端口,是设备与外界通讯交流的出入口。端口可分为物理端口和虚拟端口
- 物理端口:接口,可见的端口
- USB接口
- RJ45接口
- HDMI端口
- 虚拟端口:计算机内部的端口,不可见,用来让操作系统和外部交互使用
一台计算机(服务器)与另一台计算机相互通信,需要知道对方的IP地址(或者主机名/域名网址)即可。
但是如果一台计算机上的一个程序(例如Wechat)与另一台计算机上的程序进行通信,这时不仅需要IP地址,还需要找到对应的端口进行连接(可以理解为Wechat对应的接口)
一台计算机看作小区,IP地址是校区地址;小区内的住户就是计算机内的程序,每个住户的门牌号就是端口的地址
-
Linux端口(65535个)
- 公认端口(1~1023)
- 通常用于系统内置或知名程序的使用,例如SSH服务的22端口,HTTP服务的443端口
- 注册端口(1024~49151)
- 通常可以随意使用,用于松散的绑定一些程序/服务
- 动态端口(49152~65535)
- 通常不会固定绑定程序,而是当程序对外进行网络连接时用于临时使用
- 公认端口(1~1023)
-
nmap
命令
查看指定地址的端口占用情况
nmap 被查看的IP地址
使用nmap
命令需要先下载nmap
yum -y install nmap
netstat
查看指定端口的占用情况
netstat -anp | grep 端口号
使用netstat
命令需要先下载netstat
yum -y install net-tools
netstat -anp 列出所有端口情况
| grep 端口号 从所有端口中过滤指定端口展示
5.9进程管理
-
进程:运行的程序。程序运行在操作系统上,并为之分配独有的进程ID(PID)
-
ps
命令
查看系统中的进程信息(相当于Windows中的任务管理器)
ps [-e -f]
-e --- 显示出全部进程
-f --- 展示全部信息
一般固定用法就是 ps -ef 列出全部进程的所有信息
-
进程信息
- PID:每个进程独有的进程号
- UID:该进程所属用户
- PPID:进程的父ID(启动此进程的父进程)
- C:此进程的cpu占用率
- STIME:进程的启动时间
- TTY:启动此进程的终端序号,如果是?表示非终端启动
- TIME:进程占用cpu的时间
- CMD:进程对应的启动路径或启动命令或进程对应的名称
-
kill
命令
关闭进程
kill [-9] PID
-9 --- 强制关闭
如果不使用此选项,系统会向进程发送信号令其关闭,是否关闭需要看该进程自身的处理机制
5.10主机状态
1.系统资源监控
top
命令
查看cpu、内存使用情况,类似Windows的任务管理器
top
默认5s刷新一次
ctrl+c 退出命令的执行
- 系统资源监控详解
top - 16:38:54 up 7:01, 2 user, load average: 0.09,0.13,0.13
top:命令名称 16:38:54 当前系统时间 up 7:01 启动了7.01小时 2 user 2个用户登录 load average:平均1分钟,5分钟,15分钟负载
Tasks:280 total, 2 running, 278 sleeping, 0 stopped, 0 zombie
Tasks:280 个进程 2 running 2个进程在运行 278 sleeping 278个进程在睡眠
0 stopped 0个进程被停止 0 zombie 0个僵尸进程
%Cpu(s): 4.1 us, 1.4 sy, 0.0 ni,94.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
4.1 us 用户cpu使用率 1.4 sy 系统cpu使用率
KiB Mem : 2027828 total, 201792 free, 731768 used, 1094268 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1128364 avail Mem
Kib Mem:物理内存 total:总量 free:空闲 used:使用
KibSwap:虚拟内存(交换空间)
2.磁盘监控
df
命令
查看硬盘使用情况
df [-h]
-h --- 显示单位
iostat
命令
查看cpu。磁盘相关信息
iostat [-x][num1][num2]
-x --- 显示更多信息
num1 --- 刷新间隔
num2 --- 刷新几次
3.网络状态监控
sar
命令
5.11环境变量
命令的本质是可执行程序.exe
例如命令cd
,它的可执行文件在/user/bin/cd.exe
env
命令
查看当前记录的环境变量
env
环境变量是一种key-value结构
- PATH
无论当前的工作目录在哪,都可以准确执行命令,就是借助环境变量中的PATH
PATH记录了系统执行任何命令的搜索路径
当执行某条命令时,系统就会从PATH的实值路径中搜索该命令对应的文件路径
$
符
$环境变量key
获取key对应的实值路径,但是输出需要echo命令
echo $PATH --- 输出PATH的实值路径
echo $PWD --- 输出PWD的实值路径
- 自行设置环境变量
export 变量名(key)=变量值(value)
直接设置是一种临时设置
-
- 永久生效
- 针对当前用户永久生效
- 在当前用户HOME目录内的
~/.bashrc
配置export
命令
- 在当前用户HOME目录内的
- 针对所有用户永久生效
- 在
/etc/profile
中配置export
命令
- 在
- 针对当前用户永久生效
- 配置完成后通过
source 配置路径
命令直接生效
- 永久生效
-
bash
脚本
5.12文件上传和下载
通过finalshell,直接将宿主机的文件拖拽到虚拟机即可
5.13压缩和解压
-
压缩格式
- Windows
zip
7zip
rar
- Linux
tar
gzip
zip
- Windows
-
Linux
中常用的两种压缩格式tar
: 后缀名.tar
,简单封装(打包)gzip
: 后缀名.gz
,压缩体积封装(打包+压缩)
-
tar
命令:针对tar
和gzip
格式
将文件进行压缩/解压
tar [-c -v -x -f -z -C] 参数1 参数2...
-c --- 创建压缩文件,用于压缩
-x --- 解压压缩包
-v --- 显示压缩、解压进度
-z --- gzip格式,不使用此选项就是tar格式
-C --- 选择解压的目的地,用于解压
-f --- 要创建的文件或者要解压的文件,-f选项必须在最后
注意:
如果使用-z,一般在第一个
如果使用-f,放在最后
-C 建议单独使用
常见的压缩命令组合:
tar -cvf test.tar 1.txt 2.txt 3.txt
创建压缩包test.tar,并将1,2,3打包放到test.tar中,显示进度
tar -zcvf test.gz 1.txt 2.txt 3.txt
创建压缩包test.gz(真压缩包),并将1,2,3打包压缩进text.gz,显示进度
常见的解压命令组合:
tar -xvf test.tar
解压test.tar压缩包,解压至当前目录
tar -xvf test.tar -C ~/pbk
解压test.tar压缩包,解压至HOME目录下的pbk目录内
tar -zxvf test.gz
解压.gz压缩包
zip
命令和unzip
:针对zip
格式zip
- 将文件进行压缩
zip [-r] 参数1 参数2...
-r --- 压缩的内容包含文件夹
例如:
zip test.zip 1.txt 2.txt
将1,2.txt压缩到test.zip
zip -r test.zip 1.txt pbk
将1.txt和文件夹pbk压缩到test.zip
-
unzip
- 将压缩包进行解压
unzip [-d] 参数
-d --- 指定要解压到的位置,和-C一样
例如:
unzip test.zip
解压到当前目录
unzip test.zip -d ~/pbk
解压到指定目录