Linux学习-文件操作

正在学习Linux,记录一下学习历程。奋斗

在Linux中,文件指三类:普通文件,目录,伪文件。

简便起见,普通文件通常被称为文件,目录和伪文件则被认为是文件的特殊形式。

参考信息:

linux学习-文件系统

linux学习-目录操作

本文所指的所有文件都是普通文件。


创建文件

如何创建一个文件呢?

实际上,并不用创建文件。在需要时,系统会自动创建文件,极少需要自己创建新文件。

有3种常见情形:

1. 当使用文本编辑器时,如果文件不存在,那么程序将创建新文件。如:vi。

2. 当将输出重定向到文件时,如果文件不存在,那么shell将创建该文件。

3. 当复制文件时,复制程序将创建新文件。

但是,基于某些原因,希望创建一个全新的空文件。

没有直接的命令可以这样做,但是有一条命令的副作用可以创建空文件,touch。

touch的主要目的就是在不改变文件的情况下,改变文件的修改时间和访问时间。

默认情况下,touch将修改时间和访问时间设置为当前的时间和日期。

副作用就是如果指定的文件不存在,那么touch将创建这个文件。

选项:

-m  只修改时间

-a  只修改访问时间

-t  指定时间和日期

-c  如果文件不存在,不创建该文件


命名文件

命名规则:

1. 文件名可以长达255个字符

2. 文件名可以包含除/以及null字符以外的所以字符(/作为路径名的分隔符,null字符是所有位都为0的字符)

3. 创建对自己有意义的文件名

在文件名中安全使用的字符:

字母,数字,点,连字符(不要位于文件名的开头),下划线

坚持只使用安全字符,生活将减少很多麻烦。

在实际的使用中,我们经常使用以一个点加后缀结束的文件名来标识文件的类型。这样的后缀称为扩展名。

使用扩展名可以利用通配符方便地引用一组同类型地文件。

注意:扩展名并不决定文件的类型,它只是人为的标识,不使用扩展名同样可以。

对于一个文件,命名为filename.a 和命名为filename.b,或者命名为filename,对文件类型并没有任何影响。

建议:

命名文件和目录时只使用小写字母。一般大写以大写字母开头的名称留给在某些方面特别重要的文件。

因为大写字母在ASCII码中位于小写字母之前,在目录列表中大写字母开头的文件位于前面,可以突显出来。


复制

cp file1 file2

将file1的内容复制到file2。

如果目标文件不存在,那么创建一个新的文件。

如果目标文件存在,那么它将被替换。

cp  file  directory

将文件复制到指定目录下。

选项:

-i  在替换已有文件之前进行询问

-p  使目标文件和源文件拥有相同的修改时间,访问时间和权限

-r  将目录及其所有文件复制到另一个目录中(可以根据需要创建新目录)


移动&重命名

mv file directory

将文件移动到指定目录下。

注意:如果目录不存在,mv会认为你希望重命名文件。

如果文件已经在目标目录中存在,那么源文件将替换目标文件。

mv oldname newname

重命名文件或目录

选项:

-i  替换已有文件之前进行询问

-f  强制mv在不询问的情况下替换文件

ps:

使用mv时,一定要保证文件名称或目录名称的正确,因为mv兼具移动和重命名两个功能。

一定要确保所需的目录存在,因为mv并不会帮你创建新目录。


删除

一旦文件被删除,就真的被删除了,没有回收箱可以找回。

选项:

-i  在删除每个文件之前先请求许可

-f  强制执行删除

-r  删除整个目录树,可以用来删除非空目录

ps:

如果没有写权限,就不能删除文件。

如果希望保护文件,阻止其被不小心误删,可以不设置文件的写权限。


被删除文件恢复的可能性

没有可能


文件权限

系统为每个用户维护一组文件权限,通常称为权限。

这些权限控制那些用户标识可以访问文件,以及以何种方式访问文件。

每个文件有3组权限:一组针对属主,一组针对组,一组针对其他用户。

每组权限有3种:读权限(r),写权限(w),执行权限(x)

更多内容参见:Linux学习-文件权限


清空文件内容

之前提到的,一旦删除文件,就没有办法找回这个文件。

实际上,也不是完全没有可能。

删除文件后,文件所使用的实际磁盘空间还没有被清除,文件系统只是将这部分磁盘空间标识为可以重用。最终,这部分磁盘空间将被重用,旧数据被新数据所覆盖。

当旧数据还没有被覆盖时,通过一些特殊的“恢复删除”工具,查看磁盘未使用的部分,可以恢复旧数据。

即使数据被覆盖了,只要没有被覆盖多次,用非常昂贵的数据恢复设备也可能通过分析磁盘磁面的磁迹恢复。

因此,永远删除文件的最好办法就是毁坏存储介质。

对于清除整个磁盘这个方法还是有可行性的,但是如果只希望清除磁盘上的少数几个文件,就不太现实了。

有一个不错的程序shred可以完成这个任务。

shred可以多次覆盖磁盘上已有的数据,并且用来覆盖的数据都是随机的。

选项:

-v  处理过程中显示处理消息

-z  多次覆盖完成后,经文件全部填充为0

-u  处理后删除文件

-f  忽略受限制的文件权限


链接

详情参见:Linux学习-链接


查找文件
详情参见: Linux学习-查找文件







  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值