Linux第九天


1.cat -n
显示行号包括所有空白行
演示:我在这里先创建一个test目录,里面写有:有一个写有第一行字母和第二,三,四,五行是空格,之后执行这个命令。
在这里插入图片描述
2.cat -b
显示行号不包括空行
演示:用的也是cat -n 命令的file1
在这里插入图片描述
3.cat -s
多个空行显示成为一个空行
演示:同cat -n 演示实例的file1
在这里插入图片描述
4.cat -v
dos格式的文件回车在linux显示会表示成 ^M,注:可用来区分win和linux生成的文件, windows中的换行符在Linux中会显示 成 ^M。
演示:先在windows桌面创建一个名为123.txt的文件,写两行内容。(两行内容才能显示出换行),之后将此文件传输到Linux系统上,之后用cat -v 进行查看。
a.将windows桌面的文件传输到Linux中
在这里插入图片描述
b.使用cat -v 命令查看
在这里插入图片描述
5.cat -E
在每行结束处显示 $,注:dos文件有异常
演示:同cat -n 演示实例的file1
在这里插入图片描述
6.cat -T
将 TAB 字符显示为 ^I
演示:修改cat -n 的file1文件中第二行为两个tab
在这里插入图片描述
7.cat -A
既在每行结束处显示 $又可以识别TAB,拥有-E 和-T两种功能
演示:修改cat -n 的file1文件中第二行为两个tab
在这里插入图片描述
8.cat -e
-V 与-E的功能
演示:使用cat -v 演示实例中的123.txt文件
在这里插入图片描述
9.cat -t

  • V和-T的功能 将 TAB 字符显示为 ^I和dos格式的文件回车在linux显示会表示成 ^M
    演示:修改123.txt文件:最后加上两个TAB键
    在这里插入图片描述

二.diff 命令

1.diff
对比两个文件差异
演示:创建一个file3,file4。file3中写入wwww,file4中写入zzzz.之后使用diff命令对比file3与file4.
在这里插入图片描述
<表示的是file3,>表示的是file4。<后面表示的是file3与file4中不同的内容,>显示的是file4与file3中不同的内容
2.diff -y
diff file3 diff4 -y
演示:
在这里插入图片描述
diff file3 diff4 -y -w 数字
-w参数表示的是设置宽度,在这就不演示了

三.vimdiff命令

1.vimdiff
对比两个文件差异,也可以进行编辑
演示:
在这里插入图片描述
红色表示两个文件差异的地方

四.grep命令

我们用/etc/passwd文件进行演示,首先需要将此文件拷贝出来,防止后续操作此文件时对系统产生影响(cp /etc/grep ./)。
1.grep
grep 字段 文件名
演示:将此文件中有root的所有行显示出来,此时显示出来的是 只要含有root的行就显示
在这里插入图片描述
2.grep -n
grep -n 字段 文件名
演示:将此文件中有root的所有行显示出来,带行号
在这里插入图片描述
在这里插入图片描述

3.grep -w
grep -w 字段 文件名
演示:只显示全字符合的列
在这里插入图片描述
可以看到此时对比-i 和 纯grep命令执行的结果,去掉了reroot这行和rooter这行。

4.grep -i
grep -i 字段 文件名
演示:不区分大小写,只要是符合这个字段的字母就显示
在这里插入图片描述
可以看到将大写的ROOT打印出来了,但是

5.grep -o
grep -o 字段 文件名
演示:只打印出想打印的字段,比如在以上的演示实例中只打印出;来的是root
在这里插入图片描述

6.grep -v
grep -v 字段 文件名
演示:打印出与字段相反的内容,也就是除了这个字段,其他内容都打印出来
7.grep -B
grep -B 数字 字段 文件名
演示:打印出此字段的前几行。
8.grep -A
grep -A 数字 字段 文件名
演示:打印出此字段的下几行。
9.grep -C
grep -C 数字 字段 文件名
演示:打印出此字段的上下几行。
10.grep -q
处于静默状态,匹配到了,但是不输出内容
在这里插入图片描述
这个参数有什么用呢?
答:配合着echo $? 使用,可以不占用屏幕查看,是否文件里面有没有要找的字符。比如我的文件里面有root行,返回的是0,没有www行,就返回非零的数字。
在这里插入图片描述

五.touch 命令

touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
1.touch
touch 文件名 (如果该文件不存在则创建一个,如果该文件存在则修改最近访问,最近更改,最近改动)
演示:我先修改了系统时间,之后在创建了一个file20文件,因为我这文件之前存在,所以再次创建的话,它的三个时间都会变。
在这里插入图片描述
2.touch -a
touch -a 只修改文件的acces(访问时间)
演示:执行命令后可以看到我的访问时间变成了系统时间,更改时间没有发生变动。对于改动时间的话只要你对文件进行了操作他都会变。 在这里插入图片描述
3.touch -c
touch -c 不创建不存在的文件
4.touch -d
touch -d 指定时间 文件名 (指定时间创建文件)
演示:指定的是访问时间和更改时间,改动时间随系统
在这里插入图片描述
5.touch -r
touch -r 文件1 文件2 (按照指定文件的时间创建文件,file1为指定的文件,file2为新文件)
演示:
在这里插入图片描述
6.touch -t
touch -t 指定年月日时分 文件 (修改文件为指定时间,如果没有文件 则就会创建一个指定日期的新文件)
演示:
在这里插入图片描述

六.Linux文件系统之 inode,block,superblock)

1.indoe(存放元数据):存放文件的权限(rwx)、文件属性(拥有者、群组、时间参数等)—>{元数据},一个文件占用一个inode,同时记录此文件的资料所在的block 号
2.block(块):存放文件的内容,一个块4.0k,8个连续的sector组成一个block。一个扇区(sector)512字节。
3.superblock(超级区块):会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量。
4.使用stat命令查看元数据:
演示:比如查看file文件的元数据
在这里插入图片描述

File:文件名称;
Size:文件大小;
Blocks:占用的磁盘块数
IO Block:IO块大小;
regular file:这里是显示文件的类型,这是一个普通文件
Device:所在设备
Inode:Inode节点号
Links:被链接的次数
Access(第一个):访问权限
Uid:uid号和属主
Gid:gid号和属组
Access(第二个):文件近一次的访问时间
Modify:文件的修改时间
Chang:文件的改变时间
####### 七.硬链接和软链接

七.硬链接命令(ln)

    ln 源文件 要链接的文件
    硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。

在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。 硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能

其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除
演示1:将文件file1硬链接到file2上
在这里插入图片描述
演示2:如果任意一个修改其中的内容,那么另外一个的内容会改变吗?
答:无论修改哪个文件,对应文件的内容都会变化,因为他们是同一个block。
在这里插入图片描述
演示3.如果,删除其中任何一个文件,另一个会受影响吗?
答:不会。因为rm命令删除的是一个文件的inode,而非block
而正是因为file文件的inode同时被file文件和file.link文件所同时指向,所以删除其中任意一个,另一个也不会受到影响。一个inode可以被许多文件所指向,只要有一个指向inode,那么该文件就不会被彻底覆盖(通俗地讲是删除,其实删除一个文件不是真正意义上的清空该文件的数据,而是空间被释放出来,其实数据还是在的,只不过后面会被其他数据所覆盖,类似于堆栈)
演示4.建立硬链接文件,目标文件没有写文件名,会和原名一致

八.软链接命令(ln -s)

 ln -s 源文件 要链接的文件
 另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件

在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接

用法: ln [选项] 源文件 目标文件

选项:

-s:建立软链接文件。如果不加 “-s” 选项,则建立硬链接文件
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
不加选项是创建硬链接
演示1:
在这里插入图片描述
演示2 :同样的对源文件和软连接文件的写操作都会对双方均生效
原因:创建的软连接文件有自己的inode和block,但是连接文件的block中存放的是源文件的路径名(可以根据这个找到源文件的inode)继而找到源文件的block
在这里插入图片描述
删除软链接文件,源文件不受影响。但如果删除源文件,那么软连接文件还会存在,不过无法去找到源文件,那么便会是一个失效的路径
切记:软链接文件的源文件必须写成绝对路径(即使源文件和你当前工作目录是在同一路径下),而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错
软连接是可以链接目录的。但是如果一个软连接文件链接的是目录,如果想删除该软连接,那么切记一定不要在删除的该软连接文件名后加路径分割符/,否则会删除所链接目录下的所有文件,切记切记!!!
例如:有个软链接目录/hhh,删除软链接目录的命令是rm -rf /hhh,这样删除的仅仅是个目录名,block里的内容还在,但是如果你的命令是rm -rf hhh/的话,你将删除该目录下的所有内容,也就是该目录的block内容

九.file命令

 file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件 类型,而不是像Windows通过扩展名来确定文件类型的。 

1.file 文件名 查看文件类型
演示:
在这里插入图片描述
2.file 文件名 查看文件编码格式
演示:先用which命令查看ls命令文件的路径,之后使用file命令查看编码格式
在这里插入图片描述

十.cp命令

cp指令用于复制文件或目录。如同时指定两个以上的文件或目录,拷贝到存在的目录下的话,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,拷贝到不存在的目录下的话,则会出现错误信息 

1.cp
cp 是 cp -i 的别名 -i 参数起到一个提示的作用。使用\或者unalias取消别名
演示:
在这里插入图片描述
2.cp -f
强制拷贝(没有提示信息,其实cp的本意就是强制拷贝)
3.cp -R
目录1 目录2 将目录1拷贝到目录2
4.cp -d
cp -d 文件1 文件2 拷贝一个链接文件,此处的文件1不能是链接文件的源文件
演示:将链接文件555 -->eee 拷贝成222—>eee
在这里插入图片描述
5.cp -a
cp -a -d和-R组合,既能复制目录又能复制链接文件
6.cp -p
cp -p 文件1 文件2 保留源文件(文件1)或目录的属性,包括所有者、所属组、权限与时间
演示1:首先查看下文件ooo的属性 之后创建一个文件uuu,再将ooo复制到uuu,发现uuu的最近改动和访问时间与ooo一致
在这里插入图片描述
在这里插入图片描述
演示2:首先su - zhe切换到zhe这个用户下,在tmp下创建一个file444的文件,之后ll查看发现他的用户和用户组权限都是zhe,之后exit退出进入root用户的tmp下,ll查看发现file444的用户和用户组权限依旧是zhe这个用户,之后cp file444 file4441 将file444 文件拷贝到file4441,再次查看权限,发现用户和用户组变成了root。如果用cp -p file444 file4441拷贝的话,他的权限依旧是zhe这个用户。

十一.find命令

1.find 路径 -name 文件名
演示1:查找etc下的所有passwd文件
在这里插入图片描述
演示2: 查找当前目录下的所有权限是777的文件
在这里插入图片描述

    除了按照文件名查找外,还有
    options常用的有下选项:
            -name:按照名字查找 
             -perm:安装权限查找  
             -prune:不再当前指定的目录下查找
             -user:文件属主来查
              -group:文件所属组来查找
               -nogroup:查找无有效所属组的文
               -nouser:查找无有效属主的文件
               -type:按照文件类型查找

2.find 路径 -name 文件名 -print0
不换行打印
演示:
在这里插入图片描述
3.find的exec
对匹配的文件执行该参数所给出的shell命令
find . -name file1 -exec rm -rf {} ; 表示的是对按文件名字匹配出来的文件执行rm -rf的命令,-exec相当于一个命令拼接。意思是删除所有匹配出的路径下的file1文件。
find . -name file2 -exec du -h {} ;
find . -name file2 -exec ls -l {} ;
find . -name file2 -exec ls -l {} ;
4.find的ok
与exec类似,只是多一步询问。 类似于rm表示强制删除,没有询问,而rm -i 有询问
演示:find . -name file2 -ok rm -rf {} ;
5.find -depth
先查找文件在查找目录
之前我们讲的所有的find参数以及find都是先查找目录在查找文件。
演示:

十二.rm命令

删除原理: 本质删除的是文件名

1.删除原理
Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般 来说,每个文件都有2个link计数器:i_count 和 i_nlink。 i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以 理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。
当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增
加。
对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进 程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或 者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件 中正确的读取及写入内容。这又是为什么呢?
这是因为rm操作只是将文件的i_nlink减少了,如果没其它的链接i_nlink就为0了;但由于该文件依然被进程引 用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有 i_nlink及i_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。
2.rm -i
删除询问
3.rm -r
递归删除(删除目录)
4.rm -v
显示删除的详细信息

十三.当系统的根目录被打满时,该如何定位)

1)查看系统上的大文件
[root@admin mail]# find / -size +10M -exec ls -lh {} ;
(2)分析大文件是否有异常文件
日志文件,/var/spool/mail/username
(3)若能正常使用进程管理工具 ---->查看异常进程—>杀死进程
若不能正常使用进程管理工具 ----> echo " " > 异常文件 -->查看异常进程
(4)分析问题原因

Linux的删除原理(提及i_count)

一)原理
Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。
i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。
当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增加。

对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。这又是为什么呢?

这是因为rm操作只是将文件的i_nlink减少了,如果没其它的链接i_nlink就为0了;但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有i_nlink及i_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。
在这里插入图片描述
二.软硬链接的删除
硬链接知识小结:
1、具有相同Inode节点号的多个文件是互为硬链接文件。
2、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。
3、只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除。
4、当所有硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收。
5、硬链接文件就是文件的另一个入口。
6、可以通过给文件设置硬链接文件,来防止重要文件被误删。
7、硬链接文件可以用rm命令删除。
8、对于静态文件(没有进程正在调用的文件)来说,当对应硬链接数位0(i_link),文件就被删除。i_link的查看方法(ls -l结构的第三列就是)
软链接知识小结
1、 软链接类似windows的快捷方式(可以通过readlink查看其指向)。
2、 软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体。
3、 删除源文件,软链接文件依然存放,但是无法访问指向的源文件路径内容了。
4、 失效的时候一般是红字白底闪烁提示。
5、 软链接和源文件是不同类型的文件,也是不同的文件。inode号也不相同。
6、 删除软链接文件可以用rm命令。
目录链接:
1、 对于目录,不可以创建硬链接,但可以创建软链接
2、 目录的硬链接不能跨越文件系统
3、 每个目录下面都有一个硬链接“.”号,和对应上级目录的硬链接“…”。
4、 在父目录里面创建一个子目录,父目录的链接数增加1(子目录里都有…来指向父目录)。但是在父目录里创建文件,父目录的链接数不会增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《嵌入式Linux基础教程(第2版)》PDF是一本深入浅出的嵌入式Linux学习指南,由谢希仁编著。本书主要介绍了嵌入式Linux的概念、架构、编程实践和应用开发等,适合初学者和有一定经验的开发者阅读。 本书分为六章,包括嵌入式系统与Linux系统、Linux的构建与移植、系统启动与运行、设备驱动程序编写、文件系统和网络应用开发等内容。其中,第一章主要讲解了嵌入式系统和Linux系统的概念,以及它们的优缺点。第二章则介绍了如何构建和移植Linux系统,包括构建Linux内核、交叉编译工具链的配置与使用、文件系统的制作和移植等。 第三章讲解了Linux系统启动的过程和原理,并介绍了以Bootloader、U-Boot为代表的启动程序的开发和应用。第四章是本书的重点内容之一,讲述了如何编写设备驱动程序,包括字符设备驱动程序和块设备驱动程序。第五章详细介绍了Linux的文件系统原理、文件系统的制作方法和移植方法,以及常见的文件系统的格式和应用。最后,第六章介绍了Linux下网络应用的编程开发,包括TCP/IP协议栈的实现、Socket编程、Web服务器开发等。 总的来说,《嵌入式Linux基础教程(第2版)》PDF是一本内容详实、实用性强的入门级嵌入式Linux教程。通过学习本书,读者可以了解嵌入式Linux的核心概念和实际应用,以及如何开发和部署嵌入式Linux系统。无论您是嵌入式工程师还是Linux爱好者,都可以从本书中获得丰富的知识和实践经验。 ### 回答2: 《嵌入式Linux基础教程》是一本经典的教材,是Linux嵌入式系统方面的必备读物。本书第2版更加全面深入地介绍了Linux嵌入式系统的基础知识和实践技巧。 该书从Linux基础入门开始讲起,逐步深入到嵌入式Linux系统的构建、移植和启动等方面,同时涵盖了Linux内核驱动、文件系统、网络等各个方面的知识。本书内容全面,讲解详细,对初学者来说非常友好。 另外,本书还涵盖了一些实用的案例,例如如何运用Linux构建一个完整的嵌入式系统,如何实现一个网络引导(Linux网络启动),对于想要在实践中学习的读者来说是极为有帮助的。 总的来说,《嵌入式Linux基础教程第2版》是一本非常优秀的入门教材,对于初学者学习嵌入式Linux系统非常有帮助,同时也为专业人士提供了深入研究的细节。强烈推荐给想要学习和使用嵌入式Linux系统的读者阅读并使用。 ### 回答3: 《嵌入式linux基础教程 第2版pdf》是一本涉及嵌入式系统和linux操作系统的教程书籍,适合初学者和开发者参考和学习。本书共分为12章,详细介绍了嵌入式系统的基础知识、linux操作系统的安装、配置、使用和应用开发等方面的内容。 在第一章中,本书从介绍嵌入式系统应用领域的基础知识开始,例如嵌入式系统的定义、分类、特点以及应用领域等。第二章涵盖了Linux操作系统的安装和配置,包括如何选择和下载适合嵌入式系统的Linux内核、使用交叉编译器进行交叉编译、安装组件等。 在第三章,本书介绍了Linux系统中的文件和目录结构,软件包管理等内容;第四章介绍了shell脚本编程和命令行工具使用;第五章介绍了嵌入式系统中的板级支持包和驱动程序的开发。此外,在第六章和第七章,本书讲述了Linux下的进程管理和内存管理。 在第八章和第九章,本书介绍了Linux下的socket编程和网络协议栈的原理及应用;第十章中,本书讲解了嵌入式系统中的文件系统和闪存存储器的使用和管理;第十一章介绍了Linux下的多线程编程和信号处理等内容。 在最后一章,本书将介绍基于嵌入式系统的应用的开发,例如芯片厂商提供的开发包和SDK,基于QT的图形用户界面开发等。 总的来说,这本书从基础概念到应用开发均有涵盖,有助于初学者了解嵌入式系统和Linux操作系统的基础知识,同时也是开发者进行嵌入式软件开发的好参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值