Unix 简明教程
Linux - Directories
Linux 目录是一个文件,其唯一的工作是存储文件名和相关信息。所有文件(无论是普通文件、特殊文件还是目录文件)都包含在目录中。
本教程将详细讨论 Linux/Unix 中的目录管理。
Linux 使用了一种层级结构来组织文件和目录。这种结构通常称为目录树。树只有一个根节点,即斜杠字符 ( / ),所有其他目录都包含在它的下面。
Linux Directory Structure
文件系统的最高级别是 / 或根目录。所有其他文件和目录都存在于根目录之下。以下是直接位于根目录 (/) 之下的常见目录的列表:
Directory |
Description |
/bin |
important binary applications |
/boot |
引导配置文件、内核和其他在引导时需要的文件。 |
/dev |
System device files. |
/etc |
配置文件、启动脚本等。 |
/home |
不同用户的家目录列表 |
/lib |
system libraries, shared libraries |
/lost+found |
根目录 (/) 之下存在的丢失+已找到系统文件 |
/media |
自动挂载(加载)到硬盘驱动器和可移动媒体(如 CD、数码相机等)上的分区 |
/mnt |
手动挂载到硬盘驱动器上的文件系统 |
/opt |
要安装的第 3 方应用程序 |
/proc |
保留有关系统状态的信息,包括当前运行中的进程。 |
/root |
root user’s home directory. |
/sbin |
important system binaries |
/srv |
包含提供给其他系统使用的文件 |
/sys |
system files |
/tmp |
temporary files |
/usr |
大多数用户都可以访问的应用程序和文件 |
/var |
可变文件,如日志和数据库 |
Home Directory
第一次登录时所在的目录称为主目录。你将在主目录及其子目录(用于整理文件)中进行大部分工作。
你可以随时使用以下命令进入你的主目录:
$cd ~
$
此处 ~ 表示主目录。假设你必须进入其他用户的目录,请使用以下命令:
$cd ~username
$
要进入你的上一个目录,可以使用以下命令:
$cd -
$
Absolute/Relative Pathnames
目录按层次结构排列,根 (/) 在最上面。目录树中任何文件的位置都由其路径名来描述。
路径名的元素由 / 分隔。如果路径名是相对于根来描述的,则该路径名是绝对路径名,因此绝对路径名总以 / 开头。
以下是一些绝对文件名示例。
/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3
路径名也可以相对于您的当前工作目录。相对路径名永远不会从 / 开始。相对于用户 amrood 的主目录,一些路径名可能看起来像这样 -
../chem/notes
personal/res
../ 表示从当前工作目录后退一级,然后你会发现 chem/notes 。如要随时确定自己在文件系统层次结构中的位置,请输入命令 pwd 以打印当前工作目录
$pwd
/user0/home/amrood
$
Listing Directories
要列出目录中的文件,可以使用以下语法 -
$ls dirname
以下是列出 (ls) /usr/local 目录中包含的所有文件的示例 -
$ls /usr/local
X11 bin gimp jikes sbin
ace doc include lib share
atalk etc info man ami
Creating Directories
我们现在将了解如何创建目录。目录是通过以下命令创建的 -
$mkdir dirname
此处,directory 是您要创建的目录的绝对或相对路径名。例如,命令 -
$mkdir mydir
$
在当前目录中创建一个目录 mydir 。这是另一个示例 -
$mkdir /tmp/test-dir
$
此命令在目录 /tmp 中创建目录 test-dir 。如果 mkdir 命令成功创建了请求的目录,则不会产生任何输出。
如果您在命令行上给出了多个目录, mkdir 将创建每个目录。例如,-
$mkdir docs pub
$
在当前目录下创建目录 docs 和 pub。
Creating Parent Directories
我们现在将了解如何创建父目录。有时,当您要创建目录时,它的父目录或目录可能不存在。在这种情况下, mkdir 会发出如下错误消息 -
$mkdir /tmp/amrood/test
mkdir: Failed to make directory "/tmp/amrood/test";
No such file or directory
$
在这种情况下,可以将 -p 选项指定给 mkdir 命令。它会为您创建所有必要的目录。例如 -
$mkdir -p /tmp/amrood/test
$
以上命令创建所有必需的父目录。
Removing Directories
可以使用 rmdir 命令以如下方式删除目录 -
$rmdir dirname
$
Note - 要删除目录,请确保它为空,这意味着该目录中不应有任何文件或子目录。
您可以一次删除多个目录,如下所示 -
$rmdir dirname1 dirname2 dirname3
$
如果以上目录为空,则该命令将删除目录 dirname1、dirname2 和 dirname3。如果成功, rmdir 命令不会产生输出。
Changing Directories
除了更改到主目录之外,还可以使用 cd 命令执行更多操作。您可以通过指定有效的绝对或相对路径来使用它更改到任何目录。语法如下 -
$cd dirname
$
此处, dirname 是你希望更改为的目录名称。例如,命令 −
$cd /usr/local/bin
$
更改为目录 /usr/local/bin 。在这个目录中,你可以使用以下路径进行 cd 至目录 /usr/home/amrood −
$cd ../../home/amrood
$
Renaming Directories
mv (move) 命令还可以用于重命名目录。语法如下 −
$mv olddir newdir
$
你可以将目录 mydir 重命名为 yourdir ,如下 −
$mv mydir yourdir
$
The directories . (dot) and .. (dot dot)
filename . (点)表示当前工作目录; filename .. (双点)表示高于当前工作目录一级,通常称为父目录。
如果我们输入命令来显示当前工作目录/文件的列表并使用 -a option 来列出所有文件和 -l option 提供长列表,我们将会收到以下结果。
$ls -la
drwxrwxr-x 4 teacher class 2048 Jul 16 17.56 .
drwxr-xr-x 60 root 1536 Jul 13 14:18 ..
---------- 1 teacher class 4210 May 1 08:27 .profile
-rwxr-xr-x 1 teacher class 1948 May 12 13:42 memo
$