文章目录
- 1.Linux系统的文件目录结构
- 2.Linux的基本指令
- 3.进阶指令
- 4.高级指令
- 5. vim编辑器
- 5.1vim三种模式(重点)
- 5.2命令模式
- 5.3模式间的切换(重点)
- 5.4末行模式
- 5.5编辑模式
- 5.6实用功能
- 5.7扩展
1.Linux系统的文件目录结构
Bin
:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。Dev
:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载 (类似windows下的分配盘符)。Etc
:该目录主要存储一些配置文件。Home
:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。Proc
:process,表示进程,该目录中存储的是Linux运行时候的进程。Root
:该目录是root用户自己的家目录。Sbin
:全称super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有super权限的用户才能执行。Tmp
:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。Usr
:存放的是用户自己安装的软件。类似于windows下的program files。Var
:存放的程序/系统的日志文件的目录。Mnt
:当外接设备需要挂载的时候,就需要挂载到mnt目录下。
2.Linux的基本指令
什么是Linux的指令?指在Linux终端(命令行)中输入的内容就称之为指令。一个完整的指令的标准格式:Linux通用的格式:
#指令主体(空格) [选项](空格) [操作对象]
一个指令可以包含多个选项,操作对象也可以是多个。例如:需要让张三同学帮忙去楼下小卖铺买一瓶农夫山泉水和清风餐巾纸,在这个指令中“买东西”是指令的主体,买的水和餐巾纸是操作的对象,农夫山泉、清风是操作的选项。
- ls指令(list)
- 含义:列出当前工作目录下的所有文件/文件夹的名称
- 蓝色:表示目录
- 绿色:代表可执行文件
- 红色:代表压缩文件
用法2:#ls 路径
用法3:#ls 选项 路径
含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
常见的语法:
- #ls -l 路径 ——
表示list,表示以详细列表的形式进行展示
- #ls -la 路径 ——
表示显示所有的文件/文件夹(包含了隐藏文件/文件夹
上述列表中的第一列字符表示文档的类型,其中“-”表示改行对应的文档类型为文件,“d”表示文档类型为文件夹。
在Linux中隐藏文档一般都是以“.”开头。
用法4:#ls -lh 路径
含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以可读性较高的形式显示。
- pwd指令
用法:#pwd (print working directory,打印当前工作目录)
- cd指令
含义:change directory,改变目录
语法:#cd 路径
在Linux中有一个特殊的符号“~”,表示当前用户的家目录。
切换的方式:#cd ~
- mkdir指令
- 作用:make directory,创建目录
语法1:#mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】
语法2:#mkdir -p 路径 - 含义:当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
语法3:#mkdir 路径1 路径2 路径3 …. 【表示一次性创建多个目录】
- touch指令
- 作用:创建文件
- 语法:#touch 文件路径 【路径可以是直接的文件名也可以是路径】(可一次性创建多个文件,用空格隔开)
- cp指令
- 作用:复制文件/文件夹到指定的位置
- 语法:#cp 被复制的文档路径 文档被复制到的路径
Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
- mv指令
- 作用:移动文档到新的位置
- #mv 需要移动的文档路径 需要保存的位置路径
补充:在Linux中重命名的命令也是mv,语法和移动语法一样。
- rm指令
- 作用:移除/删除文档
- 语法:#rm 选项 需要移除的文档路径
- 选项:
- -f:force,强制删除,不提示是否删除
- -r:表示递归
在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入“y/yes”,否则输入“n/no”
注意:如果在删除的时候不想频繁的确认,则可以在指令中添加选项“-f”,表示force(强制)
注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除确认询问,所以移除目录的时候一般需要使用-rf选项。
- 输出重定向
- 一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
>
:覆盖输出,会覆盖掉原先的文件内容
>>
:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
案例:使用覆盖重定向,保存ls -la 的执行结果,保存到当前目录下的ls.txt
- cat指令
- 作用1:cat有直接打开一个文件的功能。
- 语法1:#cat 文件的路径
- 作用2:cat还可以对文件进行合并
- 语法2:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径
3.进阶指令
- df指令
- 作用:查看磁盘的空间
- 语法:#df -h -h表示以可读性较高的形式展示大小
- free指令
- 作用:查看内存使用情况
- 语法:#free -m -m表示以mb为单位查看
- Swap:用于临时内存,当系统真实内存不够用的时候可以临时使用磁盘空间来充当内存。
- head指令
- 作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。
- 语法:#head -n 文件路径 【n表示数字】
- tail指令
- 作用1:查看一个文件的未n行,如果n不指定默认显示后10行
- 语法:#tail -n 文件的路径 n同样表示数字
- 作用2:可以通过tail指令来查看一个文件的动态变化内容【变化的内容不能是用户手动增加的】
- 语法:#tail -f 文件路径,该命令一般用于查看系统的日志比较多。
- less指令
- 作用:查看文件,以较少的内容进行输出,按下辅助功能键(
数字+回车、空格键+上下方向键)查看更多
- 语法:#less 需要查看的文件路径
- 在退出的只需要按下q键即可
- wc指令
- 作用:统计文件内容信息(包含行数、单词数、字节数)
- 语法:#wc -lwc 需要统计的文件路径
- -l:表示lines,行数
- -w:表示words,单词数 依照空格来判断单词数量
- -c:表示bytes,字节数
- date指令(重点)
- 作用:表示操作时间日期(读取、设置)
- 语法1:#date 输出的形式:2018年 3月 24日 星期六 15:54:28
- 语法2:#date +%F (等价于#date “+%Y-%m-%d” ) 输出形式:2018-03-24
- 语法3:#date “+%F %T” 引号表示让“年月日与时分秒”成为一个不可分割的整体,等价操作#date “+%Y-%m-%d %H:%M:%S”,输出的形式:2018-03-24 16:01:00
- 语法4:获取之前或者之后的某个时间(备份):#date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
- 符号的可选值:+(之后) 或者 - (之前)
- 单位的可选值:day(天)、month(月份)、year(年)
%F:表示完整的年月日
%T:表示完整的时分秒
%Y:表示四位年份
%m:表示两位月份(带前导0)
%d:表示日期(带前导0)
%H:表示小时(带前导0)
%M:表示分钟(带前导0)
%S:表示秒数(带前导0)
- cal指令
- 作用:用来操作日历的
- 语法1:#cal 等价于 #cal -1 直接输出当前月份的日历
- 语法2:#cal -3 表示输出上一个月+本月+下个月的日历
- 语法3:#cal -y 年份 表示输出某一个年份的日历
- clear/ctrl + L指令
- 作用:清除终端中已经存在的命令和结果(信息)
- 语法:clear 或者快捷键:ctrl + L
- 需要注意的是,该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。
- 管道(重要)
- 管道符:|
- 作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
- 语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
①过滤案例(100%使用):需要通过管道查询出根目录下包含“y”字母的文档名称。
#ls / | grep y
针对上面这个命令说明:
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;
②grep指令:主要用于过滤
②请使用学过的命令,来统计某个目录下的文档的总个数?
- #ls / | wc -l
4.高级指令
- hostname指令
- 作用:操作服务器的主机名(读取、设置)
- 语法1:#hostname 含义:表示输出完整的主机名
- 语法2:#hostname -f 含义:表示输出当前主机名中的FQDN(全限定域名)
- id指令
- 作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。
- 语法1:#id 默认显示当前执行该命令的用户的基本信息
- 语法2:#id 用户名 显示指定用户的基本信息
- whoami指令
- 作用:“我是谁?”显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志。
- 语法:#whoami
- ps -ef指令(重点)
- 指令:ps
- 选项含义:
- -e:等价于“-A”,表示列出全部的进程
- -f:显示全部的列(显示全字段)
列的含义:
UID:该进程执行的用户id;
PID:进程id;
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID);
C:Cpu的占用率,其形式是百分数;
STIME:进行的启动时间;
TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
TIME:进程的执行时间;
CMD:该进程的名称或者对应的路径;
- 案例:(100%使用的命令)在ps的结果中过滤出想要查看的进程状态
- #ps -ef|grep “进程名称”
- top指令(重点)
- 作用:查看服务器的进程占的资源(100%使用)
- 语法:
- 进入命令:#top (动态显示)
- 退出命令:按下q键
表头含义:
PID:进程id;
USER:该进程对应的用户;
PR:优先级;
VIRT:虚拟内存;
RES:常驻内存;
SHR:共享内存;
计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
S:表示进程的状态status(sleeping,其中S表示睡眠,R表示运行);
%CPU:表示CPU的占用百分比;
%MEM:表示内存的占用百分比;
TIME+:执行的时间;
COMMAND:进程的名称或者路径;
在运行top的时候,可以按下方便的快捷键:
- M:表示将结果按照内存(MEM)从高到低进行降序排列
- P:表示将结果按照CPU使用率从高到低进行降序排列
- 1:当服务器拥有多个cpu的时候可以使用“1”快捷键来切换是否展示显示各个cpu的详细信息
- du -sh指令
- 作用:查看目录的真实大小
- 语法:#du -sh 目录路径
- 选项含义:
- -s:summaries,只显示汇总的大小
- -h:表示以高可读性的形式进行显示
- find指令
- 作用:用于查找文件
- 语法:#find 路径范围 选项 选项的值
- 选项:
- -name:按照文档名称进行搜索(支持模糊搜索)
- -type:按照文档的类型进行搜索
- 文档类型:“-”表示文件(在使用find的时候需要用f来替换),“d”表示文件夹
- 案例:使用find来搜索httpd.conf
- 案例:搜索etc目录下所有的conf后缀文件
- 案例:使用find来搜索/etc目录下所有的文件
- #find /etc -type f
- 使用find来搜索/etc/目录下所有的文件夹
- #find /etc -type d
- systemctl指令(重点)
- 作用:用于控制一些软件的服务启动/停止/重启
- 语法:systemctl start/stop/restart 服务名
- systemctl enable/disable 服务名 (控制开机是否自启)
- systemctl list-units (查看服务状态)
- systemctl list-unit-files(查看开机自启服务)
- kill指令(重点)
- 作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
- 语法:#kill 进程PID (语法需要配合ps一起使用)
- 与kill命令作用相似但是比kill更加好用的杀死进程的命令:killall
- ifconfig指令(重点)
- 作用:用于操作网卡相关的指令。
- 简单语法:#ifconfig (获取网卡信息)
- reboot指令
- 作用:重新启动计算机
- 语法1:#reboot 重启
- 语法2:#reboot -w 模拟重启,但是不重启(只写关机与开机的日志信息)
- shutdown指令
- 作用:关机 (慎用)
- 语法1:#shutdown -h now “关机提示” 或者 #shutdown -h 15:25 “关机提示”
- 如果想要取消关机计划的话,则可以按照以下方式去尝试:#shutdown -c
- uptime指令
- 作用:输出计算机的持续在线时间(计算机从开机到现在运行的时间)
- 语法:#uptime
- uname指令
- 作用:获取计算机操作系统相关信息
- 语法1:#uname 获取操作系统的类型
- 语法2:#uname -a all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
- man指令
- 作用:manual,手册(包含了Linux中全部命令手册,英文)
- 语法:#man 命令 (退出按下q键)
5. vim编辑器
Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它,Vi也是Linux中最基本的文本编辑器,学会它后,我们将在Linux的世界里畅行无阻,尤其是在终端中。
5.1vim三种模式(重点)
- Vim中存在三种模式(大众的认知):命令模式、编辑模式(输入模式)、末行模式(尾行模式)。
命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;
编辑模式:在该模式下可以对文件的内容进行编辑;
末行模式:可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
- Vim的打开文件的方式(4种,要求掌握的就前三种):
- #vim 文件路径 作用:打开指定的文件
- #vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
- #vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
- #vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
5.2命令模式
- 光标移动
- 光标移动到行首: ^
- 光标移动到行尾:$
- 光标移动到首行:gg
- 光标移动到末行:G
- 向上翻屏:按键ctrl + b (before) 或 PgUp
- 向下翻屏:按键ctrl + f (after) 或 PgDn
- 复制操作
- 复制光标所在行:按下yy 粘贴:在想要粘贴的地方按下p键
- 以光标所在行为准(包含当前行),向下复制指定的行数 按下数字yy
- 可视化复制:按下ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓←→方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴
- 剪切/删除
- 剪切/删除光标所在行 按下dd (删除之后下一行上移) 注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
- 剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行:数字dd (删除之后下一行上移)
- 剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移:按键:D (删除之后当前行会变成空白行)
- 可视化删除:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块
- 撤销/恢复
- ctrl + r 恢复(取消)之前的撤销操作
- 光标的快速移动
- 快速将光标移动到指定的行:按下数字 G
- 以当前光标为准向左/向右移动n字符:按下数字↑,数字↓
- 以当前光标为准向左/向右移动n字符:按下数字←,数字→
- 末行模式下的快速移动方式:移动到指定的行:输入英文“:”,其后输入行数数字,按下回车
5.3模式间的切换(重点)
5.4末行模式
- 保存操作
- 输入:“:w” 保存文件
- 输入:“:w 路径” 另存为
- 退出
- 输入:“:q” 退出文件
- 保存并退出
输入:“:wq” 保存并且退出 - 强制 (!)
- 输入:“:q!” 表示强制退出,刚才做的修改操作不做保存
- 调用外部命令(了解)
- 输入:“:!外部命令”
- 搜索/查找
- 输入:“/关键词”
- 在搜索结果中切换上/下一个结果:N/n (next)
- 如果需要取消高亮,则需要输入:“:nohl”【no highlight】
- 替换
:s/搜索的关键词/新的内容
替换光标所在行的第一处符合条件的内容:s/搜索的关键词/新的内容/g
替换光标所在行的全部符合条件的内容- :%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容
- :%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容
- %表示整个文件
- g表示全局(global)
- 显示行号
- 输入:“:set nu”[number]
- 如果想取消显示,则输入:“:set nonu”
5.5编辑模式
- 重点看前2个进入方式:i(insert)、a(after)。
- 退出方式:按下esc键
5.6实用功能
- 如何控制着色显示与否?
- :syntax on/off
- vim中计算器的使用:当在编辑文件的时候突然需要使用计算器去计算一些公式,则此时需要用计算器,但是需要退出,vim自身集成了一个简易的计算器。
a. 进入编辑模式
b. 按下按键“ctrl + R”,然后输入“=”,此时光标会变到最后一行
c. 输入需要计算的内容,按下回车
5.7扩展
- vim的配置(重点)
- Vim是一款编辑器,编辑器也是有配置文件的。
- Vim配置有三种情况:
- 在文件打开的时候在末行模式下输入的配置(临时的)
- 个人配置文件(~/.vimrc,如果没有可以自行新建)
- 全局配置文件(vim自带,/etc/vimrc)
如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准。
- 异常退出
- 什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:
- 解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可 :#rm -f .passwd.swp
- 别名机制(实用)
- 作用:相当于创建一些属于自己的自定义命令
- 例如:在windows下有cls命令,在Linux下可能因为没有这个命令而不习惯清屏。现在可以通过别名机制来解决这个问题,可以自己创造出cls命令
- 别名机制依靠一个别名映射文件:~/.bashrc
- 退出方式
- 回顾:之前vim中退出编辑的文件可以使用“:q”或者“:wq”
- 除了上面的这个语法之外,vim还支持另外一个保存退出方法“:x”
- 说明:
- “:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
- 如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
- 因此建议以后使用“:x”来进行对文件的保存退出。
- 但是:不要使用X,不要使用X,不要使用X,X表示对文件进行加密操作。