Linux学习
Linux学习
1.下载与安装
2.基础命令
2.0 特殊符号
- 通配符 * 搭配查询命令使用
- 管道符 | 管道符左边命令的结果可以作为右边命令的输入
- 重定向符 >和>> ,> 将左侧命令的结果,覆盖写入符号右侧指定的文件中,>> 将左侧命令结果,追加写入到符号右侧指定文件中
2.1 Linux命令基础格式
语法:command [-option] [parameter]
2.2 pwd 查看当前目录
2.3 cd:切换目录
cd # 回到当前用户的家目录
cd.. #回到上一级目录
cd ~ # 可用于表示用户家目录
cd /etc # 切换到/etc目录
cd - # 切换到跳转之前的上一次的目录
2.4 touch:创建文件
touch file1 # 创造文件
2.5 rm:删除文件
rm命令可用于删除文件、文件夹
语法:rm[-r -f] 参数1 参数2. 。。。参数N
-
-r 选项用于删除文件夹
-
-f 选项用于强制删除文件
rm命令支持通配符*,用来做模糊匹配
- 符号*表示通配符,及匹配任意内容
- *test 表示删除所有以test结尾的文件
2.6 ls:列出目标目录
ls:列出目标目录中的所有子目录和文件
格式:ls [选项] [目录名]
-a 用于显示所有文件和子目录(保罗点文件),展示出隐藏的内容
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-r 将目录的内容清单以英文字母顺序的逆序显示。
-t 按文件修改时间进行排序,而不是按文件名进行排序。
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-F 在列出的文件名和目录名后添加标志。例如,在可执行文件后添加“*”,在目录名后添加“/”以区分不同的类型。
-R 如果目标目录及其子目录中有文件,就列出所有的文件。
. 和..
. 表示当前目录
.. 表示父目录
文件类型
ls # 列出当前目录下的文件和目录
ls . # 列出当前目录下的文件和目录
ls .. # 列出当前目录的父目录下的文件和目录
ls /etc # 列出/etc目录下的文件和目录
ls -l # 以长格式显示文件信息
2.7 文件权限
rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人 的权限。
r : 表示可读, 可以用数字 4 来表示
w : 标识可写 ,可以用数字 2 来表示
x : 表示可执行 , 可以用数字 1 来表示
- :表示没有相应权限 可以用数字 0 来表示
2.8 mkdir 创建目录
语法:mkdir [-p] Linux路径
-p 选项的作用
可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
2.9 cat 查看文件内容
语法: cat Linux路径
2.10 more 查看文件内容
more 支持翻页,通常用于查看文件内容过多的文件
2.11 cp 复制文件文件夹
语法: cp [-r] 参数1 参数2
-
-r 选项,可选,用于复制文件夹使用,表示递归
-
参数1,Linux路径,表示被复制的文件或文件夹
-
参数2,Linux路径,表示要复制去的地方,复制过来的文件名等于参数2的名字
2.12 mv 移动文件或文件夹
语法 :mv 参数1 参数2
如果文件不存在,将会创造文件
2.13 su - root 切换到root用户
输入命令: su - root 并输入root密码,进入root账号登入
输入exit命令,返回普通用户
2.14 which 查找命令的所在的位置
例如:which cd
2.15 find 按文件名查找文件
按文件名查找
语法:find 起始路径 -name "被查找的文件名"
按文件大小查找
语法:find 起始路径 -size +|- n[kMG]
- +、-表示大于和小于
- n表示大小数字
- kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
- 例如:查找小于10KB的文件 find / -size -10k
支持使用通配符(*)
2.16 grep 从文件中通过关键字过滤文件行
语法:grep [-n] 关键字 文件路径
只显示包含关键字的所在行
- 选项-n ,可选,表示在结果中显示匹配的行的行号
- 参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,使用""把关键字包起来
- 参数,文件路径,可以作为管道符的输入
2.17 wc命令做数量统计
可以通过wc命令统计文件的行数、单词数量
语法:wc[-c -m -l -w] 文件路径
-
-c,统计bytes数量
-
-m,统计字符数量
-
-l,统计行数
-
-w,统计单词数量
-
参数,文件路径,被统计的文件,可以作为管道符的输入
2.18 echo 在命令行内输出指定内容
- 无需选项,只有一个参数,表示要输出的内容
- 例如:echo "hello world" 用双引号把字符串包起来
- echo
pwd
被反引号包围的内容将会被作为命令执行
2.19 tail 查看文件尾部内容,并可持续跟踪
- 查看文件尾部内容,并可持续跟踪
- 语法: tail [-f -num] Linux路径
- -f 设置查看尾部多少行,默认10行,可持续跟踪
- linux路径表示被查看的文件
2.20 ln命令创建软连接
在系统中创建软连接,可以将文件、文件夹链接到其他位置
类似windows系统中的快捷方式
语法: ln -s 参数1 参数2
- -s选项,创建软连接
- 参数1:被链接的文件或文件夹
- 参数2:要链接去的目的地
实例:
- ln -s /etc/yum.conf ~ /yum.conf 注意:~时home目录
2.21 su和exit命令
su命令就是用于账户切换的系统命令(Switch User)
语法: su [-] [用户名]
-
-符号是可选的,表示是否在切换用户后加载环境变量
-
参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
-
切换用户后,可以通过exit命令退回上一个用户,也可使用快捷键ctrl + d
-
使用普通用户,切换到其他用户需要输入密码
-
使用root用户,切换其他用户无需输入密码
2.22 sudo命令
使用sudo命令,为普通的命令授权,临时赋予root授权
语法 : sudo 其他命令
- 在其他命令之前,带上sudo,即可为这一条命令临时赋予root权限
- 需要为普通用户配置sudo认知,才能使用sudo
为普通用户配置sudo认证
- 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
- 在文件的最后添加: itchen ALL=(ALL) NOPASSWD: ALL
- 其中最后的NOPASSWD:ALL表示sudo命令,无需输入密码
- 最后通过wq保存
- 切换会普通用户
- 执行的命令,均以root运行
- 注意:在ubuntu中好像自动给普通用户配置了sudo认证,在输入sudo su - root 时不需要输入密码!
2.23 systemctl 命令
语法:systemctl start | stop |status |enable | disable 服务名
作用:可以控制软件(服务)的启动、关闭、开机自启动
- 系统内置服务均可被systemctl控制
- 第三方软件,如果自动注册了可以被systemctl控制
- 第三方软件,如果没有自动注册,可以手动注册
注意:ubuntu暂时用不了systemctl命令
2.24 date命令
date命令查看系统的时间
语法: date [-d ] [+格式化字符串]
- -d 按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年
- %y 年份后两位数字
- %m 月份(01,12)
- %d 日(01,31)
- %H 小时(00,23)
- %M 分钟(00,59)
- %S 秒(00,60)
- %s 自1970-01-01 00:00:00 UTC到现在的秒数
ps:可以用双引号包括起来
3.用户权限
3.0 Linux系统的超级管理员(root用户)
如何切换用户?如何设置root用户?
3.1 su和exit命令
su命令就是用于账户切换的系统命令(Switch User)
语法: su [-] [用户名]
-
-符号是可选的,表示是否在切换用户后加载环境变量
-
参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
-
切换用户后,可以通过exit命令退回上一个用户,也可使用快捷键ctrl + d
-
使用普通用户,切换到其他用户需要输入密码
-
使用root用户,切换其他用户无需输入密码
3.2 sudo命令
使用sudo命令,为普通的命令授权,临时赋予root授权
语法 : sudo 其他命令
- 在其他命令之前,带上sudo,即可为这一条命令临时赋予root权限
- 需要为普通用户配置sudo认知,才能使用sudo
为普通用户配置sudo认证
- 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
- 在文件的最后添加: itchen ALL=(ALL) NOPASSWD: ALL
- 其中最后的NOPASSWD:ALL表示sudo命令,无需输入密码
- 最后通过wq保存
- 切换会普通用户
- 执行的命令,均以root运行
- 注意:在ubuntu中好像自动给普通用户配置了sudo认证,在输入sudo su - root 时不需要输入密码!(已验证)
3.3 创建root用户的密码
3.3.1 背景
在安装Ubuntu系统时并没有设置root的密码,登录的时候也没有使用root账户。
当我们输入su命令,切换到root用户时候,会提示认证失败!
好像有个命令直接进入root用户
注意:在ubuntu中好像自动给普通用户配置了sudo认证,在输入sudo su - root 时直接切换到root用户,不需要输入密码!(已验证)
3.3.2 创建root用户的密码
给root创建一个密码,输入:sudo passwd root
看准提示进行输入,root的密码最好和其他用户的密码不同,以增加其安全性!
3.4 用户组管理
用户组管理
以下命令需root用户执行
-
创建用户组
groupadd 用户组名
-
删除用户组
groupdel 用户组名
用户管理
以下命令需root用户执行
-
创建用户
useradd[-g -d] 用户名
-
删除用户
userdel [-r] 用户名
-
查看用户所属组
id[用户名]
-
修改用户所属组
usermod -aG
getent passwd 查看系统全部用户信息
getent group 查看系统全部组信息
3.5 权限控制信息
认知权限信息
举例:drwxr-xr-x,表示
- 这是一个文件夹,首字母d表示
- 所属用户的权限师:rwx 就是有r有w有x
- 所属用户组的权限是:r-x 有r无w有x
- 其他用户的权限:r-x 有r无w有x
rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人 的权限。
r : 表示可读,
w : 表示可写 ,针对文件夹,可以在文件夹内:创建、删除、改名
x : 表示可执行 ,针对文件夹,表示可以更改工作目录到此文件夹,就是可以cd进入此文件夹
3.6 chmod命令 修改文件、文件夹的权限信息
使用chmod命令,修改文件、文件夹的权限信息
注意,只有文件、**文件夹的所属用户或root用户可以修改***
语法:chmod [-R] 权限 文件或文件夹
- 选项: -R,对文件夹内的全部内容应用同样的操作
- chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为:rwxr-x--x 其中:u表示user所属用户权限,g表示group用户组权限,o表示other其他用户权限
权限的数字序号
3.7 chown命令 修改文件、文件夹所属的用户和用户组
使用chown命令 修改文件、文件夹所属的用户和用户组
普通用户无法修改所属为其它用户或组,所有此命令只适用于root用户执行
语法: chown [-R] [用户] [:] [用户组] 文件或文件夹
- 选项 ,-R,同chmod,对文件夹内全部内容应用相同规则
- 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
- :用于分隔用户和用户组
实例:
-
chown root hello.txt 将hello.txt 所属用户修改为root
-
chown :root hello.txt 将hello.txt 所属用户组修改为root
-
chown root:itchen hello.txt 将hello.txt 所属用户修改为root,用户组修改为itchen
4.Linux文件
Linux系统中一切皆文件
Linux文件是正斜杠(/)路径,这才是正确的路径,而计算机使用反斜杠(\),这其实是不对的
因为(\)有表示转义字符的意思
在用windows时我们在进行一些配置时,有时候会用(\\)或者(/)来写路径,而不是直接用(\)
5.文件目录
bin目录放一些二进制命令
6.FinalShell连接Linux
6.1在Linux终端中输入ifconfig获取IP地址
inet 192.168.40.130 这一行的数字就是ip地址
6.2打开FinalShell新建连接,把主机名(IP),用户名,密码输入连接就行了
7. vi\vim编辑器
7.1 什么是vi、vim编辑器?
- vi\vim编辑器就命令行下的文本编辑器,用来编辑文件
- vim是vi的升级版,一般用vim就行,包含vi所有内容
7.2 基础命令
- vim 文件路径
- vi 文件路径
7.3 三种工作模式
-
命令模式: 默认进入命令模式,通过键盘快捷键控制文件内容
-
输入模式:在命令模式中按 i 进入输入模式,对文件内容进行编辑,按 esc 退回命令模式
-
底线命令模式:在命令模式中按冒号(:)进入,可以对文件进行保存、关闭等操作,输入wq进行保存并退出(先保存再退出,w放前面)
8. 实用技巧
-
ctrl + c
强制停止命令
退出当前输入,重新输入
-
ctrl + d
退出账户的登入
退出某些特定程序的专属页面
ps:不能用于退出vi/vim
历史命令搜索
输入history,查看历史输入过的命令
-
可以通过: !命令前缀,自动执行上一次匹配前缀的命令
-
ctrl + r 搜索历史命令
-
ctrl + a|e 光标移动到命令开始或结束
-
ctrl + 左箭头|右箭头,左右跳单词
-
ctrl + l 或clear命令 清屏
9. 软件管理命令
9.1 CentOS系统
在CentOS系统中,使用yum命令联网管理软件安装
yum语法:yum [-y] [install |remove | research] 软件名称
9.2 Ubuntu系统
在Ubuntu系统中,使用apt命令联网安装软件
apt语法:apt [-y] [install |remove | research] 软件名称
9.3 systemctl 命令
语法:systemctl start | stop |status |enable | disable 服务名
作用:可以控制软件(服务)的启动、关闭、开机自启动
- 系统内置服务均可被systemctl控制
- 第三方软件,如果自动注册了可以被systemctl控制
- 第三方软件,如果没有自动注册,可以手动注册
10.日期和时间
10.1 date命令查看系统的时间
语法: date [-d ] [+格式化字符串]
- -d 按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年
- %y 年份后两位数字
- %m 月份(01,12)
- %d 日(01,31)
- %H 小时(00,23)
- %M 分钟(00,59)
- %S 秒(00,60)
- %s 自1970-01-01 00:00:00 UTC到现在的秒数
ps:可以用双引号包括起来
10.2 如何修改Linux时区
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
10.3 ntp的作用
通过yum 安装ntp
可以自动联网同步时间,也可以手动同步时间通过 ntpdate -u ntp.aliyun.com手动校准时间
11.IP地址、主机名
11.1 什么是IP地址?
每一台联网的电脑都会有一个地址,用于和其他计算机进行通讯
IP地址主要有2个版本,V4和V6版本
IPv4的地址格式是:a.b.c.d 其中abcd表示0~255的数字
可以通过命令:ifconfig 查看本机的ip地址,如无法使用ifconfig,可以安装:yum -y install net-tools
特殊IP地址
- 127.0.0.1 这个ip指代本机
- 0.0.0.0 特殊IP地址
- 可以指代本机
- 可以在端口绑定中用来确定绑定关系
- 在一些ip地址限制中,表示所有ip的映射,如放行规则设置为0.0.0.0 ,表示允许任意ip访问
11.2 什么是主机名?
每一台电脑除了对外联络地址(IP地址)以外,也可以有应该名字,称之为主机名
在Linux中修改主机名
- 可以使用命令:hostname查看主机名
- 使用命令:hostnamectl stl-hostname 主机名,修改主机名(需要root)
11.3 什么是域名解析(主机名映射)
可以通过主机名找到对应的计算机的IP地址,这就是主机名映射(域名解析)
配置主机名映射
在Windows系统的:C:\Windows\System32\drivers\etc\hosts
最后添加 “你的ip地址” “主机名”
12.配置Linux固定IP地址
12.1 为什么需要固定IP?
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致ip地址频繁变更
如果我们配置了虚拟机IP地址和主机名的映射,那么ip变更,我们也需改变映射关系
12.2 在VMware Workstation中配置固定IP
-
在VMware Workstation中配置ip地址网关和网段(ip地址的范围)
- 点击打开VMware 点击编辑-->虚拟网络编辑器
- 先选择上面的VMnet8,再点击更改设置,将子网IP设置为192.168.88.0(88不是固定的,按需求可以自己更改,但后面对应的也要更改)
- 子网掩码设置为 255.255.255.0
- 在点击NAT设置,网关IP改成192.168.88.2 ,确定应用打开启动Linux虚拟机
-
在Linux系统中手动修改配置文件,固定IP
- 打开终端,使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33,填入如下内容(版本不同,不一定是ens33,需要自己去查询一下)
- systemctl stop network 再重新打开 systemctl start network 最后关闭虚拟机,重新启动,查看ifconfig
13.网络传输
13.1 下载和网络请求
13.1.1 ping命令
语法:ping [-c num] ip 或主机名
选项:-c ,测试的次数
13.1.2 wget命令
语法:wget [-b] url
选项:-b, 后台下载
13.1.3 curl命令
语法: curl [-O] url
选项: -O ,用于下载使用
13.2 端口
13.2.1 什么是端口?
端口是指计算机和外部交互的出入口,可以分为物理端口和虚拟端口
- 物理端口:USB、HDMI、DP、VGA、RJ45等
- 虚拟端口:操作系统和外部交互的出入口
IP只能确定计算机、通过端口才能锁定要交互的程序
13.2.2 端口的划分
- 公认端口:1-1023,用于系统内置或常用知名软件绑定使用
- 注册端口:1024-49151,用于松散绑定使用(用户自定义)
- 动态端口:49152-65535,用于临时使用(多用于出口)
13.2.3 查看端口占用
可以使用Linux命令去查看端口的占用情况
- 使用nmap命令,安装nmap: yum -y install nmap
语法: nmap 被查看的IP地址
22端口,一般是SSH服务使用,即FinalShell远程链接Linux所使用的端口
- 使用netstat命令,查看指定端口的占用情况
语法: netstat -anp | grep 端口号 ,安装netstat : yum -y install net-tools
14.进程管理
14.1 进程
程序运行再操作系统中,是被操作系统所管理的
为管理运行的程序,每一个程序再运行的时候,便被操作系统注册为系统中的一个:进程
并会为每一个进程都分配一个独有的:进程ID(进程号)
14.2 查看进程
通过ps命令查看Linux系统中的进程信息
语法: ps[-e -f]
选项:-e,显示出全部的进程
选项:-f,以完全格式化的形式展示信息(展示所有信息)
查看指定进程
- 在FinalShell中,执行命令:tail ,可以看到,此命令一直阻塞在哪里
- 我们可以使用管道符配合grep来进行过滤,如:ps -ef|grep tail
14.3 关闭进程
在Linux中,通过kill命令关闭进程
语法: kill [-9] 进程ID
选项: -9 ,表示强制关闭进程。
15.主机状态
15.1 查看系统资源占用
- 使用top命令查看CPU、内存使用情况,类似Windows任务管理器
top命令内容详解
-
top命令选项
- -p 只显示某个进程的信息
- -d 设置刷新时间,默认5s
- -c 显示产生进程的完整命令,默认是进程名
- -n 指定刷新次数
- -b 亦非交互全屏模式进行
- -i 不显示任何闲置(idle)或无用(zombie)的进程
- -u 查找特定用户启动的进程
-
top交互式选项
15.2 磁盘信息监控
-
使用df命令,可以查看硬盘的使用情况
语法:df[-h]
选项:-h ,以更加人性化的单位显示
-
使用iostat查看CPU、磁盘的相关信息
语法:iostat[-x] [num1] [num2]
-
选项:-x ,显示更多信息
-
num1: 数字,刷新间隔,num2:数s字,刷新几次
-
15.3 网络状态监控
- 使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)
- 语法:sar -n DEV num1 num2
- 选项: -n 查看网络,DEV表示查看网络接口
- num1:刷新间隔(不填就查看一次结束),num2:查看次数(不填无限次数)
16.环境变量
16.1 环境变量:PATH
无论当前的工作目录是什么,都能执行/usr/bin/cd 这个程序,这个就i是借助环境变量中PATH这个项目的值来做到的
PATH记录了系统执行任何命令的搜索路径,如上图记录了:
- /usr/local/bin
- /usr/bin
- /usr/local/sbin
- /home/itheima/.local/bin
- /home/itheima/bin
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
16.2 $符号
在Linux系统中,$符号被用于取“变量”的值
语法:$ 环境变量名
比如:echo $PATH
16.3 自行设置环境变量
Linux 环境变量可以用户自行设置,其中分为:
- 临时设置,语法:export 变量名=变量值
- 永久生效
- 针对当前用户生效,配置在当前用户的: ~/.bashrc文件中
- 针对所有用户生效,配置在系统的:/etc/profile中
- 并通过 语法:source 配置文件,进行立刻生效,或重新等了FinalShell生效
17.上传下载
rz、sz命令
rz、sz命令需要去安装,可以通过: yum -y install lrzsz 安装
- rz命令,进行上传,语法:直接输入rz即可
- sz命令进行下载,语法:sz 要下载的文件
18.压缩解压
压缩格式
- zip格式:Linux、Windows、MacOS,常用
- 7zip,rar:Windows系统常用
- tar:Linux、MacOS常用
- gzip:Linux、MacOS常用
18.1 tar命令
Linux和Mac系统常用2种压缩格式,后缀名分别是:
- .tar ,称之为tarball,归档文件,并没有太多文件体积减少,仅仅是简单的封装
- .gz 使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
针对这两种格式,使用tar命令均可以进行压缩和解压缩
语法: tar [-c -v -x -f -z -C] 参数1 参数2.。。。参数N
- -c 创建压缩文件,用于压缩模式
- -v 显示压缩、解压过程,用于查看进度
- -x 解压模式
- -f 要创建的文件,或要解压的文件,-f 选项必须在所有选项中位置处于最后一个
- -z gzip模式,不是-z就是普通的tarball格式
- -C 选择解压的目的地,用于解压模式
常见tar压缩组合
- tar -cvf test.tar 1.txt 2.txt 3.txt
注意:-z如果要选的话,放在第一位,-f 必须放在最后一位
常见tar解压组合
- tar -xvf test.tar
18.2 zip 命令压缩文件
语法: zip [-r] 参数1 参数2 参数3.。。。参数N
- -r 被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
18.3 unzip命令解压文件
语法: unzip [-d] 参数
- -d 指定要解压去的位置,同tar 的-C选项
- 参数,被解压的zip压缩包文件
本文作者:chenyuanhang
本文链接:https://www.cnblogs.com/agonysec/p/17354868.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步