本文是在学习B站大佬遇见狂神说的Linux相关视频时,同步做下的笔记,有兴趣的话,可以去B站支持一下大佬的视频。链接:遇见狂神说
写在前面:Linux里一切皆文件
目录管理
绝对路径和相对路径
Linux里所有目录的根目录是:/,所有的目录都是挂载在此目录。
绝对路径:
从根目录开始写起:例如:/home/ubuntu。
相对路径:
以当前目录为起始目录,“ . ” :代表当前目录," .. " :代表上级目录。
例如:假设现有目录如下:
假设当前所在目录为:/home/dir1:
如果想定位到当前目录下的dir3目录,可以使用:cd ./dir3或者 cd dir3;
如果想定位到dir4目录,可以使用:../dir2/dir4
处理目录的常用命令
ls:显示当前目录下的所有文件;
-a:显示全部的文件,包括隐藏的文件(以 . 开头的文件);
-l:长数据串列出,显示当前文件的详细信息,包括文件的属性与权限等数据;
cd:进入指定目录,可是使用绝对路径或者相对路径;
pwd:显示当前所在的目录路径;
-P:如果目标是链接(后面细说),需要知道链接的真实地址,可以使用-P参数;
mkdir:新建一个新的目录;
-m:配置文件的权限(关于权限,后面细说);
-p:递归创建目录,包含上一级目录;
例如:当前目录m下面没有任何文件,想要在m下创建m1,在m1下创建m2,
可以直接使用:mkdir -p m1/m2,而不用一个一个创建;
rmdir:移除一个空的目录;
-p:连同上一级空目录一起删除;
例如:有路径:home/m/m1/m2,当前目录为home,想要删除m下的所有空文件夹
可以使用:rmdir -p m/m1/m2,前提:这些文件全部都是空的文件夹;
cp:复制文见或目录到指定的路径;语法:cp [ 可选项 ] [ 源文件 ] [ 目标文件 ]
-p:连同文件的属性一起复制,而非使用默认的属性;
-d:若原文件为链接文件,复制链接文件属性,而不是文件本身;(参考windows快捷方式)
-r:递归持续复制,用于目录的复制行为;
-a:相当于pdr的组合;
-f:强制复制,若目标文件已经存在且无法开启,则将目标文件移除再重新尝试复制一次;
-i:若目标文件已经存在时,在覆盖时会先询问你是否要进行覆盖;
-l:进行硬式链接的链接文件创建,而非复制文件本身;
-s:复制成为符号链接文件,即文件的快捷方式;
-u:若目标文件比源文件旧,则对目标文档进行升级操作;
rm:移除文件或目录;语法:rm [ 可选项 ] 文件或目录
-f:强制移除文件,忽略不存在的文件,不会出现警告信息;
-i:在删除前会询问使用者是否进行删除,确认删除操作后才会进行删除操作;
-r:递归删除,常用在目录的删除;(与-f搭配使用-rf,组成删库跑路命令,服务器上千万不要这么使用)
mv:移动文件与目录,或修改文件与目录的名称;语法:mv [ 选项 ] [ 源文件 ] [ 目标文件 ]
-f:强制移动,如果目标文件已经存在,不会询问而直接覆盖;
-i:若目标文件已经存在时,就会询问是否覆盖;
-u:若目标文件已经存在,且源文件比较新时,才会进行覆盖操作;
基本属性
文件属性简介
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为了保护系统的安全性,Linux系统对不同用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用“ ll ”(l:小写的英文字母L)或者“ ls -l ”命令来显示一个文件的属性以及文件所属的用户和组。例如:
例如第一行文件的属性:drwxr-xr-x 5 ng users 4096 12月 9 15 :10 CCCC
CCCC文件的属性drwxr-xr-x,第一个字符为“ d ”,“ d ” 在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件还是链接文件等等:
- 当为[ d ]时代表这是一个目录;
- 当为[ - ]时代表这是一个文件;
- 当为[ l ]时代表这是一个链接文件(l:小写的英文字母L);
- 当为[ b ]时代表装置文件里面的可供储存的接口设备(可随机存取装置);
- 当为[ c ]时代表装置文件里面的串行端口设备,例如鼠标、键盘等(一次性读取装置);
字符“ d ”之后的剩余字符,以三个为一组均可以组成:[ rwx ]的三个参数的组合。其中 “ r ”:代表可读权限(read)、“ w ”代表可写权限(write)、“ x ”:代表可执行权限。这三个权限的位置是固定不变的,如果没有相应的权限,那么对应的位置就会出现一个减号的图标[ - ]。
每个文件的属性由左边第一部分的10个字符来确定:
文件类型 属主权限 属组权限 其他用户权限
0 1 2 3 4 5 6 7 8 9
d r w x r w x r w x
目录文件 读 写 执行 读 写 执行 读 写 执行
从左至右用0-9这些数字来表示:
第0位:表示文件类型;
第1-3位:确定属主(该文件的所有者)拥有该文件的权限;
第4-6位:确定属组(文件所有者的同组用户)拥有该文件的权限;
第7-9位:确定其他用户拥有该文件的权限;
其中:
第1、4、7位表示读的权限,用字母“ r ”表示,如果有读取的权限则显示该字母,没有则显示字符“ - ”;
第2、5、8位表示写的权限,用字母“ w ”表示,如果有写入的权限则显示该字母,没有则显示字符“ - ”;
第3、6、9位表示执行的权限,用字母“ x ”表示,如果有执行的权限则显示该字母,没有则显示字符“ - ”;
对于文件来说,他都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时在Linux系统中用户是按组分类的,一个用户属于一个或多个组。文件的所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,在Linux系统中按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,CCCC文件是一个目录文件,属主为:ng,属组为:users。
修改文件属性
chgrp:更改文件属组;语法:chgrp [ -R ] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chown:更改文件属主,也可以同时更改文件属组;
语法:chown [ -R ] 属主名 文件名
chown [ -R ] 属主名:属组名 文件名
-R:递归更改文件属主。
chmod:更改文件的权限(9个属性);语法:chmod [ -R ] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字,一种是符号。Linux文件的基本权限就有九个,分别是属主、属组、组外其他人员三种身份各有自己的读、写、执行权限。
文件的权限字符:[ -rwxrwxrwx],这九个权限是三个三个一组,其中可以使用数字来代表各个权限,各个权限对应的分数为:r 为4,w为2,x为1。每种身份各自的三个权限分数是需要累加的,例如当权限为:[ -rwxrwx--- ]时,权限的分数为:
- 属主 = rwx = 4+2+1 = 7
- 属组 = rwx = 4+2+1 = 7
- 其他 = - - - = 0+0+0 = 0
所以可以使用命令:chmod 770 filename,来修改不同用户的权限。
文件内容查看
常用命令
cat:由第一行开始显示文件内容;语法:cat [ -AbEnTv ] 文件名
-v:列出一些看不出来的特殊字符;
-E:将结尾的断行字杰$显示出来;
-T:将[ tab ]按键以“ ^| ”显示出来;
-A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已;
-n:打印行号,连同空白行也会有行号;
-b:打印非空白行的行号;
tac:从最后一行开始显示文件的内容;与cat是颠倒过来的;
nl:显示行号;语法:nl [ -bnw ] 文件名
-b:指定行号显示的方式,只要有两种:
-b a:表示不论是否为空行,也同样列出行号(类似cat -n);
-b t:如果有空行,空的那一行不显示行号(默认值);
-n:列出行号表示的方法,主要有三种:
-n ln:行号在屏幕的最左方显示;
-n rn:行号在自己栏位的最右方显示;
-n rz:行号在自己栏位的最右方显示,且从0开始;
-w:行号栏位的占用的位数;
more:翻页;语法:more 文件名
空格键:代表向下翻一页;
Enter:代表向下翻一行;
/ 字符:向下查找指定字符串;
:f :立刻显示出档名以及目前显示的行数;
q:代表立刻离开more,不再显示该文件的内容;
b或[ Ctrl ] + b:代表往回翻页
less:翻页,与more类似;语法:less 文件名
空格键:向下翻动一页;
[ PgDn ]:向下翻动一页;
[ PgUp] :向上翻动一页;
/字符:向下查找指定字符串;
?字符:向上查找指定字符串;
n:重复前一个搜寻;
N:反向的重复前一个搜寻;
q:离开less文件;
head:取出文件前面几行;语法:head [ -n number ] 文件
-n后面接数字代表要显示几行;
tail:取出文件的后面几行;语法:head [ -n number ] 文件
-n后面接数字代表要显示几行;
Linux链接概念
Linux链接分为两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生的是硬链接;
硬链接
硬链接指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型的,都会给它分配一个编号,称为索引节点号(Inode Index)。
在Linux中,多个文件名指向同一索引节点是存在的。比如:A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号是相同的,即一个inode节点对应两个不用的文件名,这两个文件名指向同一个文件,A和B对文件系统来说是完全平等的,删除其中任何一个,另外一个都不会有影响。
硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“ 误删 ”的操作出现。其原因如上所述,因为对应目录的索引节点有一个以上的链接,只删除一个链接并不影响索引节点本身和其他链接,只有当最后一个链接被删除后,文件的数据块以及目录的链接才会释放。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。
软链接
另外一种链接,称之为符号链接(Symbolic Link),也叫软连接。软连接文件有类似于Windows的快捷方式。他实际上是一个特殊的文件,在符号链接中,文件实际上是一个文本文件,其中包含的有另一个文件的位置信息。
比如:A是B的软链接(A和B都是文件名),A的而目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而只想两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被上除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。