Linux 必会基础语句 软硬连接区别 Linux文件类型
文件类型及对应看操作语句
普通文件(文件图片) REG
touch 文件名 #创建文件
stat 文件 #查看文件详细信息 包括文件大小、块儿 indoe
inode是用来存储这些数据的属性的,包含的属性信息有文件大小、属主、归属的用户组、读写权限、问价类型、修改时间,还有指向文件实体指针的功能(inode节点----block的对应关系),但是唯独不包含文件名
block是用来存储实际数据用的,例如:照片、视频等普通文件数据;
访问一个文件,通过文件名找到inode---->block
目录(dir)
cd ~/ 直接到root目录
pwd 查看目录路径
mkdir 创建目录
连接(link)
主要分软连接和硬链接;
不管是通过编辑原文件还是通过其软链接去编辑文件,该原文件下的其他软链接打开的文件都随之改变;
ln 参数 原文件 目标文件 #参数部分不添加就是硬链接,添加就是软连接
通常语句如下,还有其他参数应用比较少
ln 源文件 目标文件 #硬链接
ln -s 源文件 目标文件 #软连接
主要区别:
软连接:
- 删除原文件,其对应的软链接都不能使用,为无效链接。
- 删除其中任一的软链接文件,原文件以及该原文件下的其他软链接文件依然可用
- 软链接不保存实际的数据,只保存原始文件的路径。
软链接
与源文件inode号不同,是不同的文件,是源文件的快捷方式
硬连接:
- 删除其中任一的文件,都会不影响到其他文件;
- 目录禁止创建硬链接
- 源文件和硬链接有相同inode号,理解为
同一个文件
或是一个文件多个入口
目录创建后,默认有.和..两个目录:
- .的inode号就是当前目录的inode号,如同
硬链接
- ..的inode号是上级目录的inode号,如同父目录的
硬链接
- 因此任意一个目录,硬链接基数都是2(目录名+当前目录名)
块设备(block)
/dev为设备目录,
linux中块设备是指以数据块形式被访问的设备,可以像文件一样被访问,其数据读写只能以块的倍数进行,块设备中应用程序可以随机访问设备数据,且程序可自行确定读取数据的位置,但不支持根据字符寻址,常见的块设备有硬盘、软盘、CD-ROM驱动器和闪存等。
字符设备 CHR
字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。
字符终端(/dev/console)和串口(/dev/ttyS0以及类似设备)就是两个字符设备,它们能很好的说明“流”这种抽象概念。
字符设备可以通过文件节点来访问,比如/dev/tty1和/dev/lp0等。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。然而,也存在具有数据区特性的字符设备,访问它们时可前后移动访问位置。例如framebuffer就是这样的一个设备,app可以用mmap或lseek访问抓取的整个图像。
ll查看
字符设备文件(类型为c),设备文件是没有文件大小的,取而代之的是两个号码:主设备号5 +次设备号1 ;块设备文件(类型为b)
socket
socket在Linux中对应的文件系统叫Sockfs,每创建一个socket,就在sockfs中创建了一个特殊的文件,同时创建了sockfs文件系统中的inode,该inode唯一标识当前socket的通信。
pipeline(管道)
在Linux系统中,目录也是一种特殊的文件,它们用来包含文件,文件一定在某个目录下。,管道有父子进程关系; 通常称为FIFO。
管道 | 管道可以 输入、衔接、输出 pipeline;
基本语句
Linux 0代表标准输入、1代表标准输出、2代表报错输出
$$ 当前bash的pid 当前交互进程的pid号 ($BASHPID)
lsof -op $$ 当前文件描述符的所有细节
<> 重定向操作符