设为首页 收藏本站
查看: 924|回复: 0

[经验分享] RedHat Enterprise Linux Computing Essentials 总揽之查看文件系统

[复制链接]

尚未签到

发表于 2018-5-13 06:37:15 | 显示全部楼层 |阅读模式
  作者:未知
  出处: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
  



  • prince 先直接浏览了命令 cal 的输出。
  • prince 再次运行 cal 命令,将输出重定向到文件 calendar.txt 中。
  • prince 列出自己当前工作目录(此处是主目录)的内容,确认这个新建文件已经被创建。
  • prince 检查这个新建文件的内容,确定它的确含有 cal 命令的输出。
  练习
  
ls 命令
  
[Warning]   上机练习
  练习目的:将命令输出重定向到新建文件中。
  Estimated Time: 5 mins.
  具体操作
  
使用 ls 命令列出目录 /etc 的内容,将命令的输出重定向到你的主目录下名叫 lsetc.txt 的文件中。
  结果
  
A>  
Question 1


  • 你主目录中有文件 lsetc.txt,含有命令 ls /etc 的输出。
  参考答案
  
以下命令是这个练习的参考答案。

Source code

  

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

  问题
  
多项选择题

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


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


  • A./home/elvis/Mail/received
  • B.Mail/received
  • C.received
  • D.both A and B.
  Question 3
  
以下哪个命令会列出目录 /usr/lib 中的文件?


  • A.cat /usr/lib
  • B.lsdir /usr/lib
  • C./usr/lib list
  • D.ls /usr/lib
  Question 4
  
以下哪个命令会成功地把命令 cal 的输出重定向到文件 lsout.txt 中?


  • A.lsout.txt > cal
  • B.cal ==> lsout.txt
  • C.cal > lsout.txt
  • D.cal } lsout.txt
  Question 5
  
用户 elvis 的主目录是 /home/elvis,以下哪个命令可以成功地在默认的红帽企业版 Linux 系统上运行?


  • A.ls /etc > /etc/lsetc.txt
  • B./etc/lsetc.txt < ls /etc
  • C.ls /etc > /home/elvis/lsetc.txt
  • D./home/elvis/lsetc.txt < ls /etc

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459282-1-1.html 上篇帖子: RedHat Enterprise Linux Computing Essentials 总揽之运行命令 下篇帖子: RedHat Enterprise Linux Computing Essentials 总揽之内核和进程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表