Linux是一种免费开源的多用户、多任务、支持多线程和多CPU的操作系统,现在的linux系统也跟Windows一样配置了图形化界面和命令行,但是在Linux系统从诞生至今对于图形化界面的优化并未重点发力,导致Linux命令行相较于图形化界面更加直观,效率更高,更加稳定,所以Linux多数情况下使用的是命令行
Linux的目录结构跟Windows一样是一个树形结构,两者有区别的是Windows可以拥有多个盘符作为根目录,但Linux没有盘符的概念,只有一个根目录‘/’,整个操作系统文件都存储在‘/’当中
路径表示:D:\data\work\helo.txt
D:表示盘符
\表示层级关系
路径表示:/usr/local/hello.txt
开头的/表示根目录
后面的/表层级关系
蓝色:目录
白色:一般文件,如文本文件,配置文件,源码文件等
绿色:可执行文件,可执行的程序
红色:压缩包或包文件
浅蓝色:链接文件
红色闪烁:表示链接文件有问题
黄色:设备文件
灰色:其他文件
命令行:即Linux终端,是一种命令提示符页面,以‘纯字符’的形式操作系统,可以使用各种字符化命令对系统发出操作指令。
命令:即Linux操做指令,一个命令就是一个Linux的程序,命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈
命令格式:
command [-options] [parameter]
command:命令本身
-options:可选,命令的一些选项,可以通过选项控制命令的行为细节
parameter:可选,命令的参数,多数用于命令的指向目标等
ls -l /usr/local
ls是命令本身,-l是选项,表示以列表的形式浏览,/usr/local是命令参数
意思是以列表的形式,显示/usr/local目录内的内容
查看目录下的内容
ls [-a -l -h] [Linux路径]
-a -l -h 是可选的选项
Linux路径是命令可选的参数
作用:可以指定要查看目录的内容,当不使用选项和参数直接使用ls命令本体,则表示以平铺的形式列出当前工作目录(默认是HOME目录)下的内容
即当前正在使用的目录,Linux系统的命令行终端在启动时,会默认加载当前登录用户的HOME目录作为当前的工作目录
HOME目录:Linux是多用户操作系统,HOME目录就是每个Linux操作用户在Linux系统的个人专属 目录,路径:/home/用户名
如本人Linux的用户名称是chen,那我在Linux中的HOME目录是:/home/chen
例:查看根目录下的文件内容
选项 |
功能 |
-a |
显示所有文件及目录,包括.隐藏文件在内 |
-l |
以列表的形式显示文件的详细信息,包括文件类型,权限,所属用户,所属用户组,文件大小,上一次修改时间等 |
-lh |
文件大小以KBytes为单位显示 |
显示包括隐藏文件在内的所有文件及目录
图中以‘.‘开头的表示是Linux系统的隐藏文件/文件夹(只要以.开头就能自动隐藏)
以列表的形式显示当前工作目录文件的详细信息
如果要查看具体某个目录文件或普通文件的详细信息,可以再加上它的文件名称(区分大小写)
表示以易阅读的形式,列出文件大小,如K,M,G
-h命令必须搭配-l一起使用,不然不会执行-l选项
选项和参数都是可以联合使用的,选项之间没有顺序要求,等同于-a -l -h,表示以列表的形式显示根目录下的所有文件并使文件大小以KB表示
以红框标记为例,第一行的total 28是指当前目录下所有文件所占有的空间总和,默认以字节为单位(bytes),因为使用了-h选项所以使用的是kb显示
dr-xr-xr-x: 一共十个字符,第一个字符表示文件类型
- :表示普通文件
d:表示目录(directory)
l:表示链接文件
b:表示块设备(block)文件
c:表示字符设备(char)文件
p:表示管道(pipe)文件
s:套接字(socket)文件
剩余的字符可以分为三组,即r-xr-xr-x中间没有分隔符号,分别表示所属用户,所属用户组和其他用户对该文件的使用权限
r 表明该文件具有可读权限,若该位置为 "-" ,表示不可读;
w 表明该文件具有写权限,若该位置为 "-" ,表示不可写;
x 表明该文件具有可执行权限,若该位置为 "-" ,表示不具有可执行权限;
第二列的数字:表示目录文件里包含的子目录文件数量(包括隐藏文件)如果是普通文件则表示的是链接数量
所属用户
所属用户组
文件大小(默认以字节为单位)
文件的最后修改时间
文件名
r针对文件可以查看文件内容
针对文件夹,可以查看文件夹内容,如ls命令
w针对文件表示可以修改此文件
针对文件夹,可以在文件夹内进行创建、删除、改名等操作
x针对文件表示可以将文件作为程序执行
针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
当我们用Linux终端打开的时候,会默认以用户的HOME目录作为当前的工作目录
我们可以通过cd命令(Change Directory)更改当前所在的工作目录
语法:
cd [Linux路径]
cd命令只有参数,表示要切换到哪个目录下,如果不写参数则表示回到用户HOME目录中
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
相对路径:以当前目录为起点,描述路径的一种写法,无需以/开头,前提是文件存在于当前目录中
. 表示当前目录 cd ./Desktop表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致
.. 表示上一级目录 cd ..即可切换到上一级目录,cd ../..切换到上二级的目录
~ 表示HOME目录 cd~表示切换到HOME目录 cd ~/Desktop 表示切换到HOME目录内的Desktop目录
通过ls命令来验证当前的工作目录是不恰当的,一般通过pwd命令(Print Work Directory)看当前所在的工作目录路径
语法:
pwd
作用:输出当前所在的工作目录。pwd命令没有选项,没有参数,直接输入pwd就行
通过mkdir命令(MaKe DIRecrtory)可以创建新的目录(文件夹)
语法:
mkdir [-p] Linux路径
-p选项可选,表示自动创建不存在父目录,适用于创建连续多层级的目录
参数必填,表示Linux路径,即要创建的目录的路径,相对路径或绝对路径都可以
表示在home目录的chen用户目录下创建一个叫chen的文件夹
利用.与..特殊路径符,在当前目录或上级目录创建一个叫text的文件夹
如果是本地用户不允许在home目录和/根目录里创建目录,只有root权限用户才可以执行操作
如果想要一次性创建多个层级的目录,如下图红框文字,会报错,因为上级目录web和sqli并不存在,所以无法创建sql目录,这种情况就可以使用-p选项,表示将整个链条都创建完成
注意:创建文件夹需要涉及到修改权限,如果是普通本地用户则只能在本地HOME目录的本地用户目录中创建,如果在超出了范围则无法成功
可以通过touch命令创建新文件
语法:
touch Linux路径
touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符都可以使用
但是这玩意我后缀都输入错了,居然也成功了暂时不理解,可能是合在一起当文件名称了吧
有了文件后就可以通过cat命令查看文件的内容。
语法:
cat Linux路径
没有选项,参数必填
跟cat命令一样可以查看文件内容,与cat命令不同的是
cat命令是直接将内容全部显示出来,而more命令支持翻页,如果文件内容过多可以一页页显示
语法:
more Linux路径
Linux中内置了一个文件,路径为/etc/services,因为内容过多可以只用more命令利用空格翻页查看
结尾的more 3%表示当前的查看进度,可以使用q退出查看
cp命令(copy)用于复制文件\文件夹
语法:
cp [-r] 参数1 参数2
-r(recurse,递归)选项,可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件或文件夹
参数2,Linux路径,表示要复制去的地方
第一次复制将chen目录中的asd目录复制到chen目录中的xiang目录中,报错
因为复制对象是一个目录,所以此时就要加上-r递归选项,意义是将指定的目录和目录下的所有文件都复制到指定路径文件中
mv命令(move)可以用于移动文件和文件夹
语法:
mv 参数1 参数2
参数1,Linux路径,表示被移动的文件或文件夹
参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
将当前用户文件夹中的text.tst文件移动到Desktop目录中
将xc文件夹移动到当前目录的cxk文件夹中,因为当前目录不存在cxk目录则直接更改xc目录的名称
mv命令还可以将需要移动的目录和目录下的所有文件都移动到目标文件夹中
将当前用户目录中text目录下的所有文件都移动到xiang目录中,并查看文件asd中的信息
rm命令(remove)用于删除文件\文件夹
语法:
rm [-r -f] 参数1 参数2 ……参数N
同cp命令一样-r选项用于删除文件夹
-f表示force,强制删除(不会弹出提示确认信息)
普通用户删除内容不会出现提示,只有root管理员用户删除内容会有提示
所以一般用户用不到-f选项
参数1、参数2 、……、参数N表示要删除的文件或文件夹路径,按照空格隔开
先删除chen目录下的assd文件,ase目录和目录下的所有文件,再删除xiang目录下的qwe文件夹包括qwe文件夹的所有文件,利用空格分隔,虽然经历了报错但是依旧不会影响语句的执行
rm命令支持通配符*,用来做模糊匹配
符号*表示匹配任意内容(包括空)
c* 表示匹配任何以c开头的内容
*k 表示匹配任何以k结尾的内容
*x* 表示匹配任何包含x的内容
例:删除chen用户目录中的所有名称包含z内容(完成语句之前记得设置快照)
Linux命令的本体就是一个个二进制可执行程序,运用命令本质上就是执行了一个程序和Windows中.exe文件一个意思
可以通过which可以查看命令的程序文件存放在哪里
语法:
which 要查找的命令
在Linux中,我们可以通过find命令去搜索指定的文件
语法:
find 起始路径 -name "被查找的文件名称"
起始路径:从什么地方开始搜索
-name 表示按名称查找
被搜索文件的名称要是用双引号引起来
被搜索文件名称可以使用 通配符*
例:从根目录开始搜索名称ck开头的文件,前两个报错不晓得为啥子经常会出现,特别是第二个,查资料说是bug,暂时不太清楚
语法:
find 起始路径 -size +- n [KMG]
-size 表示按大小查找
+-表示大于和小于
n表示大小数字
kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
查找根目录下大于1GB的文件(如果文件过可以使用CTRL+C,中断显示)
从文件中通过关键字输出指定文件行
语法:
gurep [-n] 关键字 文件路径
选项-n,可选,表示在结果中显示匹配行的行号
关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用“”将关键字包裹起来
文件路径,必填,表示要过滤内容的文件路径,可作为管道符输入
通过wc命令可以统计文件的行数、单词数量等
语法:
wc [-c -m -l -w] 文件路径
-c,统计bytes数量
-m,统计字符数量
-l,统计行数
-w,统计单词数量
文件路径,被统计的文件,可作为管道符输入
如果不带选项直接统计text.txt文件就会出现三段数字
第一段表示text.txt文件有两行
第二段表示text.txt文件有11个单词(利用空格计算)
第三段表示text.txt文件一共53个字节
利用wc命令选项分别查询
管道符:|
作用:将管道符左边命令的结果,作为右边命令的输入
只要能产生内容输出的命令都可以和 | 配合
依照前后顺序进行执行
首先查看text.txt文件的内容并作为第一个grep的参数过滤包含is的内容
再将过滤出来的内容作为第二个grep参数过滤包含cxk的内容
在命令行内输入指定内容
语法:
echo 输出的内容
只有一个参数,表示要输出的内容,如果输出内容包括空格或者其他特殊符号可以使用“”包裹起来
反引号一般在键盘上跟~波浪号一起在左上角
作用:被`反引号包裹的内容会被当做命令去执行而并不是普通字符,也可以说是将反引号内的Linux命令先执行,然后再将执行结果赋予echo
> 将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>> 将左侧命令的结果,追加写入到符号右侧指定的文件中
只要能产生结果的语句,都可以使用重定向符往右边写
将查询到的cxk目录的详细信息追加写入到text.txt文件中去
可以查看文件尾部内容,跟踪文件最新更改
语法:
tail [-f -num] Linux路径
参数,Linux路径,表示被跟踪的文件路径
选项,-f,表示持续追踪
选项,-num,表示查看尾部多少行,不填默认10行
从text.txt文件尾部开始查看5行内容
利用-f选项持续跟踪,程序会一直运行,但是我不能与-num选项连用,会报错
新建一个终端窗口,在窗口里面随便输入数据追加到text.txt文件中,左侧的窗口数据显示也会跟着变化
结束追踪可以使用CTRL+C快捷键,前提是快捷键不被占用
vi\vim是visual interface的简称,是Linux中最经典的文本编辑器
同图形化界面中的文本编辑器一样,vi是命令行对文本文件进行编辑的绝佳选择。
vim是vi的加强版本,兼容vi所有的指令,不仅能编辑文本,而且还具有shell程序编辑的功能
命令模式下,所敲的按键编译器都理解为命令,以命令执行不同的功能
此模式下,不能自由进行文本编辑
也称为编辑模式,插入模式。此模式下,可以文本内容进行自由编辑
以:冒号开始,通常用于文件的保存、退出
语法:
vi 文件路径
vim 文件路径
vim兼容vi所有功能,尽量使用vim
如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
如果文件路径表示的文件存在,那么此命令会用于编辑已有文件
通过vim进入命令编辑文件,会打开一个新的窗口,此时这个窗口就是命令模式窗口
命令模式就vim编辑器的入口和出口,如下图
进入vim会进入命令模式
通过命令模式输入命令,可以进入输入模式,通过Esc回到命令模式
输入模式需要回退到命令模式,然后通过命令输入:可以进入底线命令模式
模式 |
命令 |
描述 |
命令模式 |
i |
在当前光标位置进入输入模式 |
命令模式 |
I |
在当前行的开头进入输入模式 |
命令模式 |
a |
在当前光标位置之后进入输入模式 |
命令模式 |
A |
在当前行的结尾进入输入模式 |
命令模式 |
o |
在当前光标之下插入新行进入输入模式 |
命令模式 |
O |
在当前光标之上插入新行进入输入模式 |
命令模式 |
shift+: |
进入底线命令模式 |
命令模式 |
r |
进入取代模式,取代光标所在的字符一次 |
命令模式 |
R |
进入取代模式,一直取代光标所在文字,直到按下esc |
输入模式 |
Esc |
在任何情况下输入都能回到命令模式 |
模式 |
命令 |
描述 |
命令模式 |
上方向键、k |
向上移动光标 |
命令模式 |
下方向键、j |
向下移动光标 |
命令模式 |
左方向键、h |
向左移动光标 |
命令模式 |
右方向键、l |
向右移动光标 |
命令模式 |
0 |
移动光标到当前行的开头 |
命令模式 |
$ |
移动光标到当前行的结尾(最后一个字符前) |
命令模式 |
PgUp |
向上翻页 |
命令模式 |
PgDn |
向下翻页 |
命令模式 |
gg |
跳到首行 |
命令模式 |
G |
跳到尾行 |
命令模式 |
nG |
n是数字,移动到当前文件的第n行 |
模式 |
命令 |
描述 |
命令模式 |
/ |
进入搜索模式 |
命令模式 |
n |
向下继续搜索 |
命令模式 |
N |
向上继续搜索 |
底线命令模式 |
:n1,n2s/word1/word2/g 例:1,4s/cx/k/g |
n1,n2为数字,在第n1行到n2行之间查找word1这个字符串,并将该字符串替换为word2 如果要替换/,我们也可以使用其他符号代替分隔符,如:+ -* |
底线命令模式 |
:%s/word1/word2/g |
从第一行到最后一行寻找word1字符串,并将字符串取代为word2 |
模式 |
命令 |
描述 |
命令模式 |
dd |
删除光标所在行的内容 |
命令模式 |
ndd |
n是数字,表示删除当前光标和向下的n行 |
命令模式 |
dG |
从当前行开始,向下全部删除 |
命令模式 |
dgg |
从当前行开始,向上全部删除 |
命令模式 |
d¥ |
从当前光标开始,删除到本行的结尾 |
命令模式 |
d0 |
从当前光标开始,删除到本行的开头 |
命令模式 |
yy |
复制当前行 |
命令模式 |
nyy |
n是数字,表示复制当前行和下面的n行 |
命令模式 |
p |
粘贴复制内容 |
命令模式 |
u |
撤销修改 |
命令模式 |
ctrl+r |
反向撤销修改 |
模式 |
命令 |
描述 |
底线命令模式 |
:wq |
保存并退出 |
底线命令模式 |
:q |
仅退出 |
底线命令模式 |
:q! |
强制退出 |
底线命令模式 |
:w |
仅保存 |
底线命令模式 |
:set nu |
显示行号 |
底线命令模式 |
:set paste |
设置粘贴模式 |
第二章-13-vi编辑器_哔哩哔哩_bilibili