1.Linux的文件基本操作
1.1Linux目录
Linux也有一个目录树,如下图:
绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\cmd.exe
1.2Linux文件常用操作
(1)目录管理命令
——ls:列出指定目录下的内容
格式:ls [OPTION]… [FILE]…
-a:显示所有文件包括隐藏文件
-A:显示除.和…之外的所有文件
-l,–long:显示文件的详细属性信息
-h:对文件大小进行单位换算,可能影响精度
-d:查看目录本身而非其内部的文件
-r:逆序显示文件
-R:递归显示文件
示例:ls -lah / --详细显示/目录下的所有文件(包括隐藏文件)
ls -ldh /etc --详细显示/etc目录本身
ls -lhv / --倒序显示/目录下所有文件(包括隐藏文件)
ls -R /etc --递归显示/etc下所有文件
——mkdir:创建目录
格式:mkdir [OPTION]… DIRECTORY…
-p:自动按需创建父目录
-m:创建目录时给定权限
示例:mkdir -p /data/test/A/B --在/data目录下递归创建/test/A/B三个目录
mkdir -m 711 -p /data/MODE/A --在/data目录下递归创建MODE/A两个目录同时指定目录A的权限为711
——rmdir:删除目录
格式:rmdir [OPTION]… DIRECTORY…
-p:删除目录后如果其父目录为空,则一并删除
示例:rmdir -p /data/test/A --删除A目录后,test目录为空,一并删除
——cd:切换目录
示例:cd …:切换到上级目录
cd ~:切换回自己的家目录
cd -:在上一次目录与当前目录直接来回切换
——pwd:显示当前目录
(2)文件管理命令
——cp:复制
格式:单源复制:cp [OPTION]… [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
多源复制:cp [OPTION]… SOURCE… DIRECTORY(DEST必须为directory)
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
-r,-R:递归复制目录
示例:cp -if /data/[1-3].txt /data/test --test必须为目录,把三个文件一起复制到test中
cp -r /data /practice --把data目录及目录下的内容一起复制到practice中
——mv:剪切
格式:单源复制:mv [OPTION]… [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
多源复制:mv [OPTION]… SOURCE… DIRECTORY(DEST必须为directory)
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
示例:mv -i /data/[1-3].txt /practice --把/data目录下三个txt文件剪切到/practice下
——rm:删除
格式:rm [OPTION]… FILE…
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
-r,-R:递归处理,将制定目录下的所有文件包括目录一并删除
示例:rm -rf /practice --递归删除/practice目录
(3)文本内容管理命令
——cat:正向查看文本内容
格式:cat [OPTION]… [FILE]…
-n:给显示的文本行编号
-E:显示行结束符号$
示例:cat -n /etc/fstab --查看/etc/fatab内容并显示行号
——tac:倒叙查看文本内容
格式:tac [OPTION]… [FILE]…
示例:tac /etc/passwd --倒叙查看文本内容
——head:显示文本内容,默认显示头10行
格式:head [OPTION]… [FILE]…
-n #:显示文本头#行内容
示例:head -5 /etc/passwd --显示/etc/passwd文件头5行内容
——tail:显示文本内容,默认显示后10行
格式:tail [OPTION]… [FILE]…
-n #:显示文本后#行内容
-f:查看文件尾部内容结束后不退出,跟随显示新增的行
示例:tail -8 /etc/passwd --显示/etc/passwd文件后8行内容
——more:分屏显示文本内容,每次显示一屏显示完停止
格式:more [options] file […]
Space键:显示文本下一屏内容
Enter键:只显示文本下一行内容
b键:显示文本上一屏内容
q键:退出
——less:分屏显示文本内容,不主动退出
格式:less [options] file […]
Space键:显示文本下一屏内容
Enter键:只显示文本下一行内容
b键:显示文本上一屏内容
q键:退出
1.3Linux文件类型
普通文件
使用 ls -l 命令,可以看到结果的第一列是 -rwxrwxrwx 的形式,其中第一个字符 “-” 表示这个文件为普通文件,它也可以是其他的字符,不同的字符代表不同类型的文件。其后的一串字符表明了该文件的权限,其中:
1)r 表明该文件具有可读权限,若该位置为 “-” ,则表明文件不可读;
2)w 表明该文件具有写权限,若该位置为 “-” ,则表明文件不可写;
3)x 表明该文件具有可执行权限,若该位置为 “-” ,则表明文件不具有可执行权限;
4)第一个 rwx 表示该文件的所有者对该文件的权限;第二个 rwx 表示该文件所属组对该文件的权限;第三个 rwx 表示其他用户对该文件的权限。
可以使用 touch 命令来创建一个文件:
touch newfile
可以使用 rm 命令来删除一个文件:
rm newfile
目录文件
目录文件中保存着该目录下其他文件的 inode 号 和文件名等信息,目录文件中的每个数据项都是指向某个文件 inode 号的链接,删除文件名就等于删除与之对应的链接。目录文件的字体颜色是蓝色,使用 ls -l 命令查看,第一个字符为"d"(directory)。
目录文件的权限:
1)r 表明该目录文件具有可读权限,即可以使用 ls 命令查看该目录的存储情况;
2)w 表明该目录文件具有写权限,即可以往该目录下添加、修改、删除文件;
3)x 表明该目录文件具有可执行文件,即可以使用 cd 命令进入到该目录下。
可以使用 chmod 指令来改变文件的权限。
创建一个目录:
可以使用 mkdir 命令来创建一个目录文件:
mkdir directory
删除一个目录:
可以使用 rmdir 命令来删除一个空目录:
rmdir directory
如果该目录下有其他文件,则可以使用 rm -r 命令来递归删除该目录下的所有文件。需要注意的是,使用该命令将会删除该目录及目录下的所有数据,过程不可逆,需要谨慎使用:
rm -r directory
链接文件
链接文件一般指的是一个文件的软连接(或符号链接),使用 ls -l 命令查看,第一个符号为 “l”,文件名为浅蓝色
1)软链接
软链接(又称符号链接),使用 ln -s file file_softlink 命令可以创建一个文件的软链接文件:
ln -s test.txt test_softlink
软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。
2)硬链接
硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。使用 ls -i 命令查看,可以发现硬链接的两个文件的 inode 号是一样的:
同样的,使用 ln 命令可以创建一个文件的硬链接:
ln test.txt test_hardlink
设备文件
Linux 中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。设备文件一般存放在 /dev/ 目录下,文件名为黄色。
1)块设备文件:
块设备文件支持以块(block)为单位的访问方式。在 EXT4 文件系统中,一个 block 通常为 4KB 的大小,也就是说每次可以存取 4096(或其整数倍) 个字节的数据。应用程序可以随机访问块设备文件的数据,程序可以自行确定数据的位置,硬盘、软盘等都是块设备。使用 ls -l 命令查看,块设备文件的第一个字符是 “b”(block)。
2)字符设备文件:
字符设备文件以字节流的方式进行访问,由字符设备驱动程序来实现这种特性,这通常要用到 open、close、read、write 等系统调用。字符终端、串口和键盘等就是字符设备。另外,由于字符设备文件是以文件流的方式进行访问的,因此可以顺序读取,但通常不支持随机存取。使用 ls -l 命令查看,字符设备文件的第一个字符是 “c”(char)。
管道文件
管道文件主要用于进程间通信,使用 ls -l 命令查看,第一个字符为 “p”(pipe)。可以使用 mkfifo 命令来创建一个管道文件
在 FIFO 中可以很好地解决在无关进程间数据交换的要求,FIFO 的通信方式类似于在进程中使用文件来传输数据,只不过 FIFO 类型的文件同时具有管道的特性,在读取数据时,FIFO 管道中同时清除数据。
2.Linux文件系统
2.1文件系统概述
常见的文件系统:FAT、NTFS、EXT2/3/4
FAT
NTFS
EXT2/3/4
2.2Ext文件系统
硬盘的逻辑结构:
inode table:
inode存放文件类型、文件权限、文件物理地址、文件长度、文件状态、访问计数等等。