目录
2.2.10.1以图形界面打开文件(光标直接跑到打开的文件,打开即编辑)
2.1文件的存储方式
在Windows中,文件的存储方式是以多根的形式存储的(有多个盘C盘、D盘……),而在CentOS中是以单根的方式进行存储(‘/’为CentOS中的根文件夹,有且只有一个)。/根文件夹下又分为很多子文件。具体可分为13大类。
1.bin文件夹:是二进制的意思,执行命令存放在这里,例如给用户改密码等。
2.boot文件夹:启动目录,与计算机启动相关的文件都放到这里。
3.dev文件夹:设备的意思(硬件)键盘鼠标硬盘U盘等都存放在dev中。
4.etc文件夹:配置文件、控制台文件,启动服务器时,服务器中的网页需要改东西就在此改动,工作中使用最多的文件,配置服务器网页的功能等。
5.home文件夹:装用户自己的文件。
1.用户自己的文件存放在home中;
2.其他用户登录服务器之后拷贝的文件放到home中;
3.home下面有各自的用户账号;
4.用户之间是隔离开的,不能互相访问。
6.root文件夹:超级管理员的文件夹,只有超级管理员才能打开。
7.run文件夹:运行文件。
8.sbin文件夹:管理员能使用的特权命令文件夹,与bin类似,都是存的命令。
9.tmp文件夹:template(临时目录)的意思,临时使用的东西都可以放入。
10.usr文件夹:应用程序,机器上使用的程序都放入usr,类似Windows的program Film,操作系统的设计者为用户准备的安装程序所准备的目录。
11.var文件夹:可变的,日志、邮件都可以放在var中。
12.history文件夹:查看所有的操作历史。
13.clear文件夹:清除当前窗口所有命令。
2.2文件的相关操作
2.2.1文件信息的展示
Linux中使用ls命令来显示文件、目录、链接文件的属性。
我来解释一下上面这张图片的意思(小编当时自己写的笔记可能只有自己能看懂[捂脸][捂脸])
以黑色方框为间隔:
第一个方框内的信息:
第一位:属性
‘-’表示文件
‘d’表示目录(directory)
'l':表示链接文件,通常是符号链接。
'b':表示块设备文件。
'c':表示字符设备文件。
's':表示套接字文件。
'p':表示管道文件,也称为 FIFO(First In First Out)。
第2位——第10位:文件的权限(在这个地方又可以进行细分,每三位为一栏)
2-4位:文件创建者对于该文件的权限(属主权)
5-7位:该文件位于的组内的用户对于该文件的权限(属组权)
8-10位:其他用户对于该文件的权限
特别声明的是:权限一般有三种分别为r、w、x,后期我们还会讲到S这样的特殊权限位。
先来熟悉最基本的rwx权限:r表示read读权限,w表示write写权限,x表示execute可执行权限。而可执行权限表示文件的可运行、打开等其他操作权限。这也是为什么我们新创建的目录会比新创建的文件多一位’x’权限,因为没有x权限文件夹就无法打开了!后期我们学习到掩码的部分就可以知道如何更改文件的默认权限了。
可能有同学会好奇了,r表示read读,正常,w表示write写,也正常;那为什么x表示的是execute可执行呢?为什么不能用e表示呢?我整理了几个可能的原因供大家参考
历史原因:Unix 系统最初是在 1970 年代由 Ken Thompson 和 Dennis Ritchie 开发的。在那个时代,选择 "x" 作为执行权限的表示可能仅仅是因为设计者觉得它合适,或者是因为它在 ASCII 码表中的位置。
视觉区分:"x" 在视觉上与其他权限字符 "r"(读)和 "w"(写)区分开来,这有助于用户快速识别不同的权限。
ASCII 码值:在 ASCII 码表中,"r"、"w" 和 "x" 的码值是连续的(114, 119, 120),这可能是为了方便编程和显示。
传统和习惯:随着 Unix 和 Linux 系统的普及,这种表示方法已经成为了一种标准,被广泛接受和使用。改变它可能会引起混淆。
简洁性:使用单个字符来表示权限可以使得权限列表更加简洁和易于阅读。
第二个方框内的信息:
‘1’表示的是文件或目录的硬链接的数量,文件或者目录可以有多个硬链接,后期我们也会开展链接的讲解,现在一句话概括:链接分为软连接和硬链接,硬链接比软连接更好使,软连接就相当于Windows中的“快捷方式”。
第三个方框内的信息:
‘root’表示文件的属主,是谁创建出来的这个文件。
第四个方框内的信息:
‘root’表示文件的属组,表示这个文件属于root用户组,属于root用户组的文件只有和root同组的管理员才能使用,同时也会更加安全。
第五个方框内的信息:
'246'表示文件的大小,单位是字节
第六个方框内的信息:
'6月 5 18:20'表示的是文件在6月5号18:20被最后修改的,而不是创建时间!!!这是最容易被忽略的
第七个方框内的信息:
/aaa/1.txt表示文件的存储路径在根目录下的aaa目录下,文件名为1.txt
ls的常用的选项主要有 -l -d。
ls -l +文件路径:
以长格式列出信息,包括文件权限、所有者、大小和最后修改时间。
显示该路径的内容是否是文件或者目录,并且存在属主于属组等信息(如上图)
ls -d + 文件路径 :仅列出目录本身的信息,而不是目录内容。
2.2.2文件路径的展示
在CentOS中使用pwd命令来显示当前内容所在的路径。
2.2.3改变当前位置命令cd
使用cd + 想要到达的路径。可以将当前位置进行转移,将当前路径变成相对路径会比从绝对路径一层一层的找,命令会简单许多。
例如:现在又/aaa/bbb/ccc/ddd/eee/fff/ggg文件路径,如果我们想对子文件夹ggg下的文件进行操作,如果我们绝对路径的话代码量太大,我们可以首先cd到/aaa/bbb/ccc/ddd/eee/fff/ggg中,这样计算机现在的位置就变成了/aaa/bbb/ccc/ddd/eee/fff/ggg,直接对其下的文件进行操作会简单不少。
2.2.4新建文件、文件夹
2.2.4.1新建文件:
一、新建文件命令(绝对路径)
touch + 路径+文件名称
二、新建文件命令(相对路径):
1.先使用cd命令直接跳转到欲创建文件的上一级文件夹(可以直接输入pwd显示当前路径来验证cd这一步是否正确)
2.直接输入touch + 文件的名称完成对文件的创建。
三、新建文件后的检验:
使用先前学过的命令ls + 文件路径 以长形式打开文件夹下的所有子文件来查看文件是否创建完成。
四、同一路径下创建多个文件:
touch + 路径+‘文件名{1,n}’
这样会创建出“文件名1、文件名n”这样的2个文件。
五、同一路径下创建多个连续的文件:
touch + 路径+‘文件名{1..n}’
这样会创建出“文件名1、文件名2、文件名3、……文件名n”这样的n个文件。与上述第四步命令一样但是含义略有一点点的不同......
注意四、五步的区别,创建连续文件或者多个文件的命令是不同的,没有".."则创建多个名称非连续的文件,反之则类似循环一样创建多个文件。文件夹也可以使用-p选项,只不过命令由touch改成了mkdir。
六、新建隐藏文件
touch + 路径 +.文件名
隐藏文件的特性:
隐藏文件夹使用rm -rf 无法直接删除,除非把“路径名+.文件名称”都打出来。
隐藏的文件不可见。
直接使用ls无法查看隐藏文件,但是使用ls -a 可以查看隐藏的文件
使用ls -a 查看隐藏文件时,隐藏文件的标志是在最前面的‘.’类似文件的标志是‘-’、文件夹的标志是‘d’
2.2.4.2创建文件夹
一.Linux中使用mkdir命令创建文件夹
mkdir + 文件路径 + 文件夹名称
二、创建父级文件(父级文件一起创建出来)
如果我们想在bbb文件夹下(bbb文件夹默认还没有创建出来)创建file1、file2、file3文件夹,我们可以使用mkdir的 -p 选项(-p的意思就是parent父级的意思,这样可以一块将父级文件夹一块创建出来)
2.2.5复制文件
复制文件命令可以将文件复制到另外的一个文件夹中(文件------->文件夹)
cp 源文件的精确地址 目的地文件夹的精确地址
记住谁在前谁在后,不要将位置搞混,从哪(源)复制到哪(目的)
2.2.6复制文件夹
复制文件夹命令可以将文件夹复制到另外一个文件夹中(文件夹------>文件夹)
cp -r 源文件夹的精确地址 目的地文件夹的精确地址
2.2.7移动文件夹或文件、文件夹的重命名
只用mv命令就可以完成对文件夹或文件的移动、重命名
mv 源文件夹\文件路径 目的文件夹\文件路径
如果上述路径全部正确就可以完成文件夹\文件的移动。
mv 文件旧路径+文件原名称 文件新路径+文件新名称
使用上述一条语句,如果文件的旧路径和新路径相同就可以完成文件的重命名,不同的话就完成了文件的移动和重命名。
如下所示,在/bbb/file3/下创建了lichuanhua文件
使用
mv /bbb/file3/lichuanhua /bbb/yuxiaohan
移动并重命名到了上一级的文件,改名为yuxiaohan
2.2.8删除
在Linux中如果我们创建了不需要的文件,在图形化界面我们右键选择删除即可,在终端界面中,我们用rm -rf命令来映射图形化的删除功能。
rm -rf + 文件或文件夹的完整路径
2.2.8.1删除多个连续的文件
假设我们在Linux中的/bbb文件夹下有多个文件file1\file2\file3\file4\file5\file6\file7和一个重要文件important,我们只想删除file1到file7文件保留important文件和上一级bbb文件夹,这时我们可以使用通配符来解决上述问题。
概念引入
在Linux中,通配符*是一个特殊的字符,用于匹配任意数量的任意字符。它常用于文件名的匹配和命令行参数的扩展。以下是*通配符的一些常见用法:
1.匹配文件名:使用*可以匹配任意长度的字符串。例如,如果你在命令行中使用ls *.txt,它会列出当前目录下所有以.txt结尾的文件。
2.匹配多个文件:*可以用来指定多个文件作为命令的参数。例如,rm *会删除当前目录下的所有文件,但不会删除目录。
3.匹配空字符串:当使用*通配符时,如果没有任何匹配的文件,它甚至可以匹配空字符串。这意味着cp * /some/directory/会因为找不到任何匹配的文件而失败,但cp *
/some/directory/*会尝试将当前目录下的所有文件复制到目标目录的每个子目录中。
4.与其他通配符组合:*可以与其他通配符一起使用,如?(匹配单个字符)或[...](匹配括号内的任意一个字符)。例如,ls *.[0-9]会列出所有以单个数字结尾的文件。
5.使用引号:如果需要将通配符作为普通字符处理,可以使用引号将其括起来。例如,echo "*.txt"会输出*.txt而不是尝试匹配文件。
6.路径匹配:*可以出现在路径的任何部分,用于匹配该位置的任意字符串。例如,cp /path/to/* /destination/会将/path/to/目录下的所有文件和子目录复制到/destination/。
7.避免递归匹配:在某些情况下,你可能不希望*递归匹配子目录中的文件。在这种情况下,可以使用find命令或其他工具来避免递归。
命令:
rm -rf /bbb/file*
这样我们就把带file的所有文件、文件夹都删除了。只保留了除了file开头的其他文件。
2.2.8.2删除规定路径下的所有文件和文件夹
如果我们想要删除规定路径下的所有文件,保留文件和文件夹所在的上级文件夹
rm -rf 路径+*
如下图所示,/bbb下的所有文件和文件夹都已经被删除。
2.2.8.3删除指定以字母x结尾的所有文件
假设/bbb文件夹下存在f1x、f2x、f3x、important这四个文件,我们想要完成的目标是:除了important文件其余的所有文件都删除,通过观察我们发现,f1x、f2x、f3x都是以x结尾的,我们又可以使用统配符进行删除了!
第一步:先使用touch创建对应的文件
第二步:我们使用通配符删除法将f1x——f3x全部删除保留important文件。
rm -rf /bbb/*x
*代表以x结尾的所有文件或者文件夹
2.2.9查看文件内容
在Windows我们可以双击打开我们想要查看内容的文件,那么在终端界面我们如何实现呢?我们可以使用cat命令查看对应的文本文档的内容(前提是该文本文档必须存在)
cat +文件路径+文件名称
我们对inportant进行查看,使用cat /bbb/inportant命令,因为我们没有对inportant写入数据,所以在终端窗口并没有显示内容,但是其实是打开的,如果我们想要验证的话我们可以使用图像化界面打开inportant文件先进行编辑(vim是编辑内容,后期再讲)
我们在inportant文件中输入了niubi并且保存,这时我们再运行一遍cat命令,这时在命令的下一行就弹出了niubi内容,说明我们正确的查看了文件的内容。
2.2.9.1翻页查看文件
如果文件内容较多,我们再使用cat查看的话不方便(全部显示出来不好一行一行地核对)这时我们可以使用more命令完成对大内容文件地查看
more + 文件路径+文件名称
当我们使用more命令查看文件时,它会一页一页地显示文件内容。在查看过程中,我们可以使用以下按键来操作:
- 空格键:向后翻页
- Enter键:向下滚动一行,一行一行查看
- q键、ctrl+C键:退出查看,回到命令行界面
- b键:向前翻页
现在,假设我们有一个名为inportant.txt的文件,它包含了很多内容,我们可以使用more命令来查看它:
more /bbb/inportant
执行上述命令后,inportant.txt的内容将会一页一页地显示在终端上。我们可以使用空格键来翻页,或者使用Enter键来逐行查看。当查看完毕后,按q键退出。
2.2.9.2 查找文件内容
如果我们想要在文件中查找特定的字符串或内容,可以使用grep命令。grep命令允许我们在文件中搜索指定的模式,并将匹配的行打印到标准输出。
例如,假设我们想要查找inportant.txt文件中所有包含niubi字符串的行,我们可以这样做:
grep "niubi" /bbb/inportant.txt
这将输出inportant.txt文件中所有包含niubi字符串的行。
2.2.9.3头尾查看法
如果我们面对一个含有巨量数据地文件,但是我们可以明确地知道前n行或者后m行是我们需要的文件,这时我们可以使用head -n命令查看前n行内容或者使用tail -m查看后m行内容。
head -n 文件路径+文件名称
taile -n 文件路径+文件名称
上图为head查看头部文件的代码
上图为tail查看结尾五行的代码。
2.2.10修改文件内容
2.2.10.1以图形界面打开文件(光标直接跑到打开的文件,打开即编辑)
如果我们想要使用图形界面直接打开一个文件的新窗口并直接进行编辑,我们可以使用grdit命令进行操作
grdit + 文件路径+文件名称
如果路径的文件不存在则进行创建之后再打开。
下图为未执行grdit文件的电脑桌面
下图为执行打开图形化窗口grdit命令之后的电脑桌面。
2.2.10.2利用重定向符修改文件
在Linux中,重定向符用于改变命令的输入和输出流的方向。以下是一些常见的重定向符:
输出重定向(>):
将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已存在则覆盖原有内容。
例子:ls > file.txt
追加重定向(>>):
将命令的输出追加到一个文件的末尾,而不是覆盖原有内容。
例子:echo "Hello World" >> file.txt
输入重定向(<):
将文件的内容作为命令的输入。
例子:sort < file.txt
错误重定向(2>):
将错误信息重定向到一个文件中。标准错误输出通常为文件描述符2。
例子:./program 2> error.log
同时重定向标准输出和错误输出(&>):
将标准输出和错误输出都重定向到同一个文件。
例子:./program &> full_output.log
追加标准输出和错误输出(&>>):
将标准输出和错误输出都追加到同一个文件的末尾。
在我们日常的使用中&>算是我使用最多的一个重定向符,因为我们的很多操作都需要弹出相应的提示信息,非常耽误我们的界面信息查看,我一般会使用
command &> /dev/null
将弹出的提示信息全部丢到“垃圾桶”中。这样就不会弹出报错信息了
例子:./program &>> full_output.log
举个简单例子:我们使用cat命令将文件夹所看到的信息直接写入到另一个文件夹中
cat 路径1+文件1 > 路径2 + 文件2
该命令是将文件1的所有内容写到文件2中,结果如下图所示。
2.1.10.3修改文件内容
如果我们想打开一个文件并且修改其中的 内容,我们可以使用vi 命令或者 vim 命令对文件进行打开后修改
vi 与 vim命令的主要区别:
vi
是一个非常古老的文本编辑器,最初由 Bill Joy 在 1970 年代末为 Unix 系统编写。vim
是vi
的一个改进版,由 Bram Moolenaar 在 1991 年左右开始开发,增加了很多新功能,比如语法高亮、标签页编辑、插件支持等。
总的来说,vim是vi的一个增强版,提供了更多的功能和更好的用户体验。如果你需要一个功能强大的文本编辑器,vim是一个非常好的选择。如果你只需要一个简单的文本编辑器,或者你在一个资源受限的环境中工作,vi可能更适合你。
vi 文件路径+文件名称
vim 文件路径+文件名称
当我们打完上述两个命令之后,我们会打开对应的窗口,这就涉及到vim的三个文本编辑模式了。
1.命令模式:
我们打完vim命令之后首先进入到的就是命令模式(普通模式、末行模式),在这个模式下,键盘上大多数的按键都有单独的意思
移动光标:
h:左移
j:下移
k:上移
l:右移
翻页:
Ctrl + f:向下翻页
Ctrl + b:向上翻页
跳转到文件的开头或结尾:
gg:跳转到文件的第一行
G:跳转到文件的最后一行
查找字符:
/字串:向下查找包含“字串”的行,高亮显示,继续按n可以查找下一个高亮文字,按N可以查找上一个高亮文字
?字串:向上查找包含“字串”的行
替换文本:
:s/旧文本/新文本/:替换当前行的第一个匹配项
:s/旧文本/新文本/g:替换当前行的所有匹配项
:%s/旧文本/新文本/g:替换整个文件中的所有匹配项
复制和粘贴文本:
yy:复制当前行
p:粘贴到当前光标后
P:粘贴到当前光标前
剪切和删除文本:
dd:删除当前行
x:删除当前光标下的字符
D:删除从当前光标到行末的内容
撤销和重做:
u:撤销上一次操作
Ctrl + r:重做上一次撤销的操作
进入插入模式:
i:在当前光标位置插入
I:在当前行首插入
a:在当前光标后插入
A:在当前行末插入
o:在当前行下方新开一行并插入
O:在当前行上方新开一行并插入
进入命令行模式:
ESC+‘:’进入命令行模式,用于执行命令
进入可视模式:
v:进入可视模式,选择文本
V:进入可视行模式
Ctrl + v:进入可视块模式
进入替换模式:
R:进入替换模式
进入终端模式(如果 Vim 编译时包含终端支持):
:terminal:打开内置终端
窗口操作:
Ctrl + w + h/j/k/l:在 Vim 的窗口之间移动光标(左/下/上/右)
Ctrl + w + +/-:增加/减少当前窗口的尺寸
标记和跳转:
m + 字母:设置标记(例如 ma)
' + 字母:跳转到设置的标记(例如 'a)
退出 Vim:
:q :退出 Vim
:q! :不保存退出 Vim
:wq:保存并退出 Vim
17.设置行号控制符 :
:set nu 设置行号
:set list 显示控制符
:set nonu:取消行号
18.查找和替换功能(命令模式下) :
x,y s/内容1/内容2/g
x,y表示起始行和结束行,替换第x行到第y行之间的内容
内容1
:要查找的文本或模式。内容2
:用于替换内容1
的文本。
s
:substitute 的缩写,表示替换操作。
g的功能是全局替换,如果没有g则只会替换一次。
当我们在命令模式下点击键盘上的‘i’键的时候,键盘就会改变为插入模式
2.插入模式
该模式中可以对vim打开的文件进行编辑
插入模式可以和命令模式进行转换,如下图所示,在命令模式下i键进入到插入模式,插入模式下ESC键进入到命令模式
3.可视化模式针对于没有鼠标的用户,现在使用较少,基本没有
进入方法:在命令模式下输入‘v’即可,当窗口下方出现--可视--即成功进入可视化模式
可视化模式:
在可视化模式下,你可以使用键盘上的移动命令(如 h、j、k、l)来选择文本块。选择文本后,你可以执行复制(y)、删除(d)、剪切(x)、改变(c)等操作,这些操作会应用于你选择的文本。
在可视化模式中,你不能直接使用末行模式的命令,因为这两种模式是为了不同的操作而设计的。
本章还有用户与组的相关操作、用户与组的管理、提权等知识点我会在后期第一时间进行整理发布,还是那句话——有问题或者有不会的、文章内容有错误直接提出来即可,谢谢家人们!