Ict-创新/LPI/103.3
考生应能够使用基本的 Linux 命令来管理文件和目录。
关键知识领域
- 分别复制、移动和删除文件和目录。
- 递归地复制多个文件和目录。
- 递归地删除文件和目录。
- 在命令中使用简单和高级的通配符规范。
- 使用 find 根据类型、大小或时间查找并操作文件。
- 使用 tar、cpio 和 dd。
绝对路径和相对路径
可以通过给出其完整路径名(从根目录 (/) 开始)或其相对路径(从当前目录开始)来访问目录或文件。
绝对路径:独立于用户的当前目录,以 / 开头
相对路径:取决于用户的位置,不以 / 开头
与任何结构化文件系统一样,有很多实用程序可以帮助您浏览系统。
pwd:以绝对路径的形式给出您的实际位置。
cd:'更改目录' 命令
ls: 列出目录的内容。
该命令可以接受几个参数,其中最常见的是
-l – 使用长列表格式,
-a – 列出所有文件和目录,包括隐藏的文件和目录,
-h – 以人类可读的格式显示文件大小,即格式化以方便阅读
-d – 仅列出目录,不列出其内容。
查找文件和目录
我们将描述 find、which、whereis 和 locate 实用程序。
find
语法
find <DIRECTORY> <CRITERIA> [-exec <COMMAND> {} \;]
DIRECTORY 参数告诉 find 从哪里开始搜索,而 CRITERIA 可以是串行选择条件的组合,包括要查找的文件或目录的名称。
示例
# find /usr/X11R6/bin -name ¨x*¨. # find / -user 502 |
匹配文件的名称将列在标准输出中。或者,可以对找到的每个文件执行特定操作。例如,删除文件或更改权限。find 工具具有内置选项 –exec ,允许您执行此操作。例如,删除属于用户 502 的所有文件
# find / -type f -user 502 –exec rm –f {} \; |
-type | 指定文件类型 |
-name | 文件的名称(可以包含通配符) |
-user | 用户所有者 |
-atime、ctime、mtime | 访问时间、创建时间和修改时间(24 小时的倍数) |
-amin、cmin、mmin | 访问时间、创建时间和修改时间(1 分钟的倍数) |
-newer FILE | 比 FILE 更新的文件 |
处理目录
创建目录
创建目录时,可以使用 -m 选项设置权限模式。另一个有用的选项是 -p,它会根据需要自动创建所有子目录。
示例
# mkdir –p docs/programs/versions |
删除目录
要删除目录,请使用 rmdir 或 rm -r。rmdir 仅删除空目录。指定 -f 强制删除您没有写入权限的文件。
注意:rm –rf /dir1/* 删除所有文件和子目录,使 dir1 为空
rm –rf /dir1/ 删除所有文件和子目录,包括 dir1
使用 cp 和 mv
cp
语法
cp [options] file1 file2
cp [options] files directory
需要注意的是,cp file1 file2 会创建 file1 的一个新副本,并保留 file1 不变。您也可以使用列表或通配符将多个文件复制到目录中。下表列出了最常用的选项。
cp 的最常见选项 | |
-d | 不遵循符号链接(与 -R 一起使用时) |
-f | 强制 |
-i | 交互式,在覆盖之前提示 |
-p | 保留文件属性 |
-r | 递归地复制目录 |
注意: cp –r /mydir/* /dir2/ 将复制所有文件和子目录,省略 mydir
cp –r /mydir/ /dir2/ 将复制所有文件和子目录,包括 mydir
mv
语法
mv [options] oldname newname
mv [options] source destination
mv [options] source directory
mv 命令既可以移动也可以重命名文件和目录。如果 oldname 是文件,而 newname 是目录,则文件 oldname 将被移动到该目录中。
如果源和目标位于同一个文件系统上,则文件不会被复制,而是链接将简单地移动到新位置。最常见的选项是 -f 强制覆盖和 -i 交互式查询。
touch 和 dd
touch
另一种创建或修改文件的方法是使用 touch。
语法: touch {options} file(s)
如果 file 不存在,则创建它。您还可以使用 -a 选项将文件的访问时间更新为当前时间,-m 更改修改时间,-r 用于应用另一个文件的属性。
示例
touch file1.txt file2.txt 创建新文件
touch myfile -r /etc/lilo.conf myfile 获取 lilo.conf 的属性
dd
此命令以可更改的 I/O 块大小复制文件。它也可以用于执行转换(类似于 tr)。主要选项是 if=(输入文件)of= (输出文件)conv=(转换)
转换开关可以是:lcase ucase ascii
示例
# dd if=/dev/sda1 of=/dev/sda2 |
请注意,与 cp 不同,dd 工具会复制设备的部分内容并保留底层文件系统。另一方面,cp 仅处理数据,并将数据从一个文件系统传输到另一个文件系统
Linux 有几个用于压缩和归档文件的实用程序。其中一些工具起源于磁带归档和备份解决方案,参数和名称反映了这一点。
tar
tar(磁带存档)命令用于归档目录并可选地压缩存档。最初,tar 命令用于归档到磁带,但现在也可以归档到磁盘,这是它最常见的用途。存档如下创建
# tar – cvjf backup.tar.bz /home/user1 |
这将创建一个 user1 主目录的 bzip 压缩存档。提供给 tar 的选项是
- c – 创建存档,
- v – 在创建存档期间显示详细输出,
- j – 使用 bzip 压缩压缩存档,或者可以使用 z,它将使用 gzip 压缩
- f – 要创建的文件的名称,在本例中为 backup.tar,bz
要解压缩 backup.tar.bz 存档,您将使用以下命令
# tar -xvjf backup.tar.bz |
这将解压缩存档到当前目录。命令行参数与上面的示例基本相同,除了 -x(提取)参数,它替换了 -c(创建)。要列出存档的内容而不提取它,您将使用 -t 参数
# tar -tf backup.tar.bz |
cpio
cpio 是一个较旧的存档实用程序,它本身不支持压缩。cpio 代表 copy in/out。虽然 cpio 在很大程度上已被 tar 取代,但它仍在 Linux 中使用。特别是 initrd 映像文件是一个 cpio 存档。cpio 期待标准输入中列出的要存档的文件,因此通常与 find 或 ls 命令结合使用。
$ ls | cpio -ov > backup.cpio $ find / | cpio -ov > backup.cpio |
以上两个命令使用 cpio 创建了一个存档。v 参数告诉 cpio 在创建存档期间提供详细输出。要提取存档,您将使用类似以下的命令
$ cpio -iv < backup.cpio |
这将提取 cpio 存档到当前目录。关于 cpio,需要注意的一点是它的参数。对于存档,我们通常谈论存档和提取,这表明 -c 用于创建,而 -x 或 -e 用于提取。记住 -o 用于创建,而 -i 用于提取的最简单方法是记住 cpio 代表 copy in/ copy out。您将通过从文件系统中复制出来来创建存档,并通过从存档中复制进来来提取存档。
gzip/gunzip
gzip 用于使用 Lempel-Ziv 编码压缩文件。与大多数 Linux 命令一样,它可以接受大量参数,但最常用的使用方法如下
$ gzip largefile.txt |
默认情况下,gzip 会创建一个与输入文件同名但带有 .gz 扩展名的输出文件。上面的命令将创建一个名为 largefile.txt.gz 的压缩文件。要解压缩文件,您将运行以下命令
$ gunzip largefile.txt.gz 或 $ gzip -d largefile.txt.gz |
bzip/bzip2
bzip2 使用 Burrows-Wheeler 块排序文本压缩算法和哈夫曼编码来压缩文件,这被认为比 Lempel-Ziv 文件压缩算法更有效。它最常用的压缩文件格式会以 1 到 9 之间的数字作为参数。这个数字用于告诉 bzip2 使用效率最低但速度最快的压缩块大小(1)或使用效率最高但速度最慢的压缩块大小(9)。如果没有指定数字,则默认使用 9。
$ bzip2 -9 largefile.txt |
这将创建一个与原始文件名相同但扩展名为 .bz 的最小文件。在本例中,文件将是 largefile.txt.bz。要解压缩文件,可以使用
$ bzip2 -d largefile.txt.bz2 **或** $ bunzip2 largefile.txt.bz2 |
使用过的文件、术语和工具:* cp
- find
- mkdir
- mv
- ls
- rm
- rmdir
- touch
- tar
- cpio
- dd
- file
- gzip
- gunzip
- bzip2
- 文件通配符