本篇介绍三个命令:pwd(打印当前工作目录),cd(切换目录),ls(列出目录和文件)。

如果你还没有使用过命令行界面(CLI)那么务必认真学习这篇内容,这些内容需要一定时间才能消化。

文件系统结构

与传统操作系统一样,Linux 系统的文件组织方式被称为分层目录结构。就是将目录(某些系统中称之为文件夹)组织成树形结构,目录中可以包含文件和其他目录。

文件系统的第一个目录为根目录(root)。其他文件和子目录都在根目录中,这些子目录中还可以有更多的文件和更多的子目录。

如今的操作系统都有图形化的文件管理器,可以方便的查看和管理文件系统中的内容。通常你看到的会像下图一样的结构:

file_manager

与传统操作系统在文件系统方面最大的不同在于 Linux 系统中没有驱动器编号的概念,就是那种像 Windows 系统中使用英文字母区分一个个不同的分区形式。Linux 总是只有一个独立的树。不同的存储设备可以包含不同的分支,但永远只有一个文件树。

pwd

由于命令行界面无法像图形化界面那样直观显示文件系统结构,因此必须要找到不同的方式来显示它们。现在把文件系统想象成一个迷宫,你就站在里面。在任何时候,你都位于一个独立的目录中。在那个目录中,你可以看到里面的文件以及父目录和子目录路径。

你当前站在的位置称为工作目录。使用 pwd 命令查看工作目录的名字:

[me@linuxbox me]$ pwd
/home/me

每当你登录 Linux 系统时,工作目录都会被设置到家目录(home)。绝大多数的操作系统中,家目录都是 /home/your_user_name,但根据系统管理员的想法,家目录可以设置在任何位置。

使用 ls 命令列出工作目录中的文件:

[me@linuxbox me]$ ls
Desktop     Xrootenv.0    linuxcmd
GNUstep     bin           nedit.rpm
GUILG00.GZ  hitni123.jpg  nsmail

在下一节会进一步介绍 ls 命令,它还能做更多有趣的事情。不过这里必须先介绍一些路径名目录相关的内容。

cd

使用 cd 命令可以切换你的工作目录(你在迷宫里的位置)。只要在 cd 命令后面添加要进入的路径名即可。路径名是到达指定目录的线路结构,它有 2 种不同的指定方式;绝对路径相对路径。首先了解一下绝对路径。

绝对路径以根目录为起始,一级级直到达到指定目录或文件的位置为止。例如,在你的操作系统中有一个目录,大多数程序都安装到了那里,这个目录的路径名为 /usr/bin。即根目录(通常用 / 斜线表示根目录)下的 usr 目录中包含的名为 bin 的目录。

让我们在终端中尝试一下:

[me@linuxbox me]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin
[me@linuxbox bin]$ ls
[                     lwp-request
2to3                  lwp-rget
2to3-2.6              lxterm
a2p                   lz
aalib-config          lzcat
aconnect              lzma
acpi_fakekey          lzmadec
acpi_listen           lzmainfo
add-apt-repository    m17n-db
addpart               magnifier

and many more...

现在我们已经将工作目录切换到 /usr/bin,并且列出了工作目录中的所有文件。是否注意到了命令提示符的变化?通常,终端命令提示符会显示工作目录的名字。

与绝对路径这种以根目录开始到目标目录为止的表示方式不同,相对路径以当前的工作目录作为起点。对此,它使用一对特殊的符号来表示在文件系统树中的相对位置,即 ...

. 一个点代表工作目录本身,.. 两个点代表工作目录的父目录。让我们实际演练一下,在终端中再次将工作目录切换到 /usr/bin

[me@linuxbox me]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

接下来我们要切换到工作目录的父目录,即 /usr。对此我们有两种切换方式,第一种,使用绝对路径:

[me@linuxbox bin]$ cd /usr
[me@linuxbox usr]$ pwd
/usr

第二种,使用相对路径:

[me@linuxbox bin]$ cd ..
[me@linuxbox usr]$ pwd
/usr

两种方法都能得到相同的结果。你会采用哪一种?当然要选输入更少的那一种!

同样的,我们有两种方法可以将工作目录从 /usr 切换到 /usr/bin。首先使用绝对路径:

[me@linuxbox usr]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

或者,使用相对路径:

[me@linuxbox usr]$ cd ./bin
[me@linuxbox bin]$ pwd
/usr/bin

现在,这里必须指出一些很重要的提示。在大多数情况下,你可以忽略 ./,直接输入相对路径名:

[me@linuxbox usr]$ cd bin

效果与使用 ./ 时完全相同。通常来说,如果不指定路径名,那么工作目录就是默认路径。

几个快捷键

如果 cd 命令后没有添加任何路径名,那么 cd 会将工作目录切换到你的家目录

还有一个相关的快捷键,输入 cd ~user_name 将会切换工作目录到指定用户的家目录

输入 cd - 会切换工作目录到上一次执行 cd 命令进入的目录。

有关文件名的重要说明

. 一个半角点号开头命名的文件为隐藏文件,使用 ls 命令无法列出隐藏文件,但 ls -a 命令可以。创建用户账户时,几个用以配置账户的隐藏文件会被一并创建在用户的家目录中。稍后我们将进一步介绍这些文件,了解如何用他们自定义你的环境。另外,一些应用程序也会将隐藏的配置文件放置到你的家目录中。

Linux 系统的文件名是大小写敏感的。File1file1 是完全不同的两个文件。

与传统操作系统不同,Linux 中没有扩展名的概念,你可以随便给文件命名。不过,虽然 Linux 本身并不在乎文件的扩展名,但是许多应用程序会在乎。

虽然 Linux 支持长文件名,且文件名中可以包含空格和符号(点,横线和下划线)。最重要的是,不要再文件名中使用空格,建议使用下划线代替空格。以后你会因此而感谢自己的!

Reference