RedHat Enterprise Linux Computing Essentials 总揽之查看文件系统

作者:未知

出处:https://osu.redhat.com/content/courses-zh-cn/rha030-4/section_0001/tag_lessons/section_0003

三、查看文件系统

主要概念

  • Linux 目录树的基础是一个叫作 / 的目录,被称为“根目录(root directory)”。
  • 绝对(absolute)文件引用,如 /home/elvis/lsout.txt,指的是相对于根目录的文件。
  • 相对(relative)文件引用,如 lsout.txt,指的是相对于进程当前工作目录的文件。
  • ls 命令用来列出目录内容。
  • cat 命令用来检查文件内容。
  • 用 shell 命令行的 > 字符可以把命令的输出从终端重定向到文件。
  • 用户的主目录是用户可以创建新文件的几个地点之一。

讨论


文件和目录的命名
在 Linux 中,信息和程序作为文件储存在磁盘上。文件被归类到目录中,目录中包含文件和其它目录。(其它操作系统经常将目录称为“文件夹”。)这种包括多层次目录的目录结构经常被称为“目录树(directory tree)”。

目录树的根部是名为 / 的目录,被称作“根目录(root directory)”。根目录中的文件被称作 /filename。在红帽企业版 Linux 中,根目录下主要是其它目录,如 /etc。这些次目录中的文件被称作 /etc/filename,目录树的每一层都是如此命名的。例如,文件 network 位于目录 sysconfig 中,这个目录位于 etc 中,而 etc 目录又位于 / 中,那么文件的引用为 /etc/sysconfig/network。

显然,每次都从根目录开始引用文件会很麻烦,幸运的是,Linux 提供了一种更简便的方式。每个进程,包括用户的 shell,都用“当前工作目录(current working directory)”作为环境。位于进程当前工作目录的文件可以被直接引用为 filename,前面不用加斜线。位于当前工作目录的次目录中的文件可引用为 dirname/filename,前面也不用加斜线。举例来说,如果进程的当前工作目录是 /etc,前面提到的文件 network,可以被引用为 sysconfig/network。如果工作目录是 /etc/sysconfig,那么这个文件就可以简单地引用为 network。

总而言之,引用文件的方式有两种。相对于根目录的文件引用总是以 / 开头,这种引用方式叫做绝对引用。相对于当前工作目录的文件引用不以 / 开头,这种引用方式叫做相对引用。

用 ls 列出目录内容
用户从 shell 使用命令 ls 列出目录的内容。(ls 是动词 “list(列出)”的缩写。)在下面的例子中,用户 elvis 想列出目录 /etc/sysconfig/rhn 的内容。

Source code    
[elvis@station elvis]$ ls /etc/sysconfig/rhn
rhn-applet  systemid  up2date-keyring.gpg  up2date-uuid
rhnsd       up2date   up2date.rpmnew

在没有参数的情况下((即,不指定目录))调用 ls 命令时,该命令列出 shell 当前工作目录的内容。如果使用彩色终端,ls 还会以不同颜色显示文件名,帮助区分常规文件(白色)和目录(蓝色)。

ls 是一个非常灵活的命令,可以提供大量不同的信息,这将在以后的课程中详细讨论。

cat 查看文件内容
ls 命令显示一个给定目录中所含的文件,但不会显示这些文件的内容。有几个命令可用来浏览文件内容,最简单的是 cat 命令。给这个命令一个文件列表,它会将这些文件并置(concatenates)到终端输出。如果只给出一个文件名,文件的内容会作为输出显示出来。

在下面的例子中,用户 elvis 想浏览配置文件 /etc/hosts 的内容。

Source code    
[elvis@station elvis]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
192.168.0.254   server1.example.com  server1
192.168.0.1     station1.example.com station1

现在不必担心文件的内容是什么,只要意识到命令 cat 可以显示文件的全部五行内容就可以了。

如果你指示 cat 显示一个很长的文件或二进制(非文本)文件,cat 也会照常执行。还有更先进的浏览大型文件的命令,可以逐页浏览,这将在以后介绍。

将命令输出重定向到文件中
当执行 ls cat 命令时,命令的输出在终端上显示。在 Linux 系统内,大部分生成文本输出的命令都会使用一个常用的 Unix 概念,叫做“标准输出(standard out)”流。在默认状态下,这个数据流连接到终端。bash shell 允许用户将标准输出流“重定向“(redirect)到其它地点。我们现在只学习最简单的方法,使用 > 将标准输出重定向到文件中。

在下面的例子中,用户 elvis 要再次列出目录 /etc/sysconfig/rhn 的内容,但是这次他把输出重定向到一个新建的文件中。

Source code    
[elvis@station elvis]$ ls /etc/sysconfig/rhn > lsout.txt
[elvis@station elvis]$ ls
lsout.txt
[elvis@station elvis]$ cat lsout.txt
rhn-applet
rhnsd
systemid
up2date
up2date-keyring.gpg
up2date.rpmnew
up2date-uuid

命令 ls /etc/sysconfig/rhn 的输出没有在终端上显示,而是保存到一个名为 lsout.txt 的新建文件中。elvis 接着在当前工作目录上使用 ls,查看这个新建的文件,再使用命令 cat 浏览文件内容。用 Unix 的说法就是,elvis “将命令 ls 的输出重定向到文件 lsout.txt 中。”

权限和用户的主目录。
注意,如果 elvis 试图把输出重定向到 shell 当前工作目录以外的文件中,会出现什么情况。

Source code    
[elvis@station elvis]$ ls /etc/sysconfig/rhn > /etc/lsout.txt
-bash: /etc/lsout.txt: No such file or directory

用户 elvis 会遇到另一个常见的 Linux 概念:文件所有权和权限。elvis 试图创建新文件 /etc/lsout.txt,但是他没有在目录 /etc 中创建文件的权限。

在默认情况下,红帽企业版 Linux 不允许用户随便在任意地点新建文件。事实上,能够新建文件的地点只有几个。每个用户都有主目录,他们可以在那里创建新文件(和次目录)。幸运的是,当用户 登录到 Linux 会话时,shell 将用户的主目录作为它的当前工作目录。默认情况下,在红帽企业版 Linux 里,用户的主目录被命名为 /home/username,username 用用户的用户名代替。

以后的教程中会详细讨论文件系统和权限。现在只需知道,用户一般只能在自己的主目录中创建文件。

Examples
将命令输出重定向到文件中。

用户 prince 想用 cal 命令将本月的日历保存到文件 calendar.txt 中。

Source code    
[prince@station prince]$ cal                1
      May 2003
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 
[prince@station prince]$ cal > calendar.txt 2
[prince@station prince]$ ls                 3
calendar.txt
[prince@station prince]$ cat calendar.txt   4
      May 2003
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  1. prince 先直接浏览了命令 cal 的输出。
  2. prince 再次运行 cal 命令,将输出重定向到文件 calendar.txt 中。
  3. prince 列出自己当前工作目录(此处是主目录)的内容,确认这个新建文件已经被创建。
  4. prince 检查这个新建文件的内容,确定它的确含有 cal 命令的输出。

练习
ls 命令
[Warning]   上机练习

练习目的:将命令输出重定向到新建文件中。

Estimated Time: 5 mins.

具体操作
使用 ls 命令列出目录 /etc 的内容,将命令的输出重定向到你的主目录下名叫 lsetc.txt 的文件中。

结果
A title
Question 1

  1. 你主目录中有文件 lsetc.txt,含有命令 ls /etc 的输出。

参考答案
以下命令是这个练习的参考答案。

Source code    
[student@station student]$ ls /etc > lsetc.txt

问题
多项选择题
A title

Question 1
假设 shell 的当前工作目录是 /home/elvis,以下哪个是文件 /home/elvis/Mail/sent 的引用?

  1. A.Mail/sent
  2. B./Mail/sent
  3. C.sent
  4. D./sent

Question 2
用户 elvis 的 shell 当前工作目录是 /home/elvis,以下哪个是文件 received 的引用?这个文件位于主目录下的 Mail 目录中。

  1. A./home/elvis/Mail/received
  2. B.Mail/received
  3. C.received
  4. D.both A and B.

Question 3
以下哪个命令会列出目录 /usr/lib 中的文件?

  1. A.cat /usr/lib
  2. B.lsdir /usr/lib
  3. C./usr/lib list
  4. D.ls /usr/lib

Question 4
以下哪个命令会成功地把命令 cal 的输出重定向到文件 lsout.txt 中?

  1. A.lsout.txt > cal
  2. B.cal ==> lsout.txt
  3. C.cal > lsout.txt
  4. D.cal } lsout.txt

Question 5
用户 elvis 的主目录是 /home/elvis,以下哪个命令可以成功地在默认的红帽企业版 Linux 系统上运行?

  1. A.ls /etc > /etc/lsetc.txt
  2. B./etc/lsetc.txt < ls /etc
  3. C.ls /etc > /home/elvis/lsetc.txt
  4. D./home/elvis/lsetc.txt < ls /etc

你可能感兴趣的:(linux,redhat,职场,enterprise,休闲)