不管接下来,我们之中什么人发生什么事,你都不能停止前进!
——索隆
文章目录
- 一、Linux的文件系统
- 1.1 Linux的五种文件类型
- 1.2 Linux的目录结构
- 1.3 inode结点(索引结点)
- 1.4 硬链接和软连接
- 1.5 RAID
- 二、Linux的文件管理命令
- 1. cat 命令
- 2. chmod 命令
- 3. chown 命令
- 4. cp 命令
- 5. find 命令
- 6. head 命令
- 7. less 命令
- 8. more 命令
- 9. ln 命令
- 10. locate 命令
- 11. mv 命令
- 12. rm 命令
- 13. tail 命令
- 14. touch 命令
- 15. whereis 命令
- 16. which 命令
一、Linux的文件系统
1.1 Linux的五种文件类型
Linux的设计哲学是 :一切皆文件;正是如此,在Linux操作系统中,无论是硬件设备,例如鼠标键盘和屏幕,还是其他的任何软硬件,都可以在相关目录下找到他们的文件,这些文件共有五种类型
文件类型 | 描述 | 示例 |
---|---|---|
普通文件 | 用来在辅助设备上存储信息和数据(如硬盘) | 包含程序源代码(用C,C++,Java等语言所编写),可执行程序,图片,声音,图像等 |
目录文件 | 用于表示和管理系统中的文件,目录文件包含一些文件名和子目录名 | /root,/home |
链接文件 | 用于不同目录下文件的共享 | 当创建一个已存在的符号链接时,系统能够就创建一个链接文件,这个文件指向已存在的文件 |
设备文件 | 用来访问硬件设备 | 包括键盘,硬盘,光驱,打印机等 |
命名管道(FIFO) | 是一种特殊的文件,Linux系统下,进程之间通信可以通过该文件实现 |
1.2 Linux的目录结构
Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
Linux的目录结构
各目录的内容:
/bin:存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
/etc:存放系统管理和配置文件;
/home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
/usr :用于存放系统应用程序/opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
/proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
/root:超级用户(系统管理员)的主目录(特权阶级o);
/sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
/dev:用于存放设备文件;
/mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
/boot:存放用于系统引导时使用的各种文件;
/lib :存放着和系统运行相关的库文件 ;
/tmp:用于存放各种临时文件,是公用的临时文件存储点;
/var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
/lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。
1.3 inode结点(索引结点)
- inode 节点是一个 64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在 inode节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。
- Linux 文件系统通过把 inode节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的 inode 节点号,通过该inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
1.4 硬链接和软连接
- 硬链接
由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个一个硬链接,文件的链接数就加 1 。
不足:
1)不可以在不同文件系统的文件间建立链接;
2)只有超级用户才可以为目录创建硬链接。
- 软链接
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
实际场景下,基本是使用软链接。总结区别如下:
· 硬链接不可以跨分区,软件链可以跨分区。
· 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
· 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。
1.5 RAID
RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID 通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。
RAID 分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的 RAID 方案。
二、Linux的文件管理命令
1. cat 命令
cat 命令用于连接文件并打印到标准输设备上。
cat的主要用法:
- 显示整个文件
cat filename
- 从键盘创建一个文件
cat > filename
- 将几个文件合并为一个文件
cat file1 file2 > file3
cat 的更详细的参数及用法参考:cat 命令详解
2. chmod 命令
当使用 ls -l 命令是可以看到文件的权限 ,通常是这样:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。
用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
常用选项:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a:所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
-:删除权限,用数字0表示
s :特殊权限
简单举例:
- 增加 file1 的可执行权限:
chmod a+x file1
- 通过数字:
chmod 755 file1
3. chown 命令
chown 将指定文件的拥有者改为指定用户或组,用户可以是用户名或者用户ID;组也一样;
-c 显示更改的部分的信息
-R 处理指定目录及子目录
- 改变拥有者和群组
chown -c mail:mail filename
- 改变文件群组
chown -c :mail filename
- 改变test文件夹及子文件目录属主及属组为 mail
chown -cR mail: test/
4. cp 命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
常用选项:
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
实例:
- 复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖
cp -ai a.txt test
- 为 a.txt 建议一个链接(快捷方式)
cp -s a.txt link_a.txt
5. find 命令
用于查找文件并做相应处理
命令格式:
find pathname -options [-print -exec -ok ...]
命令选项:
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件
实例:
- 查找48小时内修改过的文件
find -atime -2
- 在当前目录查找 以 txt为后缀的文件
find ./ -name '*.txt'
- 查找 绝对路径 下权限为 777 的文件
find /home/xmz/ -perm 777
- 查找大于 1k 的文件
find -size +1000c
6. head 命令
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行
实例:
- 显示file1文件的前20行
head file1 -n 20 (-n设置行数)
- 显示文件的前 20 字节
head -c 20 file1
- 显示文件最后10行
head -n -10 file1
7. less 命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
选项与用法:
-i 忽略搜索时的大小写
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-s 显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
-x <数字> 将“tab”键显示为规定的数字空格
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]:向下翻动一页
[pageup]: 向上翻动一页
实例:
- ps查看进程信息并通过less分页显示
ps -aux | less -N
- 查看多个文件
less file1 file2 (n查看下一个,p查看前一个)
8. more 命令
功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
命令选项与使用方法:
+n 从笫 n 行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉常用操作命令:
Enter 向下 n 行,需要定义。默认为 1 行 4
Ctrl+F 向下滚动一屏 空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
实例:
- 显示文件中从第3行起的内容
more +3 file1
- 每次显示5行
ls -l | more -5
9. ln 命令
功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。
硬链接和软连接区别:
1、本质:硬链接:同一个多个名字,软连接不同文件
2、跨分区:硬链接不能夸分区,软连接可以跨分区
3、目录创建 硬链接不能创建lls
4、相互关系,软连接依赖原始文件
5、indoe号
6、链接数
7、路径:相对与当前目录是硬链接 相对与软连接的路径
8、文件类型。l开头是软连接 -为硬链接文件
硬链接:
1、文件有相同的inode及data block
2、只能对已经存在的文件进行创建
3、不能实现跨分区创建硬链接
4、不能对目录进行创建,只能对文件创建
5、删除一个硬链接文件并不影响其他有相同的inode号的文件,相当于多个名字
软连接:
1、软连接有自己的文件属性和权限,相当于windows下的快捷方式,保存了源文件的路径
2、可对不存在的文件或目录创建软连接
3、软连接可跨分区创建
4、软连接对文件或目录创建
5、创建软连接时,链接计数不会增加
6、删除软连接不影响被指向的文件,单弱被指向的原文间删除,则相关软连接就没有用了,但是并不会删除,如果被创建文件,则软连接有重新生效了。
7.软连接和源文件是不同类型的文件,也是不同的文件,inode号也不相同
用法实例:
- 创建一个软连接,显示操作信息
ln -sv source.log link.log
- 创建硬链接,显示操作信息
ln -v source.log link1.log
- 给目录创建软连接
ln -sv /opt/soft/test/test3 /opt/soft/test/test5
10. locate 命令
locate 通过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新,updatedb 是由 cron daemon 周期性调用的。默认情况下 locate 命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate 所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb 每天会跑一次,可以由修改 crontab 来更新设定值 (etc/crontab)。
locate 与 find 命令相似,可以使用如 *、? 等进行正则匹配查找
常用选项:
-l num(要显示的行数)
-f 将特定的档案系统排除在外,如将proc排除在外
-r 使用正则运算式做为寻找条件
实例:
- 查找和 pwd 相关的所有文件(文件名包含pwd)
locate pwd
- 搜索 etc 目录下所有以sh开头的文件
locate /etc/sh
- 查找 /var 目录下,以 reason 结尾的文件
locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)
11. mv 命令
- 重命名,将file1 重命名为 text1
mv file1 text1
- 移动多个文件,将文件或文件夹 file1,file2,file3 移动至file4文件夹下
mv file1 file2 file3 file4
- 将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
mv -i file1 file2
- 移动当前文件夹下的所有文件到上一级目录
mv * ../
12. rm 命令
rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
选项:
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
实例:
rm -rf /
rm -rf /*
13. tail 命令
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用参数:
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)
实例:循环读取逐渐增加的文件内容
ping baidu.com > ping.log &
tail -f ping.log
14. touch 命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。
1.命令格式:
touch [选项] 文件
2.命令选项:
-c 不建立任何文档
-d 使用指定的日期时间,而非现在的时间
-r 更新前者的时间戳,使其与后者的时间戳一样
3.实例:
创建两个不存在的文件
touch demo1.txt demo2.txt
如果demo1.txt不存在,则不创建文件
touch -c demo1.txt
更新demo1.txt的时间戳,使其和demo2.txt的时间戳相同
touch -r demo1.txt demo2.txt
15. whereis 命令
whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
常用选项:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
实例:
(1)查找 locate 程序相关文件
whereis locate
(2)查找 locate 的源码文件
whereis -s locate
(3)查找 lcoate 的帮助文件
whereis -m locate
16. which 命令
在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
ocate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
常用选项:
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
实例:
(1)查看 ls 命令是否存在,执行哪个
which ls
(2)查看 which
which which
3)查看 cd
which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
查看当前 PATH 配置:
echo $PATH
基础知识的第二篇就先总结到这里了,明天在总结一下 vim 插件的使用