2. 文件的操作命令

这一节的主要目标是学习文件操作的命令。我们将学习创建、删除文件,修改文件的名称以及复制文件等操作。

用到的命令有:lstouchrmcpmv

本节讲解的命令如下:

通常一个命令对应一个独立功能的程序。命令一定有命令名称,后面跟选项或参数,这些选项和参数通常用一个空格或多个空格分隔。

我们先学习命令的格式。

命令的格式如下:

命令名 [选项] [参数]

注:选项和参数用 中括号 [] 括起来表示其中的内容可选。 通常选项在前,参数在后。具体要根据命令内部的实现来决定。

如:

weimingze@mzstudio:~$ ls -a /
.                  cdrom  lib.usr-is-merged  opt   sbin.usr-is-merged  usr
..                 dev    lib64              proc  srv                 var
bin                etc    lost+found         root  swap.img
bin.usr-is-merged  home   media              run   sys
boot               lib    mnt                sbin  tmp

上述终端运行中,ls 是命令,-a 是选项, / 是参数,组合起来就形成了上述结果。

2.1 ls 命令

ls 命令用于列出当前文件夹或其他的某个文件夹下有哪些文件和文件夹。

命令格式:

ls [选项1] [选项2 ...] [参数1] [参数2 ...]

示例:

列出当前文件夹下有哪些文件或文件夹。

weimingze@mzstudio:~$ ls
hello.py  下载  公共  图片  文档  桌面  模板  视频  音乐

列出 根 / 下有哪些文件或文件夹。

weimingze@mzstudio:~$ ls /
bin                home               mnt   sbin.usr-is-merged  var
bin.usr-is-merged  lib                opt   srv
boot               lib.usr-is-merged  proc  swap.img
cdrom              lib64              root  sys
dev                lost+found         run   tmp
etc                media              sbin  usr

列出 /usr/ 下有哪些文件或文件夹。

weimingze@mzstudio:~$ ls /usr/
bin  games  include  lib  lib64  libexec  local  sbin  share  src

列出当前文件夹下的文件和文件夹的详细信息。

weimingze@mzstudio:~$ ls -l
total 40
-rw-rw-r-- 1 weimingze weimingze   23 May 16 13:02 hello.py
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 下载
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 公共
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 图片
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 文档
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 桌面
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 模板
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 视频
drwxr-xr-x 2 weimingze weimingze 4096 May 16 12:09 音乐

-l 选项是列出文件或文件夹的详细信息。下面我们来说一下详细信息.

文件的详细信息说明

每一行是一个文件信息。该信息用空格分隔成八列。

  1. 第一列:文件类型和权限信息
    • 每一行的第一个字母代表文件的类型:d 代表文件夹,- 代表普通文件,l 代表软链接文件,c 代表字符设备文件(比如键盘),b 代表块设备文件(比如 U 盘),s 代表套接字文件,p 代表管道文件等。
    • 每一行的第2~10个字符为文件或文件夹的读、写和执行权限:-代表无权限,r代表有读权限,w代表有写权限,x代表有执行权限。权限分为三组,分别是拥有者(属主)权限,拥有者所在的组(属组)权限和其他权限。如 rwxr-xr-- 前三个 rwx代表拥有者可以读写和执行,中间三个r-x 代表 同组内的用户可以读和执行,但是不可以写。第8~10个r-- 代表 不是拥有者,也不是同组内的其他用户可以读,但是不可以写和执行。

      假设现实当中我在力学实验室的组中,我的一本书,他的属主是我,他的属组是力学实验室,书的权限是rw-r-----,那么我可以读和修改,力学实验室中的老师都可以读,其他人则不能执行任何操作。

  2. 第二列:代表该文件的硬链接数。你可以理解成其他文件或文件夹关联到此文件的个数,文件一般都是1。
  3. 第三列:代表该文件或文件夹的拥有者用户,就是属主。上述文件的拥有者都是 weimingze。
  4. 第四列:代表该文件或文件夹的所在的组,就是属组,weimingze这个组内的所有成员都遵循 第 5-7 个字符所指示的权限。
  5. 第五列:该文件或文件夹所占用的空间。文件为内容的长度,文件夹一般显示 4096 是索引节点 (inode) 所占用的空间。
  6. 第六、七、八列:分别是此文件或文件夹的最后修改日期(月 日 时间)信息。
  7. 第九列:该文件或文件夹的名称。

ls命令的常用选项

选项
说明
-l
显示详细信息
-a
显示以 . 开头的隐藏文件
-t
按修改时间排序(最新修改的排前面)
-S
按文件大小排序(从大到小)
-r
反向排序(配合 -t、-S 等使用)

注:Linux 和 UNIX 系统中,默认以点开头的文件或文件夹为隐藏文件。它真实存在,但通常不显示,但在 Windows 系统中会正常显示。

这就是很多安卓手机的存储卡拿到 Windows 电脑上读取文件的时候,会发现很多以点开头的文件就是这个道理。

在 UNIX 和 Linux 操作系统的命令当中,有些选项是可以任意组合的,比如说下列用法是相同的,如:

列出当前文件夹下所有的文件和文件夹的详细信息。

weimingze@mzstudio:~$ ls -l -a
# 或
weimingze@mzstudio:~$ ls -a -l
# 或
weimingze@mzstudio:~$ ls -la
# 或
weimingze@mzstudio:~$ ls -al

上述命令的运行结果相同。

练习:

  1. 使用 ls 列出 /dev 文件夹下的文件,看下里面有几种文件类型的文件?
  2. 使用 ls 列出 /etc/apt 文件夹下的所有文件,查看一下里面有几个文件夹?