Linux
基础命令
命令基础格式command [-options] [parameter]
- command : 命令本身
- [] : 可选,非必填
- options : 命令的一些选项
- parameter : 命令的参数
ls
ls [-a -l -h] [Linux 路径]
- -a -l -h 是可选的选项
- Linux路径是此命令可选的参数
-a
表示all
的意思,即列出全部文件(包含隐藏的文件/文件夹),以.
开头的文件夹就是Linux系统中隐藏的文件/文件夹。-l
表示以列表(竖向排列)的形式展示内容,并展示更多信息。-h
表示以易于阅读的形式,列出文件大小,需要和-l
搭配使用。
cd和pwd
终端打开时,会默认以用户的HOME目录作为当前的工作目录
cd来自英文:Change Directorycd [Linux路径]
cd
命令无需选项,只有参数,切换目录cd
命令直接执行,不写参数,表示回到用户的HOME目录
pwd
查看当前所在的工作目录(Print Work Directory)
pwd
命令,无选项,无参数,直接输入pwd即可
特殊路径符
.
:表示当前目录..
:表示上一级目录~
:表示HOME目录
mkdir
可以创建新的目录文件夹
mkdir来自英文:Make Directorymkdir [-p] Linux路径
- 参数必填,表示Linux路径,就是要创建的文件夹的路径
- -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
文件操作命令
touch
创建文件touch Linux路径
- touch命令无选项,参数必填
cat
查看文件的内容cat Linux路径
- cat同样没有选项,只有必填参数
more
也可以查看文件内容,不同的是:
- cat直接将内容全部显示出来
- more支持翻页,如果文件内容过多,可以一页一页显示
more Linux路径
- 没有选项,只有必填参数
- 在查看的过程中,通过空格翻页
- 通过q退出查看
cp
复制文件/文件夹cp [-r] 参数1 参数2
-r
,选项,可选,用于复制文件夹使用- 参数1,Linux路径,表示被复制的文件或文件夹
- 参数2,Linux路径,表示要复制去的地方
mv
mv命令可以用于移动文件/文件夹mv 参数1 参数2
- 参数1,Linux路径,表示被移动的文件或文件夹
- 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
rm
删除文件、文件夹rm [-r -f] 参数1 参数2 ... 参数n
-r
选项用于删除文件夹-f
表示force,强制删除(不会弹出提示确认信息)- 普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
- 所以一般普通用户用不到-f选项
- 参数1、参数2…参数n表示要删除的文件或文件夹路径,按照空格隔开
rm命令支持通配符*
,用来做模糊匹配
- 符号
*
表示通配符,即匹配任意内容(包含空) test*
,表示匹配任何以test开头的内容*test
,表示匹配任何以test结尾的内容*test*
,表示匹配任何包含test的内容1
2
3
4以下命令慎用
rm -f *
rm -rf *
rm -rf /*
查找命令which和find
linux命令的本体是一个个二进制可执行程序,和Windows系统中的.exe文件是一个意思。
which命令可以查看所使用的一系列命令的程序放在哪里。which 要查找的命令
find命令搜索指定的文件
find 起始路径 -name "被查找的文件名"
find 起始路径 -size +|-n[KMG]
- +、-表示大于和小于
- n表示大小数字
- KMG表示大小单位
grep
从文件中通过关键字过滤文件的行grep [-n] "关键字" 文件路径
-n
表示在结果中显示匹配的行的行号- 参数
"关键字"
,必填,表示过滤的关键字。 - 参数
文件路径
,必填,表示要过滤的文件的文件路径,可作为内容输入端口
。
wc
统计文件的行数、单词数量。wc [-c -m -l -w] 文件路径
-c
:统计bytes数量-m
:统计字符数量-l
:统计行数-w
:统计单词数量- 参数
文件路径
,被统计的文件,可作为输入内容端口
管道符 |
将管道符左边命令的结果作为右边命令的输入
echo
在命令行内输出指定内容echo "输出的内容"
- 无需选项,只有一个参数,表示要输出的内容
反引号 `
被`包围的内容,会被当做命令执行,而非普通字符
重定向符>
和>>
>
将左侧命令的结果,覆盖 写入到符号右侧指定的的文件中>>
将左侧命令的结果,追加 写入到符号右侧指定的文件中
tail
查看文件尾部内容,跟踪文件的最新更改tail [-f -num] Linux路径
- 参数
Linux路径
,表示被跟踪的文件路径 - 选项,
-f
,表示持续跟踪 - 选项,
-num
,表示查看尾部多少行,不填默认10行
man
man手册就是linux下提供给用户查看linux语法的一本书man 要查询的东西
file
查看文件类型及其编码格式。file [-option] [file]
-i或-mime
:显示文件的MIME类型。-b
:省略文件名,只显示文件类型。-m
:魔术数据库文件,用于指定一个自定义的魔术数据库文件。-v
:显示版本信息。
readelf
显示elf文件信息readelf [-options] [file]
-h或--file-header
:显示文件的头部信息,包括文件类型、架构、入口点、程序头表和节头表的偏移量等。-h
:显示ELF文件头。-s或-syms
:显示文件中的符号表信息。-e或--program-headers
:显示程序头表信息,包括程序的加载地址等。-l或--section-headers
:显示节(section)头部信息,列出文件中所有的节。-S
:显示节的详细信息,包括节的大小、位置等。-n
:查看给定elf文件中NOTE条目的可读描述。-r
:显示重定位表。-d
:显示动态节。-W或-wide
:以宽格式显示输出,适合在宽屏幕上查看。-x
:显示十六进制的值。-V
:显示版本信息。
objdump
查看目标文件或可执行文件的组成信息,以可读的形式打印二进制文件的内容。objdump [options] OBJFILES
-h
:显示目标文件各个section的头部的摘要信息。-s
:显示所有请求的节(sections)的完整内容。-j
:指定只显示指定节(section)的信息。
ld
ld
命令是二进制工具集GNU Binutils的一员,是GNU链接器,用于将目标文件与库链接为可执行文件或库文件。ld [OPTIONS] OBJFILES
nm
列出目标文件的符号表。nm [options] fileName
-g
:只显示外部(导出)符号表。-D
:显示动态符号而不是普通符号。-C
:不进行低级符号名混淆。
less
less命令是一个非常常用的文本查看工具,它可以用于查看任意大小的文本文件,支持滚动翻页、搜索、标记等功能。
tree
以树状图的形式列出目录的内容。
whoami
显示当前用户的用户名的命令。
vi/vim编辑器
vi/vim是Linux中经典的文本编辑器。
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以以不同颜色的字体来辨别语法的正确性。
vi/vim编辑器的三种工作模式
- 命令模式
以命令驱动执行不同的功能,不能进行文本编辑 - 输入模式
可以对文件内容进行自由编辑 - 底线命令模式
以:开始,通常用于文件的保存退出
不管在哪一个模式下,按下ESC
,就可以回到命令模式。
命令模式
通过vi/vim编辑器编辑文件,可执行如下命令:vi 文件路径
vim 文件路径
- 如果文件不存在,此命令会用于编辑新文件
- 如果文件存在,此命令会用于编辑已有文件
进入vi编辑器会进入命令模式,通过命令模式输入指令,可以进入输入模式,从输入模式退回到命令模式,然后通过命令进入底线模式,保存文件并退出vi编辑器。
底线命令模式
用户和权限
root
在Linux系统中,拥有最大权限的用户名为:root(超级管理员)
su和exit
su
命令用于账户切换,其英文来源是:Switch Usersu [-] [用户名]
-
符号是可选的,表示是否在切换用户后加载环境变量,建议带上
- 参数:
用户名
,表示要切换的用户,用户名可以省略,省略表示切换到root
- 切换用户后,可以通过
exit
命令退回上一个用户,也可以使用快捷键:ctrl+d
- 使用普通用户,切换到其他用户需要输入密码
- 使用
root
用户切换到其他用户,无需密码,可以直接切换
sudo
使用sudo
命令为普通的命令授权,临时以root
身份执行。sudo 其他命令
- 在其他命令之前加上
sudo
,即可为这一条命令临时赋予root
权限 - 但不是所有用户都有权利使用
sudo
,需要为普通用户配置sudo
认证
为普通用户配置sudo认证
切换到
root
用户,执行visudo
命令,会自动通过vi编辑器打开:/etc/sudoers
在文件的最后添加:
"用户名" ALL=(ALL) NOPASSWD: ALL
- 其中最后的
NOPASSWD:ALL
表示使用sudo命令,无需输入密码
- 其中最后的
最后通过
wq
保存切换回普通用户
通过sudo执行命令,不需要密码
用户和用户组
在Linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组中
关于权限的管控级别有2个级别:
- 针对用户的权限控制
- 针对用户组的权限控制
用户组管理
以root用户执行
- 创建用户组
groupadd 用户组名
- 删除用户组
groupdel 用户组名
用户管理
以root用户执行
- 创建用户
user [-g -d] 用户名
- 选项:
-g
指定用户的组,不指定-g
,会创建同名组并自动加入,指定-g
需要组已经存在,如已存在同名组,必须使用-g
- 选项:
-d
指定用户HOME路径,不指定,HOME目录默认在:/HOME/用户名
- 选项:
- 删除用户
user [-r] 用户名
- 选项:
-r
,删除用户的HOME目录,不使用-r
,删除用户时,HOME目录保留
- 选项:
- 查看用户所属组
id [用户名]
参数:用户名,被查看的用户,如果不提供则查看自身 - 修改用户所属组
usermod -aG 用户组 用户名
- 将指定的用户加入到指定的用户组
getent
getent passwd
可以查看当前系统中有哪些用户
有7份信息,分别是:
用户名:密码(X):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)getent group
可以查看当前系统中有哪些组
包含3份信息
组名称:组认证(显示为x):组ID
权限控制信息
通过ls -l
命令可以以列表形式查看目录内容,并显示权限细节
- 文件、文件夹的权限控制信息
- 文件、文件夹所属用户
- 文件、文件夹所属用户组
权限信息的认识
权限信息占10个槽位
rwx
- r表示读权限
- 针对文件可以查看文件的内容
- 针对文件夹可以查看文件夹内容
- w表示写权限
- 针对文件表示可以修改此文件
- 针对文件夹表示可以在文件夹内创建、删除、改名等操作
- x表示执行权限
- 针对文件表示可以将文件作为程序执行
- 针对文件夹表示可以更改工作目录到此文件夹,即cd进入
chmod
修改文件、文件夹的权限信息(只有文件、文件夹的所属用户可以修改或root用户可以修改)。chmod [-R] 权限 文件或文件夹
-R
:对文件夹和文件夹内的全部内容的权限进行修改
权限的数字序号
权限可以用3位数字来代表,第一位数字表示用户权限,第二位数字表示用户组权限,第三位数字表示其他用户权限。
- 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
chmod 777 "文件或文件夹"
chown
修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其他用户或组,所有此命令只适用于root
用户执行chown [-R] [用户][:][用户组] 文件或文件夹
- 选项
-R
,对文件夹和文件夹内全部的内容进行修改 - 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
:
,用于分隔用户和用户组
chown -R root:root test
小技巧快捷键
ctrl+c
- 可以强制停止Linux某些程序的运行
- 命令输入错误时,可以退出当前输入,重新输入
ctrl+d
- 退出账户登录
- 退出某些特定程序的专属页面
ps:不能用于退出vi/vim
历史命令搜索
history
查看历史输入过的命令!
命令前缀,自动执行上一次匹配前缀的命令!
命令前缀加上history中对应命令的行号,即可执行history中对应行号的命令ctrl+r
,输入内容匹配历史命令,如果搜索到的内容是需要的- 回车键直接执行
- 键盘左右键,可以得到此命令(不执行)
光标移动快捷键
- ctrl+a,跳到命令开头
- ctrl+e,跳到命令结尾
- ctrl+键盘左键,向左跳一个单词
- ctrl+键盘右键,向右跳一个单词
清屏
ctrl+l
,可以清空终端内容clear
得到同样的效果
软件安装
yum为CentOS系统安装软件
yum命令
yum
:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题yum [-y] [install | remove | search] 软件名称
- 选项:
-y
,自动确认,无需手动确认安装或卸载过程 install
:安装remove
:卸载search
:搜索
yum
命令需要root
权限以及联网
apt为Ubuntu安装软件
apt [-y] [install | remove | search] 软件名称
用法和yum
一样
systemctl命令
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制
能够被systemctrl管理的软件,一般也称之为:服务systemctrl start | stop | status | enable | disable 服务名
- start,启动
- stop,关闭
- status,查看状态
- enable,开启开机自启
- disable,关闭开机自启
系统内置服务列举
- NetworkManage,主网络服务
- network,副网络服务
- firewalled,防火墙服务
- sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)
- 略
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
- 如ntp,服务名为ntpd
- httpd,apache服务器软件,服务名httpd
有的软件安装后没有自动集成到systemctl中,我们可以手动添加。
ln 软链接
在系统中创建软链接,可以将文件、文件夹链接到其他位置ln -s 参数1 参数2
-s
选项,创建软链接参数1
,被链接的文件或文件夹参数2
,要链接去的目的地
日期和时区
date命令
可以在命令行中查看系统的时间date [-d] [+格式化字符串]
-d
按照给定的字符串显示日期,一般用于日期计算-d
选项,可以按照给定的字符串显示日期,一般用于日期计算1
2
3
4
5
6date -d "+1 day" +%Y%m%d #显示后一天的日期
date -d "-1 day" +%Y%m%d #显示前一天的日期
date -d "-1 month" +%Y%m%d #显示上一月日期
date -d "+1 month" +%Y%m%d #显示下一月日期
date -d "-1 year" -%Y%m%d #显示上一年日期
date -d "+1 year" +%Y%m%d #显示下一年日期- 支持的时间标记为:
- year
- month
- day
- hour
- minute
- second
- 格式化字符串:特定字符串标记,来控制显示的日期格式
- %Y 年
- %y 年份后两位数字
- %m 月份
- %d 日
- %H 小时
- %M 分钟
- %S 秒
- %s 自 1970-01-01 00:00:00 UTC 到现在的秒数
修改Linux时区
使用root用户执行命令,修改时区为东八区
1 | rm -f /etc/localtime |
网络
IP地址
每台联网的电脑都会有一个地址,用于和其他计算机进行通讯
可以通过:ifconfig
命令查看本机的ip
特殊IP地址
127.0.0.1
指代本机0.0.0.0
特殊IP- 可以用于指代本机
- 可以在端口绑定中来确定绑定关系
- 在一些IP地址限制中,表示所有IP的意思,表示允许任意IP访问
主机名
每台电脑除了IP地址外,还可以有一个名字,称为主机名
Windows系统和Linux都可以给系统设置主机名
- Windows查看系统设备名称
- Linux可以用命令
hostname
在Linux中修改主机名
可以使用命令:hostnamectl set-hostname "主机名"
重新登陆即可看到更改
域名解析
先查看本机的记录(通过主机名找到对应计算机的IP地址)
- Windows:C:\Windows\System32\drivers\etc\hosts
- Linux: /etc/hosts
再联网去DNS服务器询问
配置Linux固定IP地址
当前我们的Linux操作系统的IP地址是通过DHCP服务获取的。DHCP
:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更。
在VMware Workstation中配置固定IP
- 在VMware Workstation中配置IP地址和网段(IP地址的范围)
- 在Linux系统中手动修改配置文件,固定IP
网络传输
使用ping命令检查服务器是否可联通
ping [-c num] ip或主机名
-c
,检查的次数,不使用-c
选项,将无限次持续检查ip或主机名
,被检查的服务器的IP地址或主机名地址
使用wget命令下载文件
wget是一个非交互式的文件下载器,可以在命令行内下载网络文件wget [-b] url
-b
,可选,后台下载,会将日志写入到当前工作目录的wget-log文件url
,下载链接
使用curl命令发起网络请求
发送http网络请求,可用于下载文件、获取信息等curl [-O] url
-O
,用于下载文件,当url是下载链接时,可以使用此选项保存文件url
,要发起请求的网络地址
端口
端口是设备与外界通讯交流的出入口。
- 物理端口:又可以称之为接口,是可见端口,如USB接口,HDMI端口等
- 虚拟端口:指计算机内部的端口,不可见,是用来操作系统和外部进行交互使用的
- 通过IP只能锁定计算机,但是无法锁定具体的程序。
- 通过端口可以锁定计算机上具体的应用程序,确保程序之间进行沟通。
IP地址相当于小区地址,而端口相当于门牌号了。
Linux系统可以支持65535个端口,这么多端口可以分为3类进行使用:
- 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要,不能占用这个范围的端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
- 动态端口:49152~65535,通常不会固定绑定程序,而是当时程序对外网进行网络链接时,临时使用
查看端口占用情况
可以使用nmap命令nmap 被查看的IP地址
netstat
可以通过netstat命令,查看指定端口的占用情况netstat -anp|grep 端口号
常用选项
-a
: 列出所有端口-l
: 只显示监听端口-t
: 显示 TCP 传输协议的连线状况-u
: 显示 UDP 传输协议的连线状况
进程管理
程序运行在操作系统中,是被操作系统所管理的。
每一个程序在运行的时候,便被操作系统注册为系统中的一个进程
。
并为每一个进程都分配一个独有的:进程ID(进程号)。
查看进程ps
通过PS命令查看Linux系统中的进程信息ps [options]
-A
,显示所有进程,同-e
选项-e
,显示出全部的进程-f
,以完全格式化的形式展示信息(展示全部信息)
ps -ef
列出全部进程的全部信息
1 | UID :进程所属的用户ID |
关闭进程kill
通过kill命令关闭进程。kill [-9] 进程ID
-9
,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
pidof
查找正在运行的特定程序的进程 ID(PID)。pidof [options] programName
主机状态监控
查看系统资源占用top
通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
直接输入top
即可,默认每5秒刷新一次,按q
或ctrl+c
退出
磁盘信息监控
使用df命令,可以查看硬盘的使用情况df [-h]
-h
以更加人性化的单位显示
使用iostat查看CPU、磁盘相关信息iostat [-x] [num1] [num2]
-x
显示更多信息num1
:数字,刷新间隔num2
:数字,刷新几次
网络状态监控
可以使用sar命令查看网络的相关信息sar -n DEV num1 num2
-n
,查看网络,DEV表示查看网络接口num1
,刷新间隔(不填就查一次结束)num2
,查看次数(不填就无限次数)
环境变量
执行env
可查看当前系统中记录的环境变量
环境变量是一种KeyValue型结构
环境变量:PATH
PATH记录了系统执行任何命令的搜索路径(路径之间以:
隔开)
执行任何命令就会从上述路径中搜索要执行的本体
$符号
在Linux系统中,$
符号用于取“变量”的值
比如echo $PATH
,取得PATH这个环境变量的值,并通过echo语句输出出来。
或者echo ${PATH}ABC
,通过{}来标注取的变量是谁
自行设置环境变量
- 临时设置
export 变量名=变量值
- 永久生效
- 针对当前用户生效,配置在当前用户的:
~/bashrc
文件中 - 针对所有用户生效:
/etc/profile
文件中 - 并通过语法:
source 配置文件
,进行立刻生效或重启
- 针对当前用户生效,配置在当前用户的:
export PATH=$PATH:自定义路径
一定要以此格式,否则之前的PATH
值可能会消失。
Linux文件的上传下载
有一种方式直接使用鼠标拖拽
rz、sz命令
- rz
进行上传 - sz
sz 要下载的文件
进行下载
压缩和解压
压缩格式
- zip格式:Linux、Windows、MacOS常用
- 7zip:Windows常用
- rar:Windows常用
- tar:Linux、MacOS常用
- gzip:Linux、MacOS常用
tar命令
有两种常见压缩格式,后缀名分别是:
- .tar,称之为tarball,归档文件,简单的将文件组装到一个.tar的文件内,仅仅是简单的封装。
- .gz,常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,极大减少压缩后的体积
对于这两种格式,可以用tar命令进行压缩和解压操作:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
-c
,创建压缩文件,用于压缩模式-v
显示压缩、解压过程,用于查看进度-x
,解压模式-f
,要创建的文件,或解压的文件,-f选项必须在所有选项中位置处于最后一个-z
,gzip模式,不使用就是tarball格式-C
,选择解压的目的地,用于解压模式
tar命令压缩
tar常用压缩组合有两种:
- tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt压缩到test.tar文件内 - tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt压缩到test.tar.gz文件内,使用gzip模式
要注意的是:
- -z选项要使用的话,一般处于选项第一个
- -f选项,必须在选项位最后一个
tar命令解压
tar常用解压组合有:
tar -xvf test.tar
解压test.tar,将文件解压至当前目录tar -xvf test.tar -C /home/itheima
解压test.tar,解压至/home/itheima
tar -zxvf test.tar.gz -C /home/itheima
以gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
注意:
-f
选项必须在最后一位-z
选项,建议在开头位置-C
单独使用,和解压的其他参数分开
zip命令
zip压缩
zip [-r] 参数1 参数2 ... 参数N
-r
,被压缩的文件包含文件夹的时候,需要使用-r
选项
unzip解压
unzip 参数 [-d]
-d
,指定要解压去的位置,同tar的-C选项参数
,被解压的zip压缩包文件
dpkg命令
dpkg --help
dpkg --version
管理deb包,可以对其安装、卸载、deb打包、deb解压等操作
1 | -i: 安装软件包 |
7z命令
解压
7z x [-r -o]
x
,代表解压文件,按原始目录解压-r
,表示递归解压所有的子文件夹-o
,指定解压到的目录,-o
后面没有空格直接跟目录
系统文件
/ect/hostname
这个文件里存放着主机名,可以进行修改