Linux初级笔记
运行ifconfig ,观察虚拟机ens33的代码,得出计算机IP,然后选择用SSH连接。
命令行基本格式:
commmand -option(选填) parameters(选填)
选项 路径(参数)
路径:第一个/表示根目录,之后的/表示层级分隔符
命令行1:ls:
显示当前文件夹的内容:
默认home文件夹,-a 表示展示全部文件(包括隐藏文件),-l 表示以列表的形式展示全部信息(更加详细),-h 显示文件的大小信息(需要与 -l 一同搭配使用)
命令行2:cd:
进入指定文件(更改所处文件夹位置):
需要参数,不需要选项,cd/进入根目录
命令行3:pwd:
显示当前所处文件夹的位置:
不需要选项和参数
绝对路径和相对路径:绝对路径以/为起点,相对路径则是以当前目录为起点,直接访问当前目录下文件夹
特殊的路径符号:(1). 表示访问当前文件目录
(2).. 表示访问上一级目录
(3)~ 表示home目录
命令行4:mkdir:
创建一个新的文件夹
需要选项(-p),不需要参数
-p的作用:创建不存在的父类目录,适用于创建连续的多层次目录文件
注意:不能在home文件下创建文件
命令行5:touch:
创建一个新的文件
需要选项,不需要参数
touch和mkdir的区别:touch创建一个文件,而mkdir创建一个文件夹,两者对参数和路径的需求也不同
命令行6:cat:
查看文件内容
需要路径,不需要选项
命令行7:more:
查看文件内容
需要路径,不需要选项
cat和more的区别:cat不能翻页,一次性显示,而more可以翻页
命令行8:cp:
复制文件/文件夹
需要选项和参数(路径)
-r:对文件夹进行操作,表示递归
命令行9:mv:
移动文件/文件夹
需要路径,不需要选项
如果移动位置不存在,则会修改文件名
*命令行10:rm:
删除文件/文件夹
需要选项和路径,路径(参数)个数不限
-r:删除指定文件夹,表示递归
-f:强制删除,需要root权限(su-root password)
支持通配符*,模糊匹配
*test:删除后面为test的文件
test*:删除前面为test的文件
命令行11:which:
查找命令行提示符所处文件夹位置
不需要选项和路径
命令行12:find:
查找指定文件/文件夹位置
find 文件路径 -name ”文件名“
find 文件路径 -size +/-n(K,M)+/- 多于或少于
命令行13:grep:
通过关键词过滤文件
grep -n ”关键字“ ”文件路径“
-n:表示关键词出现的次数
命令行14:wc:
统计目标文件中的字符,字节,单词,行数
-m:统计字符个数
-c:统计字节个数
-l:统计行数
-w:统计单词数
管道符:
将左边输出的结果作为右边的输入,可同时使用多个
命令行15:echo:
在命令行输出指定内容
反引号:··,echo+··输出命令
命令行16:tail:
追踪文件更新
需要选项和路径,-f,-num
-f:追踪持续更新的文件
-num:追踪更新文件的末几行,默认十行
vi编辑器:
vi+文件名,进入命令模式,按i进入输入模式,dd删除,u撤回,yy复制,nyy向下复制n行,p粘贴,esc退回命令模式,输入wq保存并退出,也可以只按q退出,按q!强制退出,输入set nu设置行号,i在当前位置输入,a在光标后输入,I在当前行开头输入,A在当前行结尾输入,o在光标上一行输入,O在光标下一行输入,无论任何情况下,esc都可以回到命令模式
命令行17:su,sudo,visudo,exit:root权限
su - root:输入密码获得root权限
sudo 命令:以临时管理员身份执行命令
exit:退出管理员身份
visudo:在文件末尾添加 :用户名 ALL=(ALL) NOPASSWD:ALL(需要以root用户方式运行)
普通到root用户需要密码,反之不用
linux权限管理单元分别是用户组和用户级别
命令行18:groupadd和groupdel:
添加或删除用户组(需要root权限去执行)
命令行19:useradd:
添加用户
useradd 用户名 [-g -d]
-g:指定用户组加入,指定的用户组必须存在,如果不使用-g,将会自动创建同名用户组加入,如果已经存在同名用户组,必须使用-g
-d:指定用户HOME路径,如果不使用-d,将会自动创建HOME路径
命令行20:userdel:
删除用户
userdel -r 用户名
-r:如果不加,将保留HOME目录下文件目录,反之则会删除
命令行21:id:显示用户信息
命令行22:usermod:
移动用户到其他用户组
usermod -aG 用户组 用户名
命令行23:getent:
显示系统用户信息
getent passwd
命令行24:getent group:
显示系统用户组信息
用户权限:通过ls -l查看权限细节
第一列:共十个槽位,第一位分为-,l,d,-表示文件,l表示软链接,d表示文件夹
剩下每三个为一组分别表示用户权限,用户组权限,其他用户权限
权限分为r,x,w三种,r表示读权限,x表示执行权限,对文件夹体现为cd命令,对文件表示是否能作为程序执行,w表示写权 限,如果显示-则表示无此类权限
第二列:表示所属用户组
第三列:表示所属用户
命令行25:chmod:
修改权限:
-
u:表示用户的权限信息**
-
g:表示用户组的权限信息**
-
o:表示其他用户的权限信息**
-
chmod u=?,g=?,o=? 文件名**
-
-R 修改文件夹内全部文件权限**
r=4,w=2,x=1
可以是root权限或者所属用户
命令行26:chown:
移动文件/文件夹到其他用户组/用户
-R:对文件夹内全部文件应用相同规则
chown -R 用户:用户组 文件名
只能是root权限
快捷键:
ctrl+c 停止,退出命令
ctrl+d 退出登录
ctrl+r 搜索匹配历史命令
history 查看历史命令
! 自动匹配最近执行的命令
ctrl+a 跳到命令开头
ctrl+e 跳到命令结尾
ctrl+-> 向右跳过一个单词
ctrl+<- 向左跳过一个单词
ctrl+l 清屏(或者clear命令)
命令行27:yum:
软件管理命令
yum [-y] [install/remove/search] 文件名
-y表示自动确认
运行yum需要root权限
在Ubuntu系统中,apt命令相当于yum命令
命令行28:systemctl:
控制软件的启动关闭,开机是否自启动
能够被systemctl管理的软件统称为服务
systemctl start/stop/enable/disable/status 服务
命令行29:ln:
创建软链接
软链接:将文件或文件夹链接到其他位置,类似快捷方式
ln -s 参数1 参数2
参数1:被链接的文件或文件夹
参数2:链接的目的地
命令行30:date:
查看时间日期或进行计算
date -d +[格式控制符]
-d进行时间日期计算:“+1 day” “-1 day” “+1 year” “-1 year” “+1 month”“-1 month”
格式控制符:%Y:显示年份
%y:显示年份后两位
%m:显示月份
%d:显示天数
IP地址:
IP是联网计算机的网络地址,用于在网络中定位
特殊的IP:
127.0.0.1 用于指代本机
0.0.0.0:
(1)指代本机
(2)用于确认端口绑定信息
(3)在一些IP限制规则中,此IP表示本机,如放行规则设置为0.0.0.0,表示允许任意IP访问
主机名:
通过hostname查看,也可以通过hostnamectl修改主机名(sethostname)
查找顺序:
先在系统本地查询,查询不到,则在DNS服务器上查询
网络请求和下载:
命令行31:ping:
检查指定服务器是否连通的
ping [-c num] IP或者主机名
-c和num表示检查次数,不加-c表示无限次检查
命令行32:wget:
非交互式的文件下载器
wget [-b] url
-b:表示后台下载
url:下载链接
命令行33:curl:
发起网络请求
curl [-O] url
-O:表示文件下载,可选填
不加-O,将只获取网络信息
端口:
设备与外界交流的出入口
端口分为物理端口和虚拟端口,计算机之间通过IP查找交流,而程序则需要端口来查找交流
物理接口:又称之为接口,可见,如USB
虚拟端口:不可见,计算机内部端口,用于操作系统与外界交流
公认端口:1~1023 系统内置,非必要不要占用此范围的端口
注册端口:1024~49151 可以随意使用,通常绑定一些程序/服务
动态端口:49152~65535 通常绑定固定程序,而是当电脑对外进行网络链接时,当作临时端口使用
命令行34:nmap和netstat
nmap IP:查看指定IP的信息
netstat -anp|grep 端口名:查看指定端口
两个命令行均需要安装对应服务
进程:
每个程序在运行的时候,系统都会为之注册一个进程,并分配一个进程ID
命令行35:ps [-e -f]
-e:显示全部进程
-f:以完全格式化的方式显示进程信息
通常,写为 ps -ef
ps -ef|grep 进程名
UID:用户ID
PID:进程ID
PPID:进程的父ID(启动此进程的ID号)
C:进程的CPU占比率
STIME:进程的启动时间
TIME:进程占CPU的运行时间
TTY:启动此进程的终端序号
CMD:启动此进程的路径
命令行36:kill [-9] 进程ID
-9:强制关闭命令,如果不加-9,则进程是否关闭将取决于进程本身机制
查看主机状态
命令行37:top:
系统资源监控
使用top命令查看主机状态,直接输入top命令即可,每5秒刷新一次
top命令结果头五行:
第一行:top(命令名称) 启动时间 up:运行时间 user:用户数量 load average:cpu的1,5,15分钟的负载
第二行:Tasks:总进程数量(total) running(正在运行的进程数量) sleeping(睡眠进程的数量) stopped(停止进程的数量
zombie(僵尸进程的数量)
第三行:%CPU(s):CPU使用率 us:用户CPU使用率 sy:系统CPU使用率 ni:高优先级进程占CPU使用时间百分比
id:空闲CPU率 wa:IO等待CPU占用率 hi:CPU硬件中断率 si:CPU软件中断率 st:强制等待占用CPU率
第四、五行:Kib Mem:物理内存 total:总量 free:空闲 used:使用 buff/cache:buff和cache占用
Kib Swap 虚拟内存(交换空间):total:总量 free:空闲 used:使用 buff/cache:buff和cache占用
PID:进程ID
USER:进程所属用户
PR:进程优先级,越小越高
NI:负值表示高优先级,正值表示低优先级
VIRT:进程使用虚拟内存,单位KB
RES: 进程使用物理内存,单位KB
SHR:进程使用共享内存,单位KB
S:进程状态(S:休眠状态,R:运行状态,Z:僵尸状态,N:负数优先级,I:空闲状态)
%CPU:进程占用CPU率
%MEM:进程占用内存率
TIME+:进程使用CPU时间总计,单位10毫秒
COMMAND:进程的命令或名称或者文件路径
-p:只显示某个进程的信息
-d:设置刷新时间,默认是5s
-n:设置刷新次数,刷新n次以后退出
-c:显示更加完整的命令
-i:不显示睡眠和无用进程
-b:不交互
交互选项:
h:会显示帮助信息
c:会显示进程完整信息
命令行38:df [-h]
:查看硬盘使用情况(查看磁盘使用率)
-h:以更加人性化的单位显示
命令行39:iostat:查看磁盘资源情况(查看磁盘速率)
iostat -x num1 num2:显示更多信息
num1:几秒刷新一次
num2:一共刷新几次
%util:磁盘利用率
rkb/s:每秒发送到磁盘的读请求数
wkb/s:每秒发送到磁盘的写请求数
命令行40:sar:
查看网络状态
sar -n DEV num1 num2
-n:查看网络状态
-DEV:查看网络接口状态
num1:刷新间隔,每几秒刷新一次
num2:总共刷新几次
rxKB/s:每秒钟接收的数据包的大小
txKB/s:每秒钟发送的数据包的大小
环境变量:
环境变量是操作系统在运行的时候保留下来的一些关键性信息,用以辅助系统的运行
可以通过env命令查看系统保留的环境变量,环境变量是Keyvalue型结构
$符号:
$符号被用于取“变量”的值,环境变量记录的值,除了操作系统可以使用外,用户也可以使用
使用echo输出环境变量记录的值,echo $环境变量
liunx用户也可以自行设置环境变量,分为两种情况:
(1)临时有效:
export 变量值=变量名
(2)永久有效:
仅对本用户生效:vim ~/.bashrc 末尾添加export 变量名=变量值
对全部用户生效:vim /etc/profile 末尾添加export 变量名=变量值
source 配置文件
export PATH=$PATH:自定义路径
文件上传和下载:rz(上传)和sz(下载)
sz 文件路径: 从linux传输到windows
rz : 从Windows上传到linux
压缩和解压:
zip格式:Linux、Windows、macos,常用
7zip格式:Windows系统常用
rar格式:Windows系统常用
tar:Linux,MACOS常用
gzip:Linux,MAcOS常用
.tar:tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
.gz:使用gzip压缩算法将文件压缩到一个文件内,大大减少文件的体积
命令行41:tar:
压缩和解压缩文件
tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
-c:创建压缩文件,用于压缩模式
-v:显示压缩、解压进程,用于查看进度
-x:解压模式
-f:指定要解压或者压缩的文件 此选项必须出现在所有选项的最后面
-z:使用gzip模式,不使用-z就是普通的tarball格式
-C:选择解压的目的地,用于解压模式
命令行42:zip:
zip命令压缩文件
语法 zip [-r] 参数1 参数2 ... 参数N
-r:被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp命令中的-r效果一样
命令行43:unzip:解压zip文件
语法 unzip [-d] 参数
-d:指定文件解压路径,同tar的-C一样
参数,被解压的zip压缩包文件
```
struct A
{
virtual func() = 0;
};
struct B : A
{
}
struct C : A
{
}
B b{};
A& ptr = b;
ptr = c; <==> b = c
int b = 4; int &a = b; int * const a = &b; //const修饰指针,故指针指向无法修改