正在学习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学习-链接