7.1. 在文件系统中移动

cd

更改目录。使用 “ cd ..” 返回上一级目录。

一个点 '.' 代表当前目录,而两个点 '..' 代表父目录。

“ cd -” 将返回到上一个目录(有点像“撤销”)。

您也可以使用 cd 绝对路径cd 相对路径(见下文)

绝对路径

“绝对路径”很容易从开头的正斜杠 / 识别出来。/ 表示您从顶层目录开始并向下继续。

例如,要到达 /boot/grub ,您需要输入

cd /boot/grub

这是一个绝对路径,因为您从层次结构的顶部开始,然后从那里向下走(当您键入命令时,您在文件系统中的位置无关紧要)。

相对路径

“相对路径”没有前导斜杠。当您从顶层目录结构以下的目录开始时,请使用相对路径。这取决于您在文件系统中的位置。

例如 ,如果您在 root 的主目录中,并且想要到达 /root/music,则输入

cd music

请注意,在上面的 cd 命令中没有使用 /。使用 / 将使其成为绝对路径,从层次结构的顶部向下工作。

ls

列出文件和目录。键入 “ls” 将列出文件和目录,但不会列出以句点 “.” 开头的隐藏文件或目录。

示例选项

  • ls -l --- 长格式,这将列出权限、文件大小、修改日期、所有权。

  • ls -a --- 这表示 “显示所有”,这将显示隐藏文件,默认情况下,任何以 ‘.’ 开头的文件或目录都不会显示。

  • ls -d --- 列出目录条目而不是内容(见下例)

  • ls -F --- 将符号附加到特定文件,例如 *(星号)表示可执行文件。

  • ls -S --- 按大小降序对命令的输出进行排序。

  • ls -R --- (递归)列出当前目录以及下方目录中的所有内容。

命令语法,可以是

ls -options

这只是简单地列出当前目录中的所有内容,不需要选项(例如 -l-a 等选项)。

ls -options string

这将使用特定字符串列出文件。该字符串可以包含标准通配符以列出多个文件,要了解有关标准通配符的更多信息,请阅读 第 20.4.1 节

您可以使用 ls -d 显示与精确字符串匹配的目录,或使用标准通配符。键入 “ ls -d */” 以列出当前目录的所有子目录。根据您的别名设置(参见 第 4 章),您可能只需键入 lsd 即可等同于 ls -d */

ls -d 的示例

ls -d */

列出当前目录的所有子目录。

ls -d string*

列出以 “string” 开头的目录。

ls -d /usr/*/*/doc

列出 /usr/ 目录下方两级并且有一个名为 “doc” 的目录的所有目录,这个技巧有时会非常方便。

Tip您也可以使用
 

根据您的别名(参见 第 4 章)设置方式,您也可以使用 lla(列出所有)和 ll(长列表)来执行上述命令

pwd

打印工作目录。打印用户当前所在目录的绝对(完整)路径。

命令语法

pwd

这将告诉您您所在目录的完整路径,例如,如果您当前在该目录中,它可能会输出 “/usr/local/bin”。

tree

输出一个 ASCII 文本树/图形,从给定目录(默认为当前目录)开始。此命令递归地列出所有文件和所有目录。

换句话说,它将列出当前目录下方目录中的文件,以及当前目录中的所有文件。

tree 有大量选项,请参阅手册页了解详细信息。

命令语法

tree

tree -option(s) /optional/directory/to/list

7.1.1. 查找文件

find

find 是一个在文件系统中查找文件的工具。find 有大量选项,可用于自定义搜索(请参阅手册/信息页)。

请注意,find 可以使用标准通配符,第 20.4.1 节,并且可以与正则表达式一起使用,第 20.4.2 节

基本示例

find / -name file

这将查找名为 “file” 的文件,并从根目录开始(它将搜索所有目录,包括已挂载的文件系统)。

`-name' 选项区分大小写,您可以使用 `-iname' 选项来查找不区分大小写的内容。

使用 '-regex''-iregex' 根据正则表达式查找内容(分别区分大小写或不区分大小写)。

'-exec' 选项是更高级的 find 操作之一。它对找到的文件执行命令(例如移动或删除它或任何其他操作...)。

要使用 -exec 选项:使用 find 查找内容,然后在末尾添加 -exec 选项,然后

command_to_be_executed (1)  then '{}' (curly brackets) (2) then the arguments (for example a new directory)  and finally a ';' (3). 

请参阅下文,了解使用此命令的示例。

(1)
这是您想要对 find 找到的文件执行的工具。例如,如果您想删除它找到的所有内容,那么您将使用 -exec rm -f
(2)
花括号在 find 中用于表示已找到的当前文件。即。如果它找到了文件 shopping.doc,那么 {} 将被 shopping.doc 替换。然后它将继续为它找到的每个文件替换 {}。括号通常用反斜杠 (\\) 或单引号 (') 保护,以阻止 bash 扩展它们(尝试将它们解释为特殊命令,例如通配符)。
(3)
这是 find 用来表示命令结束的符号。它通常用反斜杠 (\\) 或引号保护,以阻止 bash 尝试扩展它。
find / -name '*.doc' -exec cp '{}' /tmp/ ';'

上面的命令将查找扩展名为 ‘.doc’ 的任何文件,并将它们复制到您的 /tmp 目录,显然这个命令非常无用,这只是 find 可以做什么的一个示例。请注意,引号在那里是为了阻止 bash 尝试将其他字符解释为其他内容。

使用 find 排除特定文件夹可能非常令人困惑,但如果您想搜索主磁盘(而不搜索每个挂载的文件系统),则可能是必要的。使用 -path 选项排除特定文件夹(请注意,末尾不能有 '/'(正斜杠)),并使用 -prune 选项排除子目录。下面是一个例子

find / -path '/mnt/win_c' -prune -o -name "string" -print

此示例将搜索您的整个目录树(在其下挂载的所有内容),排除 /mnt/win_c 和 /mnt/win_c 下的所有子目录。使用 -path 选项时,可以使用通配符。

请注意,如果您愿意,可以添加更多 -path '/directory' 语句。

find 有许多不同的选项,请参阅手册(和信息)页了解更多详细信息。

slocate

slocate 输出系统上与模式匹配的所有文件的列表,并给出它们的完整路径名(它不必是完全匹配,任何包含该词的内容都会显示)。

Note替换 locate
 

安全定位是 locate 的替代品,两者都具有相同的语法。在大多数发行版上,locate 是 slocate 的别名。

命令语法

slocate string

Note除非
 

您需要运行 updatedb(作为 root 用户)或 slocate -u (作为 root 用户)才能使 slocate 工作。

whereis

whereis 定位特定程序的二进制文件、源代码和手册页,它仅使用精确匹配,如果您只知道名称的一部分,请使用 slocate

命令语法

whereis program_name
which

与 whereis 几乎相同,只是它只查找可执行文件(物理程序)。它只在用户的 shell 的 PATH(环境变量)中查找。

使用 -a 选项列出路径中特定 program_name 的所有出现次数(因此,如果存在多个,您可以查看它)。

命令语法

which program_name