返回

ls -l *.py 是什么? shell 如何工作?

闲谈

文章

当你按下 ls -l *.py 并回车,shell 都会为你做了什么?

当你输入一条命令并按下回车键时,shell 会执行一系列操作来理解和执行该命令。在本文中,我们将以 ls -l *.py 命令为例,来详细说明 shell 是如何工作的。

1. 解析命令

首先,shell 会将命令行分成一个个参数,比如 ls、-l 和 *.py。

ls -l *.py

在命令中,ls 是一个列出目录内容的命令,-l 是一个选项,用于以长格式列出文件详细信息,*.py 是一个通配符,用于匹配所有以 .py 结尾的文件。因此,这个命令将列出当前目录中所有以 .py 结尾的文件,并以长格式显示文件详细信息。

2. 查找可执行文件

接下来,shell 会在你的 PATH 环境变量指定的目录中搜索 ls 命令的可执行文件。

PATH 环境变量是一个系统变量,它指定了 shell 在哪里查找可执行文件。默认情况下,PATH 环境变量包含以下目录:

/usr/local/bin
/usr/bin
/bin

shell 会依次在这些目录中搜索 ls 命令的可执行文件。如果找到可执行文件,shell 会将其加载到内存中。

3. 加载可执行文件

找到可执行文件后,shell 会将其加载到内存中。这包括将可执行文件的代码和数据复制到内存中,并为可执行文件分配内存空间。

4. 执行命令

加载可执行文件后,shell 会将命令行参数作为参数传递给可执行文件,并启动可执行文件。

在 ls -l *.py 命令中,shell 会将 -l 和 *.py 作为参数传递给 ls 命令。然后,ls 命令会根据参数 -l 以长格式列出文件详细信息,并将结果显示在终端上。

5. 列出文件

ls 命令会根据参数 -l 以长格式列出文件详细信息,并将结果显示在终端上。

长格式列表包括以下信息:

  • 文件类型:文件类型由一个字符表示,比如普通文件(-)、目录(d)、链接(l)、字符设备文件(c)、块设备文件(b)、套接字文件(s)等。
  • 文件权限:文件权限由一个字符串表示,比如 rw-r--r--,其中 r 代表可读,w 代表可写,- 代表不可读或不可写。
  • 文件大小:文件大小以字节为单位表示。
  • 修改时间:文件修改时间以日期和时间表示。
  • 文件名:文件名是文件在文件系统中的名称。

通过以上步骤,shell 就完成了 ls -l *.py 命令的执行。