Linux实战(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-09 03:12:41

点击下载

作者:(美)戴维·克林顿(David Clinton)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Linux实战

Linux实战试读:

前言

不论你在IT领域或者编程世界中从事什么工作或者已经从事了多久,如果你不学习新东西,就会遇到新问题。这不仅仅是因为平台和范例在持续发生变化,因为新的业务需求需要新的思想,或者因为那些不怀好意的家伙正在不断想出新的办法来攻击你的服务器。原因远远不只这些。停止学习的代价你根本承担不起。关键是要找到一种方法来学习高优先级的技能,而不是守着经验兜圈子。

我的意图和期望在于,通过阅读本书,哪怕是只读了一章,你也能有足够的信心去承担具有挑战性和创造性的工作,也就是那些你之前没有考虑过的事情。如果能一直坚持读到最后,你将学会使用那些支持虚拟化、灾难恢复、基础设施安全、数据备份、Web服务器、DevOps以及排除系统故障等关键和流行的技术。

但为什么使用Linux呢?因为Linux支持大部分的互联网、科学研究以及商业运营——实际上,支持世界上大部分的服务器。那些服务器需要被聪明且接受过良好训练的人员有效地进行配置、启动、保障和管理。聪明是你的天赋,而我能做的是帮助你得到良好的训练。

不确信自己是否拥有足够的Linux知识来开始这样一个雄心勃勃的计划吗?第1章将很快回答这个问题。之后,请系好你的安全带并准备好面对一段严肃的学习旅程吧。

致谢

撰写一本书时,必须仔细考虑方方面面的情况,否则就不可能度过漫长且时而令人受尽折磨的写作时光并完成写作。就本书来说,如同我写作《Learn Amazon Web Services in a Month of Lunches》时一样,完成这项工作需要Manning团队每个环节的工作人员的才华和奉献精神。

再一次说明,Frances Lefkowitz作为一名策划编辑,为每一章设立了清晰的定位和目标,坚持不懈地让我专注其中并走上正轨。Reka Horvath和John Guthrie耐心地测试了本书中的所有项目并在此过程中给出了有价值的操作建议。文字编辑Frances Buran似乎从未遇到过她能认可的副词,至少在我这里如此。但是,目前的书中,字里行间的准确性和优雅度清楚地说明了她的工作质量。[1]

作为项目主管,Deirdre Hiam有效地指导我们走完最后一英里,并成功地让各个部分同步运转。本书的每一位同行评审人员也都做出了重要贡献。他们可能没有意识到,但是他们所有的宝贵建议都被仔细地分析和权衡,而且,只要可能,就都会被采纳。因此,非常感谢Angelo Costo、Christopher Phillips、Dario Victor Duran、Flayol Frederic、Foster Haines、George L.Gaines、Gustavo Patino、Javier Collado、Jens Christian B.Madsen、Jonas Medina de los Reyes、Maciej Jurkowski、Mayer Patil、Mohsen Mostafa Jokar和Tim Kane。

相较Linux管理技能而言,本书的内容更为丰富。要想成为一名成功的管理员,面对自己负责的服务器和系统,应当具备更强的责任感。我非常幸运能在担任Linux系统管理员的职业生涯之初,就从一位伟大的导师那里受益良多。Peter Fedorow对良好运营的细节以及全局大势的关注让他成为一名特别高效的管理员。他把我带进Linux虚拟化的世界,甚至没等那些容器冷却下来,它们就把我吸引住了。虽然一切都说完了、做完了,但毋庸置疑,Peter对我的影响力依然还在。

最后,如果没有我的妻子愉快的参与和帮助,我的任何专业(或私人)项目都不会顺利完成。我们充分分担着这项艰苦的工作,但成功主要归功于她。

关于本书

你正在期望学习管理Linux计算机吗?这是一个很好的选择。虽然Linux常常驻留于消费者的桌面计算机上,但它同时也是服务器领域的绝对主宰,特别是虚拟服务器和云服务器。鉴于现在大多数严格的服务器管理都是远程实施的,通过某个这样或那样的GUI进行工作只会增加无谓的开销。如果你打算管理当前引人关注的服务器和网络体系架构,你将不得不围绕Linux的命令行展开学习。

一个好消息是,核心Linux命令集可以实现跨地域和跨公司的运行,你可以仅关注计算机与业务相交的那些地方。一个更好的消息是,相对而言,Linux技能具有持久性。因为它是一个特别成熟和稳定的操作系统,25年前使用的大多数工具至今仍然在使用,而且,当今使用的大量工具在25年后也将可能继续发挥作用。换句话说,学习Linux将是一生的投资。

但是你非常繁忙,工作堆积如山。好吧,我不能保证掌握Linux与学会系鞋带一样简单。但是我可以帮助你像激光一样进行聚焦,从而将那些不需要的东西都扔到公路上去,让它们窒息在你开车驶过后留下的尾气中(当然,得假设你驾驶的不是一辆特斯拉,因为特斯拉是纯电动汽车)。

我将如何实现这一点呢?本书不采用技术培训的讲授方式。也就是说,虽然其他的书籍、课程及在线资源都围绕常规主题来组织内容(好了,孩子们,拿出你们的尺和笔,今天我们将学习Linux文件系统),但我却将基于现实生活中的一组项目来进行讲授。

例如,我本可以基于Linux文件系统构建完整的一章(或两章)。但本书并未按照这种方式处理,相反,你将学习如何构建企业文件服务器、系统恢复盘以及用来复制关键数据归档文件的脚本等。在这个过程中,你将会顺带学习文件系统的知识,这是本书提供的免费红利。

请不要认为我会覆盖Linux管理的所有工具。那是不可能的,毫不夸张地说,这样的工具有成千上万个。但也不用担心。本书将涵盖Linux管理员职业生涯早期所需掌握的核心技能,并且只有当实际的关键项目需要某些技能时,才会做有针对性的介绍。读完本书后,你能学到的将比基于传统资源所能学到的更多。你将学会如何掌控十几个主要的管理项目,而且能够轻松地处理更多的项目。

现在你有所了解了吗?我想是的。

读者对象

本书的目的是让你获得一系列可靠的Linux管理技能。也许你是一位开发者,更希望直接在驻留应用程序的服务器环境工作。或者,也许你已经准备好在服务器管理或DevOps领域开展工作。不论怎样,你就是我们中的一员。

你应该拥有什么基础知识呢?你至少应该能轻松地使用文件、网络及现代操作系统资源来进行工作。系统管理、网络管理与编程语言方面的经验肯定没有坏处,但不是必需的。最为重要的是,你应该不畏惧探索新的环境,并有试用新工具的热情。另一件事情是,期望你知道如何进行简单、直接的Linux操作系统的安装。

内容组织

这里简要给出本书的组织方式。除了第1章之外,本书的每一章都包括一个或两个实际项目。鉴于第1章的内容主要用来填补你的Linux知识体系中可能存在的基础知识空白,因此其组织形式与其他章节有所不同。不需要这些基础知识吗?我敢肯定你在第2章就能找到很多有趣的新玩具。

伴随本书中的这些项目,我还将介绍你需要掌握的技能和工具。另外,每章中的项目通常都是基于之前章节所学习的技能来构建的。为了清楚地表述我的意思,这里给出一个非常完整的列表,其中分章列出了你将在本书中碰到的技能范畴及工具。

关于代码

本书中,代码清单和普通文本行中包括大量的源代码示例。在这两种情况下,源代码都被设置为代码体,以区别于常规的文本内容。

很多情况下,我调整了原有源代码的格式,增加了换行符并重置了缩进符以适应可用的页面空间。在极少数情况下这种方法还不够用,代码中还会包括续行符标记()。另外,当在文字中描述一段源代码时,通常会从清单中移除该段代码的注释。很多清单中都有代码注释,以突出一些重要的概念。

Linux发行版本

当前在有效维护的Linux发行版本有很多。对于所有Linux发行版本而言,大多数的基础都是相同的,但总有一些版本是能够在“这里”运行而不能够在“那里”运行的。出于实践性的目的,我将主要聚焦于两个版本:Ubuntu和CentOS。为什么是这两个版本呢?因为这两个版本代表了不同的版本系列。Ubuntu与Debian、Mint、Kali Linux及其他版本是同源的,而CentOS则与红帽(Red Hat)企业Linux和Fedora同源。

这并不是说我不重视Arch Linux、SUSE以及Gentoo等其他发行版本,或者说你在本书中学到的东西对在其他版本的环境中开展工作没有帮助。但是,对Ubuntu和CentOS的完全覆盖意味着抓住了Linux馅饼中最大的那一块,我仅使用这两个版本就可以达到这个目标。

本书的论坛

欢迎访问Manning出版公司运营的网络论坛,在该论坛中你可以对本书进行评论、提出技术问题并获得来自作者和其他用户的帮助等。你可以通过链接https://forums.manning.com/forums/linux-in-action访问该论坛。你也可以通过链接https://forums.manning.com/forums/about了解Manning论坛及其管理规则。

Manning对广大读者的承诺是,在读者之间以及读者与作者之间提供一个进行有意义对话的平台。这并非对作者具体参与度的任何承诺,他们对论坛的贡献是自愿的(而且是免费的)。我们建议大家向作者咨询一些有挑战性的问题,以免他丧失了兴趣!只要本书还在发行,你就可以在出版商的网站上访问该论坛以及之前讨论的内容。

其他在线资源

遇到问题了吗?网络搜索是你最好的朋友,因为它可以快速地将你与现有的Linux指南、排除故障的专业知识关联到一起。但是,你不该忘记StackExchange系列网站,特别是serverfault.com。如果某个系统配置出现了错误或者网络已经丢失,那么其他人已经遇到过相同问题的概率会很高,可能有人已经在ServerFault上问过这个问题并得到了答案。找不到任何答案吗?那么请自己留言提问。LinuxQuestions.org和ubuntuforums.org也会很有帮助。

同时,喜欢视频培训的用户将在Pluralsight.com上找到范围非常广泛的Linux课程,其中包括了十多门我自己的课程。

[1] 1英里=1609.344米。——编辑注第1章 欢迎使用Linux本章内容提要

·什么让Linux不同

·基本的实践技能

·获取帮助

本书并非是要开展技术培训。尽管其他的书籍、课程及在线资源都围绕技能(skill)来组织其内容,但我将采用实际的项目(project)作为教学工具。Linux系统的每一个核心技能以及功能都将被包含,而且在项目需要时还会详细介绍。当完成一个项目时,你将会学到你从传统资源中所能学到的一切,而且你还将了解如何执行诸多关键和复杂的管理任务,并且会轻松地开展更多的工作。

前两三章将快速引导你进入Linux服务器的世界。之后,你将亲自动手完成并改造一组实践项目,注意,全部都是要亲自动手的实践项目。通过这些项目,你将学会比一组命令和技能更多的知识。请准备好深入学习并最终为你自己的业务问题创建解决方案。

没有任何一本书能够提前预估你在职业生涯中将会面临的所有挑战。但是,通过展示如何使用实际的工具来解决实际问题,本书将使你对联机文档及互联网上的丰富资源得心应手。如果之前你的Linux经验较为有限,本章会介绍一些基本的命令行使用技能,并且在出现问题时为你指明方向。注意

如你所见,命令行(command line)是操作系统(OS)提供的一个接口,它允许你输入字符命令控制操作系统或者查询其所管理的数据。

需要说明的是,在本书的每一章中,我都非常建议你亲自对所有内容进行实验。除了实际开展实践,没有更好的方式来真正掌握IT技能的核心,当你意识到它并没有按照你所期望的方式工作时,要持续尝试直到将它掌握。祝你在此过程中好运且充满乐趣!1.1 是什么让Linux与其他操作系统不同

Linux是一款免费的操作系统,这意味着在任何需要的时间和需要的地点它都要比其他操作系统更容易安装。不用担心购买网站授权并受到数字版权管理(Digital Rights Management)的制约,这对所有类型的组装机器以及服务器配置的测试变得更加直接。

Linux让开展各种实际有用且具有创造性的事情成为可能。例如,你可以在一个U盘上装载Linux的自生系统引导映像(live boot [1]image),启动一台硬盘已经崩溃的计算机,之后查找并解决该问题(你将在第6章学习具体的操作方法)。或者,因为Linux是一个真正的多用户操作系统,它具有非常好的私密性和稳定性,整个团队可以同时从本地或远程登录进行工作。

Linux的构建采用了一些与UNIX操作系统相同的技术,并带有大多数与深度成熟的UNIX操作系统相一致的工具。这极大地增加了稳定性与安全性。Linux的发行版还提供了复杂的软件包管理系统,可以可靠地安装和维护每一个在线资源库中成千上万的免费软件应用。

Linux不仅是免费的,更是开源的(open source),这意味着任何人都可以获得其代码并根据自己的需求进行修改。事实上,这已经孵化出专属Linux各发行版的巨大生态系统。一个发行版(distribution,有时缩写为distro)是一个定制的软件包,它将Linux内核以及用户计算机Linux运行版的安装工具一起发布。表1-1给出了一个不完整的发行版列表,以对可用的Linux类型进行说明。表1-1 部分常用的Linux发行版

找不到你想要的版本吗?你可以自己创建一个。需要帮助吗?线上有大量活跃的社区,在那里如果没有人能帮助你直接解决问题,他们也会知道去哪里解决。更为重要的是,我想说正是基于社区的资源真正地让Linux变得如此强大。

[1] live一词译为自生系统,是事先存储于U盘(live USB)、CD-ROM(live CD)及DVD(live DVD)等某种可移动存储设备上,不面向专门的计算机硬件而启动的操作系统(通常也包括一些其他软件),不需安装至计算机的本地外部存储器—硬盘。退出自生系统并重启后,计算机即可恢复到原本的操作系统。自生系统的运作机制,是通过“把原本存放在硬盘中的文件,加载到位于存储器的虚拟硬盘中”来实现的。——译者注1.2 基本的实践技能

在开始本书后续部分中那些企业级的项目之前,一件值得做的事情就是确认我们的基础处于同一起跑线。本章包括了Linux基础:UNIX文件系统层次结构标准(包括伪文件系统)、导航命令(ls、pwd和cd)、文件管理工具(cat、less、touch、mkdir、rmdir、rm、cp和mv)、一些技巧(如tab补齐以及文件通配符)、sudo以及在哪里查阅帮助(man、info和journalctl)。

你可能已经拥有了足够多的经验,这样的话就无须学习这些内容。那么,请轻松地跳过本章即可。不要担心其他人,我们会跟上来。

安装Linux

我不打算花时间来讨论如何把Linux安装到计算机上。这并不是因为安装工作非常简单,相反安装有时也可能相当复杂。这是因为你选择的具体方法与具体环境密切相关。描述一种或者甚至六种可能性只会惹恼75%的人,因为这些情景对他们而言是无用的。

需要关于安装的帮助吗?请查阅Manning 2016年出版的《Learn Linux in a Month of Lunches》一书。遇到具体的安装问题了吗?花一点时间写一个简洁而又详细的描述,然后在互联网上搜索以寻求帮助。正在寻找一款预装了Linux的笔记本或台式机吗?请在互联网上搜索“预装了Linux的计算机”。手上有一些无用的硬件和U盘吗?请搜索“从USB安装Linux”。更想将Linux安装为一个虚拟机吗?明智的行为。请前往第2章。1.2.1 Linux文件系统

人们常说Linux中的一切都是通过纯文本文件工作的,因此,从理解Linux文件系统开始可能是最有意义的事情。但在开始学习Linux之前,首先需要弄明白文件系统(file system)是什么?你可以将文件系统看作在具有确定硬盘位置的单个文件和文件组之间创建了显式连接的一个数据表(或者一个索引,index)。图1-1能够帮助你形象地查看分布在硬盘中的数据如何以目录结构的方式呈现给系统用户。图1-1 存储设备上的原始数据可以被操作系统形象地表示为有组织的目录层次结构

为什么需要索引?因为像硬盘或USB设备这样的数字存储设备并不能被划分为用于组织文件夹(folder,或目录,directory)的物理分区。一个特定的文件可能驻留在实际物理介质的某个位置,其距离另一个大约在几分钟或几秒钟之前创建的相同文件很远,而且,一个文件的所有块可能不是连续的。不仅如此,一个文件在硬盘上的物理位置也无须一直固定。

如果希望数据是可靠获取的,你将需要某种类型的索引始终指向所需要的资源。文件系统使用这样的索引来呈现单个硬盘分块(即分区,partition)中的一组被组织起来的目录和文件。注意

如果有时你需要更加深入地了解该主题,了解当前最为常用的Linux文件系统——ext4将很有用。当然,Linux也可以在使用如FAT32和NTFS等其他文件系统格式化过的存储驱动器上运行。

硬盘分区中的所有文件都被保存在根目录(root directory,用正斜杠符号“/”表示)下的目录中。这些目录的组织方式主要由UNIX文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)决定。无论是使用Linux发行版、UNIX或者甚至是macOS,你都将看到非常多相同的基础结构。图1-2给出了一些最为常用的、顶层的目录。

顶层目录,即直接位于根目录下的那些目录——包括目录/etc/,其中包含定义个体程序和服务功能的配置文件,以及目录/var/,其中包含属于系统或各个应用的、在系统运行过程中内容频繁改变的可变(variable)文件。你应该还想了解分配给每个用户的/home目录,它为各用户存放其私有文件。图1-2 UNIX FHS定义的公共顶层目录1.2.2 探索:Linux导航工具

本节将学习五个最为基础和必备的Linux导航命令(ls、pwd、cd、cat和less)。由于命令行并非是一个特别可视化的环境,无论你尝试做什么,你都将在很大程度上依赖这五个工具来确定自己的方向。注意

我认为,你应该在自己的计算机上尝试使用这些工具。这将是你学习的唯一方式。

本书的后续部分需要这样那样的命令行终端。不幸的是,并没有一个可以打开在所有Linux发行版中都能运行的终端窗口的通用方式。例如,Ubuntu菜单系统中终端的位置无须和Fedora或Mint中的匹配。那Ubuntu本身呢?我想,这取决于你运行的是哪个版本。

至少,在大多数环境中组合键Ctrl-Alt-t应该是可以使用的,如同在应用菜单中使用名称terminal进行搜索一样。一旦打开终端,将会默认进入用户的home目录(/home/用户名/)。ls(LIST,列举)

如果你在终端上没有看到任何内容,那么在它周围徘徊就没有意义。在当前目录下,你可以用ls列出文件及子目录的名字。带有l标志(l表示long,即长格式)的ls命令不仅会列出对象的名字,还会列出文件的权限、所有者、组文件大小以及时间戳等信息。为命令添加诸如/var/的目录名称则会显示该目录下的内容,如下所示:

当给ls-l命令添加h参数时,会以用户可读的格式——KB(千字节)、MB(兆字节)以及GB(千兆字节)来显示文件的大小,而不是字节形式,后者包含很多难以计数的数位:注意

通常可以用以下两种方式之一为Linux命令添加参数:一个破折号后跟一个字母(就像修饰ls命令的参数h),或者两个破折号来引用该参数更为冗长的形式。本例中,ls--human-readable会得出与ls-h完全相同的输出。几乎所有的Linux命令都带有完整的文档,我们将在本章的后续部分进行阐述。

想知道在当前目录下有什么内容吗?为ls命令添加一个大写的R参数会显示子目录及它们包含的文件与子目录,无论这些目录的嵌套层数有多少。为了恰当地呈现结果会是多么有关以及多么有用,只需对/etc/目录树再次运行ls-h命令:pwd(显示工作目录)

很多情况下,在文件系统中所处的当前位置会显示在命令提示符的左侧。本例中,当前用户位于/etc/目录下的network目录中:

由于你可能发现自己工作的系统上没有提示符,而有时又可能需要快速地了解当前的位置。此时,输入pwd命令将打印出用户当前所处的工作目录:cd(改变目录)

一旦你知道了当前所处的位置以及在当前目录下能够立即访问的内容,你将需要知道如何改变位置。在命令行解释器(通常为Bash)中输入cd命令可以切换到指定目录。当用户第一次打开一个终端会话[1](常被称为shell)时,用户将发现其已默认地进入自己账户的home目录。如果运行pwd命令,将可能看到类似下面的信息:

何为Bash

Bash可能是最流行的UNIX shell。非常好!但shell是什么?shell是唯一通过命令行接口(CLI)或图形用户接口(GUI)解释用户命令的用户接口。你可以将shell(如图中所示)看作是使用下层内核与硬件系统资源来执行所有适当格式化命令的软件层。换句话说,它是用户与计算机交流的方式。shell解释用户输入命令的执行

现在,让我们通过输入命令cd和正斜杠返回根目录:

再次运行ls命令,看看会显示什么(你将看到图1-2中呈现的目录)。请注意你可以从home目录访问你的yourname目录。要想切换到这里列出的子目录中的任何一个,请输入cd及想要访问的目录名。由于这里给定的路径是当前位置的相对(relative)位置,就无须在该目录名前增加一个正斜杠字符。cd..命令将会回退上一级目录,例如,从/home/yourname/目录回退到/home/。

然而,如果你已经拥有更加雄心勃勃的行程安排,而且想查看远离当前目录的内容,你将需要使用绝对(absolute)路径。这意味着你将一直使用一个以根目录(用正斜杠表示)开始的路径。要想从系统的其他某处返回用户的home目录,请依次输入正斜杠、home(请记住,其在根目录中)及用户名。可以尝试如下命令:

也就是说,输入不带参数的cd命令将把你带回当前登录用户的home目录。cat(将文件内容打印到输出)

在一个终端中访问文本文件的内容有时可能会有些棘手。cat工具会把文件内容打印到屏幕,允许阅读但不能编辑。对于诸如/etc/目录下的fstab等较短的文档而言,这种方式会运行得非常好。下面的示例中使用了一个绝对路径,从而,无论当时你处于文件系统中的什么位置,该文件都能被找到:注意

命令名cat实际上是concatenate的缩写,它反映出该工具的用途是将多个字符串或文件连接到单个文本流中。

假设想要读取的文件所包含的行数超过了单屏可以显示的行数。例如尝试查看/etc/group文件:

可能的情形是,前面的行向屏幕上方滚动和消失的速度太快,以致你无法阅读。如果你不能阅读纯文本文件,那它能有什么用处呢?当然,如你即将看到的,Linux提供了大量的文本编辑器来管理内容,但是,能够每次一屏地阅读一个长文件会是非常好的。less(显示文件内容)

欢迎使用less命令——推测一下,这样命名应该是由于它能快速地读取和显示少于(less)整个文件的内容(或者,可能是为了将其与早期的more命令进行对应区分)。通过对一个现有文件运行less命令即可启动该命令:

使用less命令,你可以使用箭头、PgUp(上翻页)、PgDn(下翻页)以及空格键来上翻、下翻整个文件。工作完成后,按下q键退出。

[1] shell也可译为壳,是用于人机交互的操作系统接口,与内核不同。——译者注1.2.3 完成任务:Linux文件管理工具

如果你已经获得了文件和目录,你将需要了解如何创建、销毁、移动和拷贝它们。文件通常是由软件安装或自动的日志生成等外部过程自动创建的,或者说,是将你的工作保存在像LibreOffice这样的办公工具包中时创建的。在这里讨论所有这些创建方式没有太多必要。然而,我想说的是你可以使用touch命令来快速地创建一个空文件,命令后面是你想起的文件名:

然后使用ls命令就可以看到,该文件已经存在于当前目录中。使用cat命令来显示文件的内容,当然,因为之前只是创建了文件,因此该命令执行后根本不会显示任何内容:

使用touch命令来“触及”一个已存在的文件会更新该文件的时间戳,而不会对其内容做任何更改。如果你因为某种原因想更改如ls等不同命令列举或显示文件的顺序,那么这就很有用。

当然,仅通过创建装满空文件的目录并不能让你在这个快节奏、竞争激烈的世界中走得太远。最终,你将需要用内容填充这些文件,然后编辑已经存在的那些内容。为此,你一定想为自己找到一个可靠的文本编辑器。

在我把自己一头扎进非常危险的境地之前,我应该说明的是很多人对他们的文本编辑器产生了强烈的感情。你可曾礼貌地向Vim用户暗示过他们珍贵的编辑器可能并不像以前那样有用和重要了?你当然没有。如果你做了类似的事情,你将无须亲自阅读本书。

我不会清楚地告诉你必须使用什么文本编辑器。然而,我将会告诉你全功能的文字处理器工具,如LibreOffice和MS Word永远不(never)应该用于Linux的管理工作。那些应用将对文档添加各种类型的隐藏格式,这会破坏系统级的文件。粗略地讲,这里有三类编辑器适合你的工作:

·如果你更喜欢处理GUI环境中的文档,那么一个简单的纯文本编辑器(plain-text editor,Ubuntu中称为Text Editor),如gedit,就非常好了。不同的语法高亮工具也可以让编码和脚本编写更为高效,而且你可以非常确信这类工具只会保存你所见的文本内容。

·当需要从终端会话中编辑一个文件时,具有直观接口的nano(或Pico)等命令行编辑器(command-line editor)就可以胜任。

·最后是Vim(或者其原始版本:vi)。如果你愿意用几个月的时间来学习一个令人费解的接口主要是什么,那么,你将获得大大提高工作效率的终生回报。就这么简单。注意

我的所有书籍、文章以及与课程相关的文档都是用gedit编写的。为什么?我个人喜欢gedit。

为什么不立即花一两分钟用上述的三个文本编辑器对所创建的myfile文件做一些编辑呢?示例如下:

对于Vim编辑器,用i键可以进入插入模式(Insert Mode),然后输入文本。如果你不想将余生都陷入Vim中,可以先按下Esc键,再输入:w,即可保存所做的编辑工作,之后输入:q退出。创建和删除目录

Linux文件系统中的每一个对象都是由称为i结点(inode)的元数[1]据的唯一集合来表示的。我猜你可能会说,之前讨论的文件系统索引是从驱动器上与所有这些i结点相关的元数据得来的。要想显示之前用touch命令创建的文件的更多信息,包括i结点信息,你可以使用stat命令,操作及结果如下:

如你所见,输出数据包括文件名、文件属性和时间戳。但是,它也给出了i结点的ID号。重要的是要意识到,当你移动、拷贝或删除一个文件或目录时,你真正进行的操作是编辑它的i结点属性,而非它的ID。顺便说一下,i结点是UNIX系统采用的对象,用以确定物理存储位置及其在文件系统中的文件属性(如图1-2所示)。通常,每个文件或目录将只对应一个i结点。

假设你正位于自己的home目录,为什么不创建一个用于实验的新目录呢?为此,你需要使用mkdir命令:

现在,转到新的目录并在该目录下创建一个文件:

接下来,你可以看到如何删除对象,回退到父目录(使用cd..)并删除刚刚建立的目录。奇怪的是,预先定义的目录删除命令rmdir在这种情况下并不工作。请自己试试:“目录不能为空?”什么意思?这是一个内置的检查,以防止意外删除你可能已经忘记仍存放有重要文件或子目录的目录。要解决这个问题,你可以做一些处理。

一种方法是为rmdir命令增加--ignore-fail-on-non-empty参数,但是该参数需要令人厌烦的大量输入。另一种方法是手动访问每个子目录,并逐个删除所能发现的每个对象。但某些时候这可能会相当糟糕。当你百分之百确定目录下绝对没有所需要的内容时,最快的方法是为rm命令添加-r标志(表示递归,recursive):

现在应该是一个告诉你在基于GUI桌面接口和使用命令行进行工作的一个重要区别的好时机:命令行没有回收站。如果你用rm(或rmdir)删除了某些内容,之后又后悔了,总的来说,你是没有办法进行恢复的。毕竟,考虑一下即将释放的存储空间。拷贝并移动文件

接下来,创建一些文件及一个新目录:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载