发布时间:2014-09-05 17:11:40作者:知识屋
三、查看文件系统
主要概念
讨论
文件和目录的命名
在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
SuMoTu 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
SuMoTu 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
练习
ls 命令
[Warning] 上机练习
Source code
练习目的:将命令输出重定向到新建文件中。
Estimated Time: 5 mins.
具体操作
使用 ls 命令列出目录/etc 的内容,将命令的输出重定向到你的主目录下名叫lsetc.txt 的文件中。
结果
A title
Question 1
参考答案
以下命令是这个练习的参考答案。
[student@station student]$ ls /etc > lsetc.txt
问题
多项选择题
A title
Question 1
假设shell 的当前工作目录是/home/elvis,以下哪个是文件/home/elvis/Mail/sent 的引用?
Question 2
用户elvis 的shell 当前工作目录是/home/elvis,以下哪个是文件received 的引用?这个文件位于主目录下的Mail 目录中。
Question 3
以下哪个命令会列出目录/usr/lib 中的文件?
Question 4
以下哪个命令会成功地把命令cal 的输出重定向到文件lsout.txt 中?
Question 5
用户elvis 的主目录是/home/elvis,以下哪个命令可以成功地在默认的红帽企业版Linux 系统上运行?
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能