1.1 Linux文件类型
1.1.1文件的分类
我们的Windows中,我们通过文件的扩展名可以知晓文件的类型,但是在Linux中不用后缀名来进行区分,因为在Linux中一切皆为文件,你既可以使用vim打开一个txt的文件,也可以打开一个目录文件。
在前面我们学过一个 ls -l 的命令,通过这个命令我们可以看到文件的类型。
在Linux系统中的每种文件的类型都用一个字符进行标识,主要是有7种类型并用字符进行标识,每个字符的标识如图所示。
| 文件类型 | 类型符号 | 描述 |
| ———— | ——– | ———————————————————— |
| 普通文件 | - | 指ASCII 的文本文件、二进制可执行文件,以及硬链接文件 |
| 块设备文件 | b | 块 的 输入/输出 设备文件 |
| 字符设备文件 | c | 原始输入/输出设备文件,每次I/O仅一个字符 |
| 目录文件 | d | 包含若干文件或子目录 |
| 套接字设备 | s | 套接字是方便进程之间通讯的特殊文件。与管道文件不同的是,套接字能通过网络链接使不同计算机的进程之间进行通讯 |
| 符号链接文件 | l | 只保留了所指向文件的地址,而不是文件本身 |
| 管道文件 | p | 用于进程间的管道文件 |
1.1.2 普通文件
普通文件(Regular File)是 Linux 系统中最常见的文件类型。它可以包含任何类型的数据。例如,它可能包含文本、程序或二进制数据等。普通文件还可以进一步被分类为文本文件和二进制文件。
-
文本文件:这些文件包含人类可读的字符,并且可以使用文本编辑器(如 vim、nano 或 gedit 等)进行查看和编辑。
-
二进制文件:这些文件包含编译过的程序,或者其他非文本格式的数据。尝试用文本编辑器查看这些文件,你会看到一堆看起来无意义的字符。
在使用 ls -l 命令查看文件详细信息时,普通文件会被标记为 -,例如:
-rw-r--r-- 1 user group 123 Jan 1 00:00 example.txt
-rw-r--r-- 1 student student 8980 3月 24 2020 examples.desktop
- rw- r-- r--
文件类型 用户主 用户组 其他人
7 4 4
r 写入
w 读取
x 执行
- 无权限
在这个例子中,第一个字符 - 表示 example.txt 是一个普通文件。其他字符表示文件的权限、所有者、大小和修改时间等信息。
1.1.3 目录文件
目录文件(Directory File)在 Linux 中是一种特殊的文件,它实际上是一个文件的索引,该文件包含了其他文件和目录的列表。当我们创建一个目录时,系统会自动创建一个目录文件来存储该目录的相关信息。
目录文件包含了目录下所有文件和子目录的名字,以及指向这些文件和子目录 i-node 的指针。但请注意,目录文件并不包含这些文件和子目录的实际内容,也不包含这些文件和子目录的具体位置,这些信息是被存储在各自的 i-node 中的。
在使用 ls -l 命令查看文件详细信息时,目录文件会被标记为 d,例如:
drwxr-xr-x 2 user group 4096 Jan 1 00:00 example_directory
在这个例子中,第一个字符 d 表示 example_directory 是一个目录文件。其他字符表示目录的权限、所有者、大小和修改时间等信息。
1.1.4 链接文件
链接文件是一种特殊的文件,它是对另一个文件的引用。Linux中有两种链接文件:硬链接和符号链接(也被称为软链接)。
硬链接:硬链接文件与它所链接的原文件共享相同的i-node和存储空间,换句话说,硬链接文件和原文件是完全相同的文件,只是名字不同。请注意,硬链接文件不能跨越不同的文件系统,并且不能链接目录。
符号链接:符号链接,或者说软链接,相当于Windows系统中的快捷方式。它是一个独立的文件,有自己的i-node,但它的内容是所链接文件的路径。符号链接可以链接任何类型的文件,并且可以跨越不同的文件系统。
在使用 ls -l 命令查看文件详细信息时,链接文件会被标记为 l,例如:
lrwxrwxrwx 1 user group 7 Jan 1 00:00 example_link -> example_file
在这个例子中,第一个字符 l 表示 example_link 是一个链接文件,箭头后面的 example_file 是它所链接的文件。其他字符表示链接文件的权限、所有者、大小和修改时间等信息。
1.1.5 设备文件
设备文件是一种特殊的文件,它用于表示系统中的设备,包括块设备和字符设备。
块设备:这种设备在处理数据时以较大的固定大小(称为块)为单位进行处理。硬盘、光驱等存储设备就属于块设备。
字符设备:这种设备在处理数据时以字符为单位进行处理,如键盘、鼠标等输入设备和打印机等输出设备。
在使用 ls -l 命令查看文件详细信息时,块设备文件会被标记为 b,字符设备文件会被标记为 c。例如:
brw-rw---- 1 root disk 8, 0 Jan 1 00:00 example_block_device
crw-rw---- 1 root dialout 4, 64 Jan 1 00:00 example_character_device
在这个例子中,第一个字符 b 或 c 表示 example_block_device 或 example_character_device 是一个块设备或字符设备文件。其他字符表示设备文件的权限、所有者、设备号和修改时间等信息。
套接字设备:这一类设备经常用于网络数据的链接,可以启动一个程序来监听用户 的要求
常见的字符设备文件:
- /dev/console 控制终端
- /dev/input/event0 ~ event4 键盘
- /dev/input/mouse0 ~ mouse2 鼠标
- /dev/ttyS0 : 串口设备 ,和我们Windows中的 COM口是一样的
- /dev/null/ 空设备 当我们需要屏蔽一个设备的时候,我们可以重定向到 空设备
常见的块设备文件:
- /dev/sda : 硬盘设备
- /dev/sda1 : 硬盘的第一个主分区
- 硬盘类型 :
- scsi : sd开头
- ide : hd 开头
- 硬盘设备编号
- a:表示第一主盘
- b:表示第一从盘
- c:代表第二从盘
- 分区编号
- 1:表示第一分区
字符设备和块设备的区别 : 1)操作设备的基本单位,字符设备一次只能读取1个字符, 块设备可以一次性读取一块数据
sdc4 第二从盘 第4分区
1.1.6 管道和套接字文件
管道文件使用 p 开头,我们的管道文件是用于进程间通讯所使用的,比较类似于我们的套接字文件,我们的套接字文件是用在我们不同主机之间的通讯,而我们的管道文件是 用于程序与程序之间相互通讯所使用。
可以通过命令 mkfifo来创建一个一个管道文件
3.2 Linux文件属性
3.2.1 文件权限信息
-rw-r--r-- 1 student student 8980 3月 24 2020 examples.desktop
权限信息 文件属主 文件属组 大小 文件最后修改时间 文件名
权限信息
- | rm- | r-- | r--
文件类型 文件属主 同组用户 其他用户
r:read 读取
w:write 写入
x:excute 执行
-: 表示没有权限
权限表示方法
字符表示权限
字符权限:rwx | r-x |rw-
111 101 110
绝对权限:7 5 6
当我们在进行查看文件属性时,我们使用字符权限表示法,当我们在程序中对文件进行权限规范时我们使用绝对权限
u:user 文件属主
g:group 同组用户
o:other 其他用户
a:all 所有用户
3.2.2 Linux目录结构
| 目录名称 | 功能 |
| ———– | —————————————————- |
| /etc | 存放系统配置文件 |
| /bin | 常用命令存放目录 |
| /sbin | 存放root的指令文件 |
| /lib | 存放库文件 |
| /home | 用户主目录 |
| /boot | 包含内核和启动文件 |
| /dev | 设备文件存放目录(用于和底层驱动管理) |
| /usr | 应用程序存放目录 |
| /mnt | 挂载目录,我们的共享文件夹就是挂载在这个目录下面 |
| /root | root用户主目录 |
| /proc | process 的缩写,主要描述系统进程 |
| /lost+found | 在该目录中可以找到一些误删除或丢失的文件,并恢复他们 |
Linux 的目录结构采用的是树状结构,这种结构以一个根(/)作为开始。这种方式和 Windows 的森林结构(多个独立的树形结构,如 C:, D:\ 等)有所不同。
以下是 Linux 文件系统的一些重要目录:
bin :存放常用的命令 例如 rm、ls 、cat 、cp
etc :存放系统配置文件 例如 密码 /ect/passwd
lib : 存放程序常用的库文件 例如 : 动态库.so 文件(相当于是Windows中的. dll) 静态库 .a
lost+found : 回收站
mnt : 共享文件夹
usr : 用户安装的应用
boot : 内核启动文件 分配内存 分配中断(CPU核心)
dev : 设备
dev/tty 串口设备 字符设备
dev/sda 存储设备 块设备
dev/input 标准外部输入 字符设备 鼠标 键盘
==dev/stdin 标准输入 从键盘==
==dev/stdout 标准输出 到终端==
==dev/stderr 标准错误 错误码==
home: 普通用户家目录
root : 超级用户
根目录、树型结
一级子目录/bin、/boot、/etc、/home、/usr、/root、/dev、/lib、/mnt、/tmp、
/var 目录介绍及其中常用文件介绍
用户主目录~,工作目录.,父目录..的介绍及使用
3.2.3 绝对路径和相对路径
在 Linux 系统中,路径是用来定位文件或目录的重要工具。路径的种类主要有两种:绝对路径和相对路径。
绝对路径:==路径从文件系统的根目录 / 开始==,给出了从根目录到目标文件或目录的完整路径。例如,/usr/share/doc 就是一个绝对路径,它代表的是文件系统中的 /usr/share/doc 这个目录。
相对路径:==相对路径是以当前目录为参照点的路径==,它并不从 / 开始。举个例子,假设当前目录是 /usr,那么 share/doc 就是一个相对路径,它指向的是当前目录 /usr 下的 share/doc 这个目录,其实际位置是 /usr/share/doc。
绝对路径和相对路径在实际使用中各有优势。如果我们知道文件或目录的完整位置,就可以使用绝对路径来直接访问。然而,如果我们正在操作的文件或目录就在当前工作目录或其附近,使用相对路径可以更为便捷。
在使用相对路径时,还有两个特别的符号可以帮助我们快速定位:
.:代表当前目录..:代表父目录
举例来说,假设当前目录是 /usr/share,那么 . 就代表 /usr/share,.. 就代表 /usr。这两个符号在实际操作中经常用到,能够极大提高工作效率。
作业:
1、一些命令的实现
1.1 chown 改变文件的属主或属组
china@ubuntu:~$ sudo chown root 1.c
china@ubuntu:~$ sudo chown -R china kk/
umask 改变系统权限掩码
china@ubuntu:~$ umask
0022
china@ubuntu:~$ umask 003
china@ubuntu:~$ umask
0003
china@ubuntu:~$ umask 002
china@ubuntu:~$ umask
0002
chmod 文件权限
china@ubuntu:~$ sudo chmod 777 text.c
[sudo] china 的密码:
china@ubuntu:~$ ls -l
总用量 56
-rwxrw-rw- 1 china china 7630 3月 3 10:17 001.txt
-rw-r--r-- 1 root china 107 3月 3 10:17 1.c
prw-r--r-- 1 china china 0 3月 3 19:51 2.txt
drwxr-xr-x 2 china china 4096 2月 28 20:51 Desktop
drwxr-xr-x 2 china china 4096 2月 15 2020 Documents
drwxr-xr-x 2 china china 4096 2月 15 2020 Downloads
drwxr-xr-x 2 china china 4096 2月 27 2020 ftpboot
drwxr-xr-x 2 china china 4096 3月 3 10:49 kk
drwxr-xr-x 2 china china 4096 2月 15 2020 Music
drwxr-xr-x 2 china china 4096 2月 15 2020 Pictures
drwxr-xr-x 2 china china 4096 2月 24 2020 Public
drwxr-xr-x 2 china china 4096 2月 15 2020 Templates
-rwxrwxrwx 1 china china 0 3月 3 20:21 text.c
drwxr-xr-x 2 china china 4096 2月 15 2020 Videos
drwxr-xr-x 9 china china 4096 6月 13 2019 vmware-tools-distrib
china@ubuntu:~$
gzip压缩:
china@ubuntu:~$ gzip 11.txt
china@ubuntu:~$ ls -l
总用量 52
-rwxrw-rw- 1 china china 504 3月 3 10:17 11.txt.gz
-rw-r--r-- 1 root china 107 3月 3 10:17 1.c
prw-r--r-- 1 china china 0 3月 3 19:51 2.txt
drwxr-xr-x 2 china china 4096 2月 28 20:51 Desktop
drwxr-xr-x 2 china china 4096 2月 15 2020 Documents
drwxr-xr-x 2 china china 4096 2月 15 2020 Downloads
drwxr-xr-x 2 china china 4096 2月 27 2020 ftpboot
drwxr-xr-x 2 china china 4096 3月 3 10:49 kk
drwxr-xr-x 2 china china 4096 2月 15 2020 Music
drwxr-xr-x 2 china china 4096 2月 15 2020 Pictures
drwxr-xr-x 2 china china 4096 2月 24 2020 Public
drwxr-xr-x 2 china china 4096 2月 15 2020 Templates
-rwxrwxrwx 1 china china 0 3月 3 20:21 text.c
drwxr-xr-x 2 china china 4096 2月 15 2020 Videos
drwxr-xr-x 9 china china 4096 6月 13 2019 vmware-tools-distrib
china@ubuntu:~$ gunzip 11.txt.gz
china@ubuntu:~$ ls -l
总用量 56
-rwxrw-rw- 1 china china 7630 3月 3 10:17 11.txt
-rw-r--r-- 1 root china 107 3月 3 10:17 1.c
prw-r--r-- 1 china china 0 3月 3 19:51 2.txt
drwxr-xr-x 2 china china 4096 2月 28 20:51 Desktop
drwxr-xr-x 2 china china 4096 2月 15 2020 Documents
drwxr-xr-x 2 china china 4096 2月 15 2020 Downloads
drwxr-xr-x 2 china china 4096 2月 27 2020 ftpboot
drwxr-xr-x 2 china china 4096 3月 3 10:49 kk
drwxr-xr-x 2 china china 4096 2月 15 2020 Music
drwxr-xr-x 2 china china 4096 2月 15 2020 Pictures
drwxr-xr-x 2 china china 4096 2月 24 2020 Public
drwxr-xr-x 2 china china 4096 2月 15 2020 Templates
-rwxrwxrwx 1 china china 0 3月 3 20:21 text.c
drwxr-xr-x 2 china china 4096 2月 15 2020 Videos
drwxr-xr-x 9 china china 4096 6月 13 2019 vmware-tools-distrib
china@ubuntu:~$
bzip2压缩、 xz压缩类同gzip
归档与解归档的命令
china@ubuntu:~$ tar -cvf dar.tar 11.txt
11.txt
china@ubuntu:~$ tar -xvf dar.tar 11.txt
11.txt
用户与组
china@ubuntu:~$ groups
china adm cdrom sudo dip plugdev lpadmin sambashare
china@ubuntu:~$ sudo groupadd nihao
china@ubuntu:~$ sudo usermod -aG nihao china
创建用户与删除用户
china@ubuntu:~$ su
密码:
root@ubuntu:/home/china# adduse linux
Command 'adduse' not found, did you mean:
command 'adduser' from deb adduser
Try: apt install <deb name>
root@ubuntu:/home/china# adduser linux
正在添加用户"linux"...
正在添加新组"linux" (1004)...
正在添加新用户"linux" (1001) 到组"linux"...
创建主目录"/home/linux"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
正在改变 linux 的用户信息
请输入新值,或直接敲回车键以使用默认值
全名 []:
房间号码 []:
工作电话 []:
家庭电话 []:
其它 []:
这些信息是否正确? [Y/n] y
root@ubuntu:/home/china# exit
exit
china@ubuntu:~$ cd ../
china@ubuntu:/home$ ls
china linux
自己编写一个 C语言程序 让其死循环 然后 通过命令的方式 去查找到 进程 然后删除:


1079

被折叠的 条评论
为什么被折叠?



