Linux文件系统结构是从Unix文件结构演进过来的。在Linux文件系统中,通用的目录名用于表示一些常见的功能。
Linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层是 根目录 “/”,然后在此目录下再创建其他的目录。在Linux中,一切皆文件。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231102601903.png&pos_id=img-PYwQYZyb-1704206598591)>
下面列出了一些较常见的Linux顶层虚拟目录名及其内容。
目录 | 用途 |
---|---|
/ | 虚拟目录的根目录。通常不会在这里存储文件 |
/bin | 【常用】二进制目录,存放着最经常使用的命令 |
/sbin | s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序 |
/home | 【常用】存放普通用户的主目录。在Linux中每个用户都有一个自己的目录,一般该目录名就是用户名 |
/root | 【常用】系统管理员目录,也称作超级权限者的用户主目录 |
/lib | 库目录,存放系统和应用程序的库文件 |
/etc | 【常用】系统配置文件目录,比如安装 mysql 数据库 my.conf |
/usr | 【常用】用户二进制目录,大量用户级的应用程序和数据文件都存储在这里,类似与Windows下的program files目录,其中/usr/local一般作为安装位置。 |
/boot | 启动目录,存放启动文件 |
/media | 媒体目录,可移动媒体设备的常用挂载点 |
/tmp | 临时目录,可以在该目录中创建和删除临时工作文件 |
/dev | 【常用】设备目录,Linux在这里创建设备节点 |
/mnt | 【常用】挂载目录,另一个可移动媒体设备的常用挂载点 |
/opt | 可选目录,常用于存放第三方软件包和数据文件 |
/var | 可变目录,用以存放经常变化的文件,比如日志文件 |
/proc | 【别动】进程目录,存放现有硬件及当前进程的相关信息 |
/srv | 【别动】服务目录,存放本地服务的相关文件 |
/sys | 【别动】系统目录,存放系统硬件信息的相关文件 |
工作场景:Linux服务器是开发小组共享,正式上线的项目是运行在公网,因此程序员需要远程登录到Linux进行项目管理或者开发。远程登录客户端有 Xshell6、Xftp6,我这里使用的是FinalShell,其他远程工具大同小异
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231105418490.png&pos_id=img-GG4VJAh4-1704206612085)>
先要知道Linux服务器的IP地址。使用ifconfig
命令在Linux服务器终端查看IP地址。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231103742486.png&pos_id=img-LYwXw8Bi-1704206617007)>
在本地主机上打开cmd使用ping
测试连通性
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231103840933.png&pos_id=img-1JjftcSi-1704206631890)>
ping通之后在FinalShell中新建ssh连接,输入Linux主机的IP地址和用户名、密码,点击确认后窗口中会弹出选项,选择一次性接收(类似登录的不保存账号密码) 或接受并保存(类似登录的记住账号密码)
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231104120072.png&pos_id=img-eHrBVzxd-1704206651955)>
连接成功
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231104546644.png&pos_id=img-xJRiAWx1-1704206667516)>
找到下方文件区域的这个上传按钮,点击就可以直接上传Windows本机文件到Linux服务器。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231105048623.png&pos_id=img-Sd7rWDPE-1704206671795)>
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231105129537.png&pos_id=img-dTPcWwHg-1704206675181)>
Linux系统内置vi文本编辑器。Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译及错误跳转等方便编程的功能特别丰富,现在被广泛使用。
正常模式
以vim打开一个档案就直接进入一般模式了(这是默认的模式)
在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、粘贴】来处理你的文件数据。
插入模式
按下i、I、o、O、a、A、r、R等任何一个字母之后才会进入编辑模式,一般来说按i即可。输入完成后,按键盘上的Esc键,即可回到正常模式。
命令行模式
在正常模式下输入:,即可进入该模式,在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作。比如输入:q
表示直接退出,输入:wq
表示保存并退出,
案例:
直接输入vim hello.java
并回车,如果该目录下没有该文件,将会自动创建一个
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231111258637.png&pos_id=img-5TKIMLS7-1704206678355)>
输入i进入到插入模式,这时候就可以编辑文本内容了,输入结束后,按下Esc键回到正常模式。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231111739829.png&pos_id=img-jLZvog92-1704206693317)>
最后输入:wq
保存并退出。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231111828398.png&pos_id=img-CA7c7eip-1704206710246)>
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231112027117.png&pos_id=img-ceAHfavo-1704206725202)>
以下操作都是在正常模式下键入
拷贝当前行,输入yy
,拷贝当前向下的5行,即5yy
;
粘贴,输入p
;
删除当前行,输入dd
,删除当前向下的5行,即5dd
;
撤销操作,输入u
;
定位文档的最末行G
,定位最首行gg
;
光标移动到某行,输入行号 shift+g
,或者行号 G
;
在文件中查找某个单词,输入/关键字
,找到的关键字会高亮
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231113050891.png&pos_id=img-a00UFo4G-1704206738017)>
以下操作是在命令行模式下输入
设置文件的行号,:set nu
,取消文件的行号:set nonu
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fvim%E9%94%AE%E7%9B%98%E5%9B%BE.png&pos_id=img-0YWpgLn1-1704206785282)>
命令 | 作用 |
---|---|
shutdown -h now | 立刻进行关机 |
shutdown -h 1 | 1分钟后关机(直接输入shutdown的默认选项) |
shutdown -r now | 现在重新启动计算机 |
halt(停止) | 关机,和第一条是一样的 |
reboot | 现在重新启动计算机 |
sync | 把内存的数据同步到磁盘 |
注意:
登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用
普通用户登录,登录后再用su - 用户名
命令来切换身份
在提示符下输入 logout 即可注销用户。logout在图形运行级别是无效的,在运行级别3下有效
如果使用的是root用户登录,logout会无效
如果是用的普通用户admin登录,使用logout可以直接断开连接
最开始登录时用的是admin用户,使用su - root
切换到root,这时候使用logout可以注销root用户回到admin用户。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231120456739.png&pos_id=img-XGiQi9I3-1704206809776)>
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
基本语法:useradd 用户名
当创建用户成功之后,会在/home下自动创建与该用户同名的一个文件夹
也可以使用useradd -d 指定用户目录 用户名
,给新创建的用户指定用户目录。
基本语法:passwd 用户名
,??注意:如果没有写用户名,那么修改当前登录用户的密码
显示当前用户所在的目录使用pwd
基本语法:userdel 用户名
,注意:
userdel 用户名
这个命令并不会删除用户目录,仍保留在/home目录中的;userdel -r 用户名
这个命令会直接删除/home目录下该用户的所有文件,谨慎执行。基本语法:id 用户名
基本语法:su - 用户名
从权限高的切换到权限低的用户不用再输入密码,反之需要;
当需要返回到原来用户时,使用 exit/logout 指令。
基本语法:who am i
,注意返回的是初始登录用户,不管中间使用su - 用户名
切换了多少次用户,返回的都是最开始登录的用户。
类似与角色,系统可以对有【共性/权限】的多个用户进行统一的管理
新增组:groupadd 组名
删除组:groupdel 组名
添加用户时直接加上组:useradd -g 用户组 用户名
特别的,如果添加一个新用户而没有指定组,那么系统会默认添加一个与用户名相同的组,并将该新用户添加进去
修改用户的组:usermod -g 新用户组 用户名
/etc/passwd
文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow
文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231181343344.png&pos_id=img-6mEg1uL8-1704206933012)>
/etc/group
文件
组 (group) 的配置文件,记录 Linux 包含的组信息
每行的含义:组名:口令:组标识号:组内用户列表
运行级别说明
0:关机
1:单用户〖找回丢失密码〗
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面(默认)
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别。
指定运行级别命令:init[0123456]
multi-user.target
表示运行级别3
graphical.target
表示运行级别5
当前的默认运行级别:systemctl get-default
设置默认的运行级别:systemctl set-default TARGET.target
重启之后就不会再默认进入到图形化界面了
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20231231190529651.png&pos_id=img-BNcP2Vb6-1704206948280)>
步骤:
在开机界面输入e
进入编辑界面,使用键盘上的上下键把光标往下移动,找到以"Linux16”开头内容所在的行”,在行尾输入:init=/bin/sh
输入完成后,直接按快捷键 Ctrl+X 进入单用户模式
在光标闪烁的位置中输入:mount -o remount,rw /
,完成后按键盘的Enter
再输入:passwd
,完成后按键盘的Enter,输入密码,然后再次确认密码
接着输入:touch /.autorelabel
,完成后按键盘的Enter
继续输入:exec /sbin/init
,完成后按Enter,等待系统自动修改密码,完成后,系统会自动重启。
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240101095756638.png&pos_id=img-PXnyh195-1704206983199)>
基本语法:man [命令或配置文件]
,功能描述:获得帮助信息
Linux下,隐藏文件是以
.
开头的文件。选项可以组合使用,比如:ls -la
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240101100928342.png&pos_id=img-CKCowBFM-1704207013828)>
基本语法:help 命令
,功能描述:获得shell内置命令的帮助信息
显示当前工作目录的绝对路径
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240101101748975.png&pos_id=img-hUJZCl2C-1704207044822)>
基本语法:ls [选项] [目录或文件]
常用选项:
-a:显示当前目录所有的文件和目录,包括隐藏的
-l:以列表的方式显示基本信息
切换到指定目录
基本语法:cd [参数]
cd ~
或cd
:会直接回到当前用户的用户目录,比如admin用户使用cd ~
,会切换到/home/admin
这个路径下。
cd ..
:回到当前目录的上一级目录
用于创建目录
基本语法:mkdir [选项] 要创建的目录
常用选项:
-p:创建多级目录
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240101104355874.png&pos_id=img-Hr6xs7Bo-1704207048686)>
rmdir
删除空目录
rmdir [选项] 要删除的目录
rm
删除文件或目录
基本语法:rm [选项] 要删除的文件或目录
常用选项:
-r:递归删除整个文件夹
-f:强制删除不提示
-rf:如果目录非空必须使用rm -rf
【谨慎使用】
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240101104755132.png&pos_id=img-PlTCHMID-1704207078816)>
创建一个空文件
基本语法:touch 文件名
拷贝文件到指定目录
基本语法:cp [选项] source dest
;
常用选项:
-r:递归拷贝整个文件夹
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240101105710075.png&pos_id=img-HCQ7FA0M-1704207094377)>
移动文件与目录或重命名
基本语法:
mv oldNameFile newNameFile
重命名文件mv /source/file /targetFolder
移动文件<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102134106705.png&pos_id=img-JAlqRg4P-1704207109056)>
查看文件内容
基本语法:cat [选项] 要查看的文件
常用选项:
-n:显示行号
cat
只能浏览文件内容,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件内容,more指令中内置了若干快捷键(交互的指令)。
基本语法:more 要查看的文件
操作 | 功能说明 |
---|---|
空白键(space) | 代表向下翻一页 |
Enter | 代表向下翻一行 |
q | 代表立刻离开more,不再显示该文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
用来分屏查看文件内容,功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次性将整个文件加载之后才显示,而是根据实际需要加载内容,对于显示大型文件具有较高的效率。
基本语法:less 要查看的文件
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页 |
pagedown | 向下翻动一页 |
pageup | 向上翻动一页 |
/字串 | 向下搜寻字串的功能;n:向下查找;N:向上查找 |
?字串 | 向上搜寻字串的功能;n:向下查找;N:向上查找 |
q | 离开 less 这个程序 |
输出内容到控制台
基本语法:echo [选项] [输出内容]
注意事项:
echo
命令下输出内容尽量使用单引号或者不使用符号用于显示文件的开头部分内容,默认显示文件的前10行内容
基本语法:head -n 行数 文件
显示文件尾部的内容,默认显示文件的后10行内容
基本语法:
tail -n 行数 文件
tail -f 文件
,实时显示文件的更新>:输出重定向
>>:追加
基本语法:
ls -l > 文件
,列表的内容写入文件中(覆盖写)ls -al >> 文件
,列表的内容追加到文件的末尾cat 文件1 > 文件2
,用文件1的内容覆盖掉文件2的内容echo '内容' >> 文件
,将内容追加到文件末尾<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102154147186.png&pos_id=img-19kO37pV-1704207124324)>
软链接,也称为符号链接,类似于Windows里面的快捷方式,主要存放了链接其他文件的路径
基本语法:ln -s [原文件或目录] [软链接名]
,如果不使用-s
创建的就是硬链接
注意:
rm 链接名
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102162409657.png&pos_id=img-OIdLp5Y4-1704207139738)>
查看已经执行过的历史命令,也可以执行历史命令
基本语法:history
注意事项:
!指令编号
可以快速执行这条指令history n
可以快速查看最近执行的n条指令<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102163124497.png&pos_id=img-iaPjf3zZ-1704207169809)>
显示当前日期
基本语法:
date
,显示当前时间date +%Y
,显示当前年份date +%m
,显示当前月份date +%d
,显示今天是哪一天date "+%Y-%m-%d %H:%M:%S"
,显示年月日 时分秒常用选项:
-s 字符串时间
,设置日期
基本语法:cal [年份]
,如果不加选项默认显示本月日历
将从指定目录向下递归查找各子目录,将满足条件的文件或者目录显示在终端
基本语法:find [搜索范围] [选项]
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件,+n大于,-n小于,n等于,单位可以是k,M,G,默认是M |
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102183007195.png&pos_id=img-jh53jzQd-1704207183458)>
locate 指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库,实现快速定位给定的文件,无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确度,管理员必须定期更新locate时刻
基本语法:locate 搜索文件
注意:由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb
指令创建 locate数据库
可以查看某个指令在哪个目录下
基本语法:which 指令名
grep过滤查找,管道符号|表示将前一个命令的处理结果输出传递给后一个指令处理。
基本语法:grep [选项] 查找内容 源文件
在 grep 命令中,^
表示行首(即开头)。所以,^-
表示以 “-” 开头的行;
$
表示行尾(即结尾),-$
表示以"-"结尾的行。
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母的大小写 |
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102205954115.png&pos_id=img-0AuHN7DH-1704207199174)>
gzip用于压缩文件,gunzip用于解压文件
基本语法
gzip 文件
,压缩文件,只能将文件压缩为 “.gz文件”gunzip 文件.gz
,解压缩文件命令zip 用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用
基本语法:
zip [选项] 压缩包名称.zip 要压缩的文件或目录
,压缩文件和目录的命令
unzip [选项] xxx.zip
,解压缩文件
zip 常用选项
-r
:递归压缩,即压缩目录
unzip 常用选项
-d 目录
:指定解压后文件的存放目录
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102211344668.png&pos_id=img-AHfvvKjT-1704207213319)>
tar是打包指令,最后打包后的文件是 .tar.gz
的文件
基本语法:tar [选项] xxx.tar.gz 打包的内容
选项 | 功能 |
---|---|
-c | 产生 .tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 通过gzip压缩 |
-x | 解包 .tar文件 |
常用的压缩选项是 -zcvf
连用,解压缩则是 -zxvf
<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Ffastly.jsdelivr.net%2Fgh%2Ftteongmingjie%2Fpicgo%2Fblog-images%2Fimage-20240102213435325.png&pos_id=img-ARhqaGXa-1704207226800)>