26 文件和目录管理

2016-10-08  本文已影响38人  StarShift

绝对路径和相对路径

文件和目录名可以是绝对的,这表示名称以 / 开头。
也可以相对当前工作目录,这表示不是以 / 开头。

文件或目录的绝对路径的组成为:
在 0 个或多个目录名后附加一个 /,其中每个目录名的后面都有一个 /,然后是一个最终文件名。

列出详细内容

在一台存储设备中,文件或目录被包含到一个块(block)组合中。有关文件的信息被包含在一个索引节点(inode)中,其中记录如下信息:所有者、最后一次访问文件的时间、文件大小、是否为目录以及谁可以读取或写入数据。inode 编号也被称为文件序列号(file serial number),并且在一个特定文件系统中是唯一的。我们可以使用-l
(或--format=long
)选项来显示存储在 inode 中的某些信息。

默认情况下,ls 命令不会列出特殊文件,这些文件的文件名以点号 (.) 开头。除根目录外的所有目录都至少包含两个特殊条目:目录本身 (.) 和父目录 (..)。根目录没有父目录。

[ian@echidna lpi103-2]$ ls -al
total 52
drwxrwxr-x. 2 ian ian 4096 2009-08-11 21:21 .
drwx------. 35 ian ian 4096 2009-08-12 10:55 ..
-rw-rw-r--. 1 ian ian 8 2009-08-11 21:17 sedtab
-rw-rw-r--. 1 ian ian 24 2009-08-11 14:02 text1
-rw-rw-r--. 1 ian ian 25 2009-08-11 14:27 text2
-rw-rw-r--. 1 ian ian 63 2009-08-11 15:41 text3
-rw-rw-r--. 1 ian ian 26 2009-08-11 15:42 text4
-rw-rw-r--. 1 ian ian 24 2009-08-11 18:47 text5
-rw-rw-r--. 1 ian ian 98 2009-08-11 21:21 text6
-rw-rw-r--. 1 ian ian 15 2009-08-11 14:41 xaa
-rw-rw-r--. 1 ian ian 9 2009-08-11 14:41 xab
-rw-rw-r--. 1 ian ian 17 2009-08-11 14:41 yaa
-rw-rw-r--. 1 ian ian 8 2009-08-11 14:41 yab

复制、移动和删除文件

  1. 如果目标是一个现有目录,那么所有源将被复制目标中。
  2. 如果目录是一个不存在的目录,那么(单一)源也必须为一个目录,并且源目录的副本及其内容使用目标名作为新名称。
  3. 如果目标是一个文件,那么(单一)源必须也为文件,而源文件的副本使用目标名作为新名,替换任何现有的具有相同名称的文件。

下面是关于文件inode的一个实例:

ian@Z61t-u14:~/lpi103-2$ cp text1 text1.bkp
ian@Z61t-u14:~/lpi103-2$ mkdir backup
ian@Z61t-u14:~/lpi103-2$ cp text1 backup/text1.bkp.2
ian@Z61t-u14:~/lpi103-2$ ls -i text1 text1.bkp backup
787425 text1 787445 text1.bkp
backup:
787447 text1.bkp.2
ian@Z61t-u14:~/lpi103-2$ 
mv text1.bkp backup
ian@Z61t-u14:~/lpi103-2$ 
mv backup/text1.bkp backup/text1.bkp.1
ian@Z61t-u14:~/lpi103-2$ 
ls -i text1 text1.bkp backup
ls: cannot access text1.bkp: No such file or directory
787425 text1
backup:
787445 text1.bkp.1 787447 text1.bkp.2

通常,cp 命令会复制一个文件来覆盖现有副本,只要现有文件是可写的。另一方面,如果目标存在,mv 就不会移动或重命名文件。

有一些与 cp 和mv 的这一行为相关的有用选项。
**-f 或--force **
导致cp 尝试删除现有目标文件,即使该文件是不可写的。
**-i 或--interactive **
要求在尝试替换现有文件之前进行确认。
**-b 或--backup **
对任何要替换的文件进行备份。

ian@Z61t-u14:~/lpi103-2$ cp text2 backup
ian@Z61t-u14:~/lpi103-2$ cp --backup=t text2 backup
ian@Z61t-u14:~/lpi103-2$ ls backup
text1.bkp.1 text1.bkp.2 text2 text2.~1~
ian@Z61t-u14:~/lpi103-2$ 
rm backup/text2 backup/text2.~1~
ian@Z61t-u14:~/lpi103-2$ ls backup
text1.bkp.1 text1.bkp.2

cp 命令默认情况下为新文件创建了一个新时间戳。所有者和组也被设置为执行复制的用户的所有者和组。可以使用-p 选项保留选定的属性。请注意,根用户可能是唯一可以保留所有权的用户。

创建和删除目录

上一篇 下一篇

猜你喜欢

热点阅读