第3章〓Ubuntu字符界面 Ubuntu不但为用户提供了友好的图形界面,而且提供了功能强大的字符界面。在第2章中,读者学习了在图形界面下使用Ubuntu进行日常操作,本章将在Ubuntu的字符界面下介绍各种基本命令。具体包括用户的登录和注销、文件和目录的操作,以及如何进行磁盘管理、如何获取帮助及其他常用命令。 本章学习目标  熟练掌握字符界面常用的登录和注销命令,如login、logout、halt和shutdown等;  熟练掌握字符界面常用的目录与文件命令,如ls、cd、rm和mv等;  熟练掌握字符界面常用的文件内容显示命令,如cat、more、less、head和tail等;  熟练掌握字符界面常用的文件内容处理命令,如sort、grep、diff、wc和cut等;  掌握字符界面常用的文件查找命令,如find、locate、whereis和which等;  掌握字符界面常用的磁盘管理命令,如df、du、mount和unmount等;  掌握字符界面常用的备份压缩命令,如zip、unzip、gzip、gunzip和bzip2等;  了解字符界面常用的获得帮助命令,如man、whatis、help和info等;  了解字符界面常用的其他命令,如clear、echo、date和history等。 3.1Ubuntu命令简介 Ubuntu的命令可根据不同的分类标准进行分类,若从其与Shell程序的关系这一标准来分类,可分为内部命令和外部命令。内部命令常驻内存,它们是Shell程序的一部分,这些命令由Shell程序识别并可在其内部完成运行; 外部命令是Ubuntu系统中的实用程序,它通常不被包含在Shell中,和内部命令相比,其使用频率较低,因此仅在用户需要使用时才将其调入内存,而不像内部命令那样常驻内存。 本章将日常使用的Ubuntu命令按功能粗略地分为以下八大类: (1) 登录与注销: 本功能包含的典型命令有用户登录、用户注销、用户登录口令的修改、系统启动与关闭。 (2) 目录与文件: 对工作目录的操作主要包括创建、移动、复制、删除和显示当前工作目录,对文件的操作则包括移动、复制与删除。 (3) 文件内容显示: Ubuntu可提供多种方式显示文件内容,包括分页往后显示文件,分页自由显示文件,指定显示文件的前、后若干行。 (4) 文件内容处理: 对文件内容进行处理是Ubuntu十分重要的功能之一,大致包括文件内容的排序、查重,不同文件的比较,以及对文件内容进行剪切、粘贴和统计。 (5) 文件查找: 文件查找功能是Ubuntu日常使用时最为频繁的操作之一,分别包括在硬盘和数据库中查找文件或目录。 (6) 磁盘管理: 对磁盘进行高效管理是Ubuntu日常使用中必不可少的功能之一,具体包括检查、统计磁盘空间的占用情况,检查和关闭磁盘的使用空间限制、挂载与卸载文件系统。 (7) 备份压缩实用程序: 备份压缩是Ubuntu中十分重要的功能之一,典型的实用程序有zip、unzip和zipinfo,gzip、gunzip和gzexe,bzip2、bunzip2和bzip2recover,compress和uncompress,uuencode和undecode,dump和jar。 (8) 其他命令: 无法纳入上述7项,但日常使用较为频繁的命令主要包括显示文本、显示日期和时间、查看和终止进程、显示最近登录系统的用户信息和历史命令(或称指令)等。 接下来,我们将按上述分类对Ubuntu命令进行介绍。 3.2登录与注销 本节将介绍在Ubuntu字符界面下如何登录系统、注销用户、退出当前Shell、修改登录口令、关闭及重启系统。 3.2.1用户登录 在上一章中我们学习了如何在Ubuntu图形界面下通过输入用户名和密码登录系统,若用户名和密码正确无误,则用户在图形化界面成功登录系统后默认将显示如图31所示。 图31用户成功登录Ubuntu系统后的桌面 此时,用户同时按下“Ctrl+Alt+F1”将打开Ubuntu字符界面,提示输入用户名和密码,如图32所示。 图32Ubuntu字符界面下的登录窗口 接下来,输入用户名(默认使用安装系统时的用户名)并按Enter键,系统提示输入密码(默认使用系统安装时设定的密码),输入密码时默认不显示所输入的字符(此时用户只需键入与当前用户名对应的密码即可,请注意这是Ubuntu系统的一大特色,而非bug。此举可有效应对当前用户输入密码时旁人偷窥而导致的密码泄露问题)。无论是输入的用户名错误还是密码错误,系统均提示“Login incorrect”,如图33所示。 仅当用户名存在且和输入的密码对应并正确时,才会进入如图34所示的成功登录系统的界面。系统将显示当前用户最后一次登录的时间、当前Ubuntu的版本号以及可用的更新等相关信息。 图33登录失败界面 图34登录成功界面 注意: 在Ubuntu系统中默认是不允许root登录的,因为它具有最高权限,默认不被用来登录系统。 我们在使用时通常仅能以普通用户和访客的身份登录系统,如果希望以root身份登录系统,那么需要按以下步骤进行操作: (1) 普通用户登录后,按下“Ctrl+Alt+F1”打开新窗口或者“Ctrl+Alt+T”打开一个新终端。 (2) 如果用户在安装Ubuntu系统时没有设置root用户的密码,则须执行以下命令设置root用户的密码。 sudo passwd root 在用户两次输入相同的为root用户设置的密码后,将会提示“passwd: password updated successfully”,这表明root用户密码设置成功。 (3) 在新窗口或者新终端输入su,再输入root用户登录的密码,按Enter键即可进入 root用户权限模式。 图35设置root用户密码并进入 root模式 上述为root用户设置密码并登录的过程如图35所示。 从图中可以看到,当前用户由普通用户变成root用户。 无论是通过打开新窗口还是新终端登录Ubuntu系统,用户都只有成功登录之后,才可以在字符界面下使用该系统。由于root具有系统操作的最高权限,为了避免使用root进行操作时可能导致的系统文件被修改或者删除,甚至对系统造成不可恢复的影响,如修改配置文件导致系统无法启动、删除分区信息导致系统崩溃。我们强烈建议用户在日常使用Ubuntu系统时只要有可能,均不使用root账户,而是使用系统安装时要求用户输入的用户名(默认用户)和密码来进行操作。 通常除了使用默认用户进行日常操作以外,我们还需要为其他有可能临时使用该系统的用户创建一些账户,并使用这些账户登录系统进行各种操作,具体如下。 (1) 使用useradd命令创建临时账户 root用户可以通过执行以下命令来创建临时账户useraddtest,效果如图36所示。 useradd useraddtest (2) 使用adduser命令创建临时账户 root用户可以通过执行以下命令来创建临时账户addusertest,效果如图37所示。 adduser addusertest 图36使用useradd命令创建临时账户 图37使用adduser命令创建临时账户 根据系统提示输入新用户的信息,包括密码、全名、电话号码等,最后系统提示是否输入正确,输入Y则代表确认无误,n则代表重新输入。 注意: useradd和adduser命令都可以创建账户,但是两者是有区别的。 ① 在使用useradd创建用户时不会在/home下自动创建与该账户的用户名同名的用户目录,而且不会自动选择Shell版本,也不会设置密码,因此这个账户创建和默认是不能被立即使用的,而是需要使用passwd(后续我们将介绍此命令)修改密码后才可使用。 ② 在使用adduser创建账户时则不存在上述问题,即账户创建后可以立即使用。需要特别留意的是,一般用户不具有创建账户的权限,需要使用root账户才能完成上述创建账户的操作。创建账户完成后,即可使用这个账户的用户名和密码进行登录。 (3) 使用login实现登录和不同账户间的切换 执行以下命令: login 图38login命令切换账户 效果如图38所示。 如果要由root切换至该用户,使用login命令即可进入登录界面,正确输入用户名和密码后即可对对应的账户进行操作。 3.2.2用户注销 在Ubuntu系统中注销命令是logout。登录系统后,若要离开系统,用户只要直接下达logout命令即可,注销后重新返回登录命令行。 用户可执行以下注销命令。 logout 该命令执行后的效果如图39所示。 注意: logout命令只在命令行界面使用,如果在Shell中使用该命令,那么系统会出现如图310所示的提示信息。 图39用户注销 图310Shell下执行logout命令的提示 3.2.3退出当前Shell 使用login登录系统,在退出系统时我们可以选择exit或者logout,这两者之间有区别吗?对于大部分系统来说这两者之间是没有区别的,但其实logout命令的主要功能是注销用户,而exit命令则是退出控制台。 (1) 按下“Ctrl+Alt+T”打开一个Shell窗口,效果如图311所示。 图311退出当前Shell (2) 打开该Shell窗口之后,我们输入以下命令并按Enter键执行之。 exit 在Shell窗口执行exit命令后的效果如图312所示。 图312退出Shell 可以看到,执行exit命令后,系统退出并关闭了当前Shell窗口,返回到图形界面的桌面,而当前账户并没有发生任何改变。 3.2.4修改登录口令 在实际使用Ubuntu系统时,如果用户需要修改登录的口令,可以使用passwd命令。 执行以下命令: passwd user01 效果如图313所示,系统要求用户输入当前密码,如果该密码正确则会提示用户输入新密码,否则会出现如图313所示的“Authentication token manipulation error”的提示,此时用户修改密码失败。 若用户输入原密码正确,则要求重复输入两次新密码且新密码不能与原密码相同,否则如图314所示。此时系统提示原密码未被修改(Password unchanged),并要求用户再次输入新密码。 图313输入错误原密码的提示 图314新密码与旧密码相同时出现的提示 如果两次输入的新密码不一致,那么会出现如图315所示的情况。此时系统提示“password do not match”,此时用户修改密码失败。 正确完成所有输入后,如果出现如图316所示的“password updated successfully”的提示,那么表示用户成功修改密码。 图315因两次输入的新密码不一致而出现的提示 图316成功修改密码 3.2.5关闭系统 有些用户会使用直接关掉电源的方式来关闭Ubuntu系统,这是十分危险的。因为Ubuntu后台运行着许多进程,所以强制关机可能会导致这些进程中的数据丢失,进而使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备。 Ubuntu系统中有一些常用的关机命令如shutdown(h)、halt及poweroff,它们都可以关闭系统。执行上述关机命令后,系统将自动关闭所有进程并关机,接下来我们来学习这些关机命令。 (1) 首先执行以下命令。 halt halt命令执行后,系统并没有如我们所想的那样自动关闭,而是出现了如图317所示的提示。这是因为halt命令只有root用户才可以执行,普通用户无权使用该命令。此时我们只需使用前面介绍过的su命令切换至root用户即可。 图317halt命令执行后的提示 注意: 使用普通用户执行该命令时,会弹出认证对话框,若输入相应的密码,则会自动关闭系统。 (2) 切换至root用户后再次执行以下命令。 halt 命令成功执行后,系统将会在关闭所有进程后自动关机。 (3) 开机后登录系统并打开新终端,同时执行以下命令。 shutdown -h 10 系统将在10分钟后自动关机,如图318所示。如果想取消自动关机,则在关机前输入shutdown c即可。 图318设置10分钟后自动关机 (4) 最后,我们尝试输入poweroff命令以实现系统的关闭。 poweroff 该命令执行后,将会得到与以root用户去执行halt命令的相同结果,即系统将会自动关闭。 3.2.6重启系统 当需要对系统进行重启的时候可以使用重启命令shutdown(r)、init和reboot。 (1) 首先执行以下命令。 shutdown -r 10 该命令执行后的效果如图319所示。 图319设置10分钟后自动重启 这条命令的意思是系统将在10分钟后自动重启。如果想取消自动重启,那么在重启前输入shutdown c命令即可。 (2) 继续输入init命令实现重启。 init 6 该命令执行完成后,系统将自动重启。 init命令除了加上参数6可以实现重启以外,还有如表31所示的几个级别,它们具有不同的功能。 表31init命令参数及其对应的功能 参数功能参数功能 0停机4图形化 1单用户模式5安全模式 2多用户,不能使用net file system6重启 3完全多用户 (3) 最后,使用reboot命令对系统进行重启,执行以下命令。 reboot 该命令执行后,会得到与init 6命令相同的结果,即系统将自动重启。 3.3目录与文件 在完成上一节的学习之后,用户可以在Ubuntu字符界面下登录系统。在用户使用该系统时,会频繁地对目录与文件进行操作,本节将介绍目录与文件相关的Shell命令,包括显示、更改、创建和删除工作目录,移动、复制、删除、创建目录或文件等。 3.3.1显示当前工作目录 用户在字符界面下进行操作时,通常无法知道当前所在的目录,此时可以使用pwd命令来显示当前工作目录的完整路径。 请执行以下命令。 pwd 图320显示当前目录 该命令没有任何选项和参数,执行后将显示完整路径,效果如图320所示。 可以看到,系统显示完整路径为“/home/user01”。 3.3.2更改工作目录 cd命令是Ubuntu中较为基本的目录操作命令之一,用户可以使用此命令改变当前工作目录,即从当前工作目录切换至cd命令中参数指定的目录。 (1) 首先执行以下命令。 cd chapter03 图321更改工作目录 该命令执行后的效果如图321所示。 (2) cd命令执行完毕后,系统已切换至指定目录,输入以下命令可以查看。 pwd 效果如图322所示,可以看到,刚刚执行的cd命令成功地将当前目录由“/home/user01”更改为“/home/user01/chapter03”。 (3) 如图323所示,如果用户想要从当前目录切换至一个并不存在的目录chapter033,那么命令将无法正确执行,并出现“No such file or directory”的提示。 图322查看当前目录 图323切换至不存在的目录出现的系统提示 3.3.3创建工作目录 在 Ubuntu 下,我们可以使用 mkdir 命令创建目录,若执行成功,它会在当前目录下创建新的目录。 (1) 首先执行以下命令。 mkdir chapter03 该命令执行后的效果如图324所示。 如果在当前目录下用户想要创建的目录已经存在,那么将无法成功执行该命令,并且会出现如图325所示的系统提示。 图324创建目录 图325创建的文件夹已存在的提示 若用户想创建的目录在当前目录下不存在,那么在创建目录命令成功执行后,系统并不会出现任何提示。 (2) 我们可以在当前目录下使用mkdir命令,并使用相对路径创建目录。请执行以下命令。 mkdir ./chapter03/chapter030303 或mkdir chapter03/chapter030303 执行后出现如图326所示的提示,这是因为普通用户没有权限,需要使用root账户进行操作。 图326相对路径创建目录 (3) 使用su命令切换至root用户后,再次执行以下命令。 mkdir ./chapter03/chapter030303 或mkdir chapter03/chapter030303 效果如图327所示,我们成功地在chapter03目录下创建了目录chapter030303。 图327以相对路径方式创建目录 使用相对路径后,我们不用转换目录就可以在任何具有读写权限的文件夹里创建目录。 (4) 我们也可以同时创建多个目录,比如我们要创建的目录chapter030301、chapter030302和chapter030303,请执行以下命令。 mkdir chapter030301 chapter030302 chapter030303 从图328可以看到,这3个目录将同时被创建。 图328同时创建多个目录 注意: 使用mkdir命令操作时,若硬盘空间已满,则无法正确执行此操作,系统会给出相应提示。 3.3.4删除工作目录 在Ubuntu系统中,我们可以使用rmdir命令删除一个空目录。 (1) 首先在当前目录下执行ls命令查看所有目录和文件,效果如图329所示。 图329显示当前目录下所有目录和文件 (2) 然后执行以下命令删除目录。 rmdir chapter03 该命令执行后的效果如图330所示。 (3) 再次执行ls命令列出所有文件和目录。 ls 该命令执行后的效果如图331所示,可以看到,chapter03这个目录已经被删除,说明命令执行成功。 图330删除工作目录 图331显示当前目录下所有目录和文件 (4) 需要注意的是,若用户想要删除的目录不存在时,则不能成功执行rmdir命令,而是会出现如图332所示的“No such file or directory”的提示。 图332删除不存在的目录出现的系统提示 3.3.5移动目录或文件 如果在Ubuntu系统中想让一个目录向另一个目录移动文件,或对某一文件进行重命名操作,可以使用mv 命令。该命令的功能是把文件移动到指定的目录或对文件进行重命名。 (1) 首先使用mkdir命令创建一个名为chapter030305的目录,然后使用touch命令(该命令在后续章节将会进行介绍)创建一个名为ex030305的文件,命令如下。 mkdir chapter030305 touch ex030305 (2) 然后执行ls命令列出所有文件和目录,如图333所示。 图333显示当前目录下所有目录和文件 (3) 接下来执行以下命令。 mv ex030305 chapter030305 (4) 我们可以使用ls命令查看当前目录,再使用cd命令切换至chapter030305目录,最后执行ls命令查看chapter030305目录中的文件,具体如下。 ls cd chapter030305 ls 从图333中可以看到当前工作目录下存在名为ex030305的文件,执行ls和mv命令后,效果如图334所示,这也就是说我们成功地将当前工作目录下的ex030305文件移动到了当前工作目录的子目录chapter030305中。 图334查看文件原目录和新目录下的文件 (5) 需要注意的是,若用户想要将ex030305移动至不存在的目录chapter030306中时,该操作并不能成功执行,而是会出现如图335所示的“Not a directory”的提示。 图335移动文件至不存在的目录时出现的提示 注意: mv命令也可用于文件的重命名操作,读者可自行尝试。 3.3.6复制目录或文件 在Ubuntu系统中复制是十分重要的操作之一,使用cp命令可以实现目录或文件的复制,请读者按以下步骤进行。 (1) 首先在当前目录下执行ls命令查看所有目录和文件,效果如图336所示。 图336显示当前目录下的所有目录和文件 (2) 然后使用mkdir命令创建一个名为chapter030306的目录,再使用touch命令创建一个名为ex030306的文件,具体如前所述。 (3) 创建chapter030306目录和ex030306文件后,在当前目录下执行以下命令。 cp ex030306 ./chapter030306 或 cp ex030306 chapter030306 此命令执行后,并没有复制文件到chapter030306目录中,而是出现如图337所示的提示。 图337执行cp命令时系统提示无权限 (4) 切换至root用户后再次执行上述命令。 cp ex030306 ./chapter030306 或 cp ex030306 chapter030306 (5) 在当前目录中使用ls命令查看目录中的所有文件,再切换至chapter030306目录下执行ls命令查看所有文件,执行如下命令。 ls cd chapter030306 ls 上述命令执行后的效果如图338所示。 图338查看cp命令执行情况 命令执行后,我们可以发现chapter03目录下的ex030306文件依然存在,而chapter030306目录下多了一个内容和ex030306完全相同的文件,说明复制命令执行成功。 (6) cp命令还可以复制一个文件后并重命名,那么当前目录下就存在原文件和重命名后的原文件,命令如下。 cp ex030306 ex030306_01 ls 该命令执行后的效果如图339所示。 图339使用cp命令复制并重命名新文件 可以看到,命令执行后,ex030306依然存在,而它的复制文件也被在当前目录创建,并被重命名为“ex030306_01”。 3.3.7删除目录或文件 在Ubuntu中很多人仍然习惯用rmdir执行删除目录这一任务,但是rmdir命令只能删除空目录(即目录下不包含任何文件和子目录),如果被删除的目录不是空目录,那么将无法使用该命令完成这一操作。 (1) 首先使用ls命令查看chapter030305目录下的文件和子目录,发现该目录下有一名为ex030305的文件,如图340所示。 图340显示chapter030305文件 夹内的文件和子目录 (2) 然后执行rmdir命令试图删除chapter030305文件夹,会发现系统出现如图341所示的提示,即“Directory not empty”。我们只需清空该目录内的所有文件(包括子目录及子目录下的所有文件),即可正确执行该命令。 图341使用rmdir命令删除含有文件的目录时出现的提示 (3) 若一个目录中既含有文件又含有子目录,那么如果想删除该目录,就得删除该目录下所有文件和子目录(此时子目录必须为空),若子目录不为空,则需递归删除之,会耗费大量的时间和精力。使用rm rf命令则可跳过这一步骤直接删除目录。首先,执行以下命令查看当前目录和chapter03目录下的文件及目录,效果如图342所示。 ls cd chapter03 ls 图342查看当前目录和chapter03目录下的文件及目录 (4) 再执行 cd ..命令回到前一目录下。 cd .. (5) 然后,执行rm rf命令删除chapter03目录及其目录下所有文件和目录。 rm -rf chapter03 (6) 最后,执行ls命令,查看文件和目录,如图343所示。 ls 图343删除指定目录 可以发现chapter03目录已经不存在了,并且文件夹内的文件和文件夹都被删除了,说明命令执行成功。 注意: 使用rm rf命令的时候一定要格外小心,因为使用该命令删除的文件是不放入Ubuntu系统的回收站的,因此若想恢复这些被删除的文件有些困难。 3.3.8创建文件或修改时间 在Ubuntu中我们经常使用touch命令创建一个文件,此命令也可更改文档或目录的日期时间。 (1) 首先执行ls命令查看当前工作目录下的所有文件,具体如下。 ls 效果如图344所示。 图344查看当前工作目录下的所有文件 命令执行后,可以看到当前工作目录下不存在名为ex030308的文件。 (2) 然后执行touch命令创建一个名为ex030308的文件,并查看当前工作目录下的所有文件,具体如下。 touch ex030308 ls 命令执行后可以看到文件创建成功,效果如图345所示。 图345touch命令创建文件 (3) 若想使用touch命令修改文件最后被编辑的时间,那么就得加上at参数。在修改前先查看一下该文件最后被编辑的时间和访问的时间。 可执行如下命令用来查看ex030308这一文件最后被编辑的时间和访问的时间,效果如图346所示。 ls -l ex030308 ls -lu ex030308 图346查看文件被编辑的时间和访问的时间 (4) 接着,可执行如下命令将文件的最后访问时间修改为4月1日10点11分。 touch -at 04011011 ex030308 (5) 执行如下命令可查看更新后的文件的最后被编辑时间和访问时间。 ls -l ex030308 ls -lu ex030308 该命令执行后的效果如图347所示。 图347修改最后访问时间并显示最后被编辑的时间和访问的时间 从图中可以看到,上述文件最后被编辑的时间没有变动,但是最后访问的时间通过执行上述命令已被修改。 3.3.9查看目录和文件 查看目录和文件的命令是ls,它在Ubuntu中是使用频率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以区分不同类型的文件,下面介绍几种常见的用法。 (1) 执行以下命令查看目录和文件。 ls 该命令执行后的效果如图348所示。 图348查看目录和文件 (2) 执行以下命令可以查看所有文件(包括以“.”开头的隐藏文件)。 ls -a 该命令执行后的效果如图349所示。 图349查看所有文件(包括隐藏文件) (3) 执行以下命令可以显示文件索引节点号。 ls -i 该命令执行后的效果如图350所示。 (4) 执行以下命令可以列出文件的详细信息,如创建者、创建时间、文件的读写权限列表等。 ls -l 该命令执行后的效果如图351所示。 图350显示文件索引节点号 图351列出文件的详细信息 (5) 执行以下命令可以用“,”号区隔每个文件和目录的名称。 ls -m 该命令执行后的效果如图352所示。 图352用“,”号区隔每个文件和目录的名称 (6) 执行以下命令可以列出当前工作目录下的所有文件和子目录。 ls -R 该命令执行后的效果如图353所示。 图353列出当前工作目录下的所有文件和子目录 3.3.10以树状图列出目录内容 使用tree命令可以列出目录内容,但以默认方式安装的Ubuntu系统并不包含这个命令,所以需要按以下步骤安装后才能使用。 (1) 使用root账户执行如下命令。 sudo apt-get install tree 该命令执行后,系统将自动进行安装,出现如图354所示的提示信息说明安装成功。 图354安装tree命令 注意: 执行该安装命令时若提示“dpkg was interrupted, you must manually run 'sudo dpkg configure a' to correct the problem”,则请按该提示在命令窗口执行“sudo dpkg configure a”,然后再重新执行上述安装命令“sudo aptget install tree”。 (2) tree命令安装成功后,当前用户默认为root,需使用login命令切换至普通用户,并在当前工作目录中执行以下命令。 tree -l 该命令执行后的效果如图355所示。 (3) 执行以下命令可以查看所有文件(包括以“.”开头的隐藏文件)。 tree -a 该命令执行后的效果如图356所示。 图355生成目录树结构 图356查看所有文件(包括以“.”开头的隐藏文件) (4) 执行以下命令将不以阶梯状列出文件或目录名称。 tree -i 该命令执行后的效果如图357所示。 (5) 执行以下命令可以列出文件或目录大小。 tree -s 该命令执行后的效果如图358所示。 (6) 执行以下命令可以按文件和目录的更改时间排序。 tree -t 该命令执行后的效果如图359所示。 图357不以阶梯状列出文件 或目录名称 图358列出文件或 目录大小 图359按文件和目录的 更改时间排序 3.3.11显示文件或文件系统的详细信息 如果想要查看文件或者文件系统的详细信息,可以使用file命令,它用于检验文件的类型。请读者按以下步骤来操作。 (1) 首先,执行touch命令,创建一个名为ex030311的文件。 touch ex030311 该命令执行后,文件创建成功。 (2) 然后,执行以下命令查看文件的信息。 file -b ex030311 该命令执行后的效果如图360所示,显示ex030311为空文件。 (3) 最后,在Ubuntu系统中,每一个文件都存有3组日期和时间,它们包括最后编辑时间(即使用 ls l 命令时显示的日期和时间)、最近状态改变时间(包括对文件重命名)和最后访问时间,而用于显示文件详细信息的命令是stat。 我们执行stat ex030311命令,得到如图361所示的结果。 图360显示文件类型 图361显示文件各种信息 通过stat命令,我们可以清楚地看到这个文件的详细信息,具体如表32所示。 表32文件的详细信息 名称含义名称含义 File文件名IO BlockIO模块 Size文件大小Device设备 Blocks分区的容量Inode索引节点 Links连接数Access最后一次访问的时间 Access权限Modify最后一次修改数据的时间 Uid用户身份唯一标识Change最后一次修改元数据的时间 Gid用户组身份唯一标识Birth创建时间 3.4文件内容显示 在字符界面下使用Ubuntu系统时,需要以各种方式显示文件内容,接下来将介绍这一方面的知识。 3.4.1创建和显示文件 如果想在系统中创建和显示文件,可以使用cat命令。 (1) 使用ls命令查看当前工作目录,效果如图362所示。 ls 图362查看当前工作目录下的所有文件 可以看到,当前工作目录下不存在名为ex030401的文件。 (2) 使用cat命令创建文件ex030401,执行如下命令。 cat > ex030401 图363使用cat命令创建并向 文件内写入内容 (3) 如图363所示,命令执行成功后,系统无任何提示,此时用户可以自由地向ex030401文件内输入相应内容。 abc defg 输入完成后,用户按下Ctrl+D快捷键结束编辑并退出。 (4) 我们再次使用ls命令查看当前工作目录,发现已存在名为ex030401的文件,效果如图364所示。 (5) cat命令还可以用于查看文件,执行cat n ex030401命令,可对输出的内容以行为单位进行编号,效果如图365所示。 图364查看当前工作目录下的所有文件 图365cat命令查看文件 注意: 如果当前目录下已存在ex030401这一文件,那么输入的新内容将自动覆盖原文件中的内容。 3.4.2改变文件权限 Ubuntu中chmod命令的语法为: chmod 【u/g/o/a】 【+/-/=】 【r/w/x】。其中: ① u表示用户(user,指文件或目录所有人); g表示同组用户(group,与文件或目录所有人组ID相同的用户); o表示其他用户(others); a表示所有用户(all),包括u、g和o。 ② +表示添加权限; -表示移除权限; =表示重置权限。 ③ r表示读取文件或目录的权限(read); w表示写入文件或目录的权限(write),x表示执行的权限(execute)。 通过使用1(执行)、2(写入)和4(读取)3种数值及其任意形式组合来确定权限,其中1代表执行权限,2代表写入权限,4代表读取权限。例如,5(5=4+1)代表有读取和执行权限,6(6=4+2)代表有读取和写入权限,7(7=4+2+1)代表有读取、写入和执行权限。我们以文件所有人u的权限为例,解释数值与对应权限的关系,具体如表33所示。 表33数值及对应的权限 独 立 权 限组 合 权 限 数值权限备注数值权限备注 0无无动作3wx执行和写入 1x执行5rx读取和执行 2w写入6rw读取和写入 4r读取7rwx读取、写入和执行 注意: 指定组g和其他用户o的权限与本表相同。 用户可以按以下步骤学习chmod命令的用法。 (1) 首先,使用touch创建一个名为ex030402的文件,并使用ls l命令查看其权限,具体如下。 touch ex030402 ls -l ex030402 执行效果如图366所示。 可以看到,该文件对文件所有人和组用户具有读取和写入权限,而对其他用户只有读取权限。 (2) 然后,使用chmod命令为ex030402更改权限。执行如下命令。 chmod 777 ex030402 上述命令执行完毕后,所有人均具有对ex030402文件的读取、写入和执行权限。 此时,可以使用ls l ex030402命令查看ex030402文件的权限,如图367所示。 图366创建文件并查看权限 图367更改并查看文件权限 注意: 执行命令chmod a=rwx ex030402和chmod 777 ex030402的效果相同,即表示所有人(a表示all)均对ex030402文件具有读取、写入和执行的权限。 3.4.3分页往后显示文件 如果想分页显示文件内容,可以使用more命令。 (1) 首先,使用cat命令创建一个名为ex030403的文件,并向文件内写入以下数据,具体如下。 cat >ex030403 the be of and a to in he have it that for they he with as not on she at by this we you do but from or which onewould all will there say who make when can more if no man out other so what time up go about than into could state only new year some take come 该命令执行后的效果如图368所示。 (2) 然后,使用more命令分页显示ex030403文件的内容,命令如下。 more ex030403 该命令执行后的效果如图369所示。 (3) 最后,当前文档的内容并没有被全部显示出来,而是如图369底部所示,只显示了文档的部分内容。这时我们想查看下一页的内容,可以按下Space(空格)键进行翻页,效果如图370所示。 图368创建并向文件内 写入内容 图369使用more命令分页 显示文件内容 图370使用more命令分页并 翻页显示文件内容 3.4.4分页自由显示文件 在Ubuntu系统中分页显示文件内容除了可以使用more命令之外还可以使用less命令,现介绍如下。 (1) 首先,执行以下命令创建ex030404文件,并在当前目录下执行ls命令查看文件是否被创建成功。 cp ex030403 ex030404 ls 该命令执行后的效果如图371所示。 图371复制ex030403文件并更名为ex030404 (2) 然后,使用less命令进行分页显示,命令如下。 less ex030404 该命令执行后的效果如图372所示。 注意: 在使用more命令和less命令显示文件内容时,有以下区别。 ① 使用more命令显示文件内容时,只能通过按下Space(空格)键向后翻页。 ② 使用less命令时,除了可以像使用more命令那样通过按下Space(空格)键向后翻页,还可以通过按下Page Up键和Page Down键进行前后翻页。 再次执行less命令。 less ex030404 先按下Page Down键后,效果如图373所示。 再按下Page Up键后,效果如图374所示。 图372使用less命令分页 显示文件 图373按下Page Down键 图374按下Page Up键 若被显示的文件太长,用户可以在任意时刻直接在键盘上按下Q键退出当前文件的显示。用more命令查看文件时也可以如此操作(即按Q键退出当前文件的显示)。 3.4.5指定显示文件前若干行 若我们需要指定显示文件的前若干行,使用more命令则无法实现,而使用less命令时,操作较为烦琐。这时我们可以使用head命令来实现,具体操作如下。 (1) 使用cp命令复制ex030403文件并更名为ex030405,再执行如下命令,查看文件ex030405开头的几行内容,该命令默认显示前10行内容。 head ex030405 该命令执行后的效果如图375所示。 (2) 如果想查看ex030405文件中更多的内容,可以通过一个数字选项来设置需要显示的行数,具体命令如下。 head -13 ex030405 通过以上命令可查看ex030405文件中前13行的内容,该命令执行后的效果如图376所示。 图375查看ex030405文件开头的几行内容 图376查看ex030405文件中前13行的内容 3.4.6指定显示文件后若干行 学习了如何使用head命令查看文件开头指定的若干行内容后,接下来我们将介绍查看文件末尾指定若干行内容的命令tail。 (1) 首先,使用cp命令复制ex030403文件并更名为ex030406,再执行如下命令,查看文件ex030406的最后几行内容,该命令默认是后10行的内容。 tail ex030406 该命令执行后的效果如图377所示。 (2) 其次,如果想查看ex030406文件后面更多内容,可通过设置一个数字选项来更改所需显示的行数,具体命令如下。 tail -13 ex030406 通过执行上面的命令,可以查看ex030406文件后13行的内容,其效果如图378所示。 图377查看ex030406文件的最后几行内容 图378查看ex030406文件后13行的内容 3.5文件内容处理 我们已经学习了显示文件内容的一系列命令,接下来继续学习如何处理文件内容。例如,对文件内容进行排序,在文件中查找指定内容,对文件内容进行剪切、粘贴和统计等。其中,某些命令更高级的用法将会在后续章节中介绍。 3.5.1对文件内容进行排序 在Ubuntu系统中,可以使用sort命令对文件内容进行排序,它可以将排序结果显示出来。请按以下步骤进行操作。 (1) 使用cat命令创建一个名为ex030501的文件并写入数据,具体如下。 cat > ex030501 1 4 3 5 2 该命令执行后的效果如图379所示。 (2) 文件创建成功之后,我们可以使用sort命令对此文件的内容进行排序并显示,具体如下。 sort ex030501 该命令执行后的效果如图380所示。 从图380可以看到,原来是乱序的文件ex030501已被成功排序。 (3) 如果想改成以逆序(与已被排顺序相反)的形式显示,那么只需加上“r”参数即可,命令如下。 sort -r ex030501 效果如图381所示。 图379创建ex030501文件并 写入数据 图380将文件的内容排序后 显示出来 图381将文件的内容以逆序 形式显示 3.5.2检查文件中重复内容 uniq命令用于检查文件中的重复内容,它可以报告或删除文件中重复的行。 (1) 首先,使用cat命令创建一个名为ex030502的文件并写入数据,具体如下。 cat >ex030502 a a b b 该命令执行后的效果如图382所示。 如图所示,文件内有4行内容,其中第2行与第1行内容相同,第4行与第3行相同。 (2) 然后,执行uniq命令,具体如下。 uniq ex030502 该命令执行后的效果如图383所示。 图382创建ex030502文件并写入数据 图383使用uniq命令显示去除重复行后的文件内容 可以看到,仅输出了2行,其中第1行为“a”,第2行为“b”,而原文件中共有4行,其中前两行为“a”,后两行为“b”。这也就是说,使用uniq命令显示文件内容时,重复的内容仅显示一次。 3.5.3在文件中查找指定内容 用户若需在文件中搜索某一关键字,可通过grep命令实现。具体如下。 (1) 我们复制ex030502文件并重命名为ex030503,若想使用grep命令显示该文件中所有包含字母“a”的行,则命令具体如下。 grep 'a' ex030503 该命令执行后的效果如图384所示。 可以看到,上述命令执行成功后,grep命令筛选出ex030502文件中所有包含字母“a”的行并显示出来。 (2) 如果只想显示ex030503文件中包含字母“a”的行数,只需执行以下命令即可。 grep -c 'a' ex030503 该命令执行后的效果如图385所示。 图384显示ex030503文件中所有包含“a”的行 图385显示包含字母“a”的行数 3.5.4逐行对不同文件进行比较 在Ubuntu系统中,对不同文件进行比较的命令有diff、diff3和sdiff等。 (1) 使用cat命令创建3个文件,分别命名为ex030504_01、ex030504_02和ex030504_03,执行的具体情况如图386所示。 (2) 如果想对2个文件进行比较,那么可以使用diff命令,请输入如下命令。 diff ex030504_01 ex030504_02 该命令执行后的效果如图387所示。 图386创建3个文件并分别写入内容 图387使用diff命令对2个文件进行比较 我们可以看到上述结果可分为2部分: 第1部分为“2c2”,它的含义是指第1个文件中的第2行需要做出修改才能与第2个文件中的第2行内容相同; 剩余部分均为第2部分,它告诉我们2个文件的不同之处: ① “d”表示右边文件的第2行内容为“d”; ③ “”则是2个文件内容的分隔符号。 (3) 如果想对3个文件进行比较,那么我们可以使用diff3命令,具体如下。 diff3 ex030504_01 ex030504_02 ex030504_03 该命令执行后的效果如图388所示。 我们可以看到上述结果可分为3个部分: 第1部分为“1:1,2c”,它的含义是第1个文件中的第1行和第2行内容与其他2个文件不匹配,分别为“a”和“b”; 第2部分为“2:1,2c”,它的含义是第2个文件中的第1行和第2行与其他2个文件不匹配,分别为“a”和“d”; 第3部分为“3:1,2c”,它的含义是第3个文件中的第1行和第2行与其他2个文件不匹配,分别为“d”和“b”。这3部分内容中的字符“c”表示需要修改的意思。 (4) sdiff命令的主要作用是合并2个文件,并以交互方式输出结果,请执行如下命令。 sdiff ex030504_01 ex030504_02 该命令执行后的效果如图389所示。 图388使用diff3命令对3个文件进行比较 图389使用sdiff命令对2个文件进行比较 可以看到,sdiff命令将2个文件全部显示出来,左侧是ex030504_01的内容,右侧是ex030504_02的内容。其中,第2行有“|”符号标识,这是因为2个文件在此处内容不同。 3.5.5逐字节对不同文件进行比较 如果需要逐字节对不同文件进行比较,那么可以使用cmp命令。 (1) 使用cp命令复制上一节创建的文件ex030504_01、ex030504_02并分别重命名为ex030505_01、ex030505_02,具体如下。 cp ex030504_01 ex030505_01 cp ex030504_02 ex030505_02 (2) 然后使用cmp命令对这两个文件进行比较,命令如下。 cmp ex030505_01 ex030505_02 该命令执行后的结果如图390所示。 图中提示“ex030505_01 ex030505_02 differ: byte3,line2”表示2个文件的第2行内容有差异。 注意: 使用cmp命令时,如果2个文件相同,比较完成后不显示任何提示; 如果文件不同,则将2个文件在逐字节比较过程中第1次出现不同时的行号及内容显示出来; 如果想列出2个文件所有不一样的地方,那么只需加上“l”参数即可,命令如下。 cmp -l ex030505_01 ex030505_01 该命令执行后的效果如图391所示。 图390使用cmp命令逐字节对不同文件进行比较 图391使用cmp命令标示出所有不一样的地方 图中第1个3的含义是2个文件的第3个字节有区别。在ex030505_01中是八进制142(即字符b),在ex030505_02中是八进制144(即字符d)。 3.5.6对有序文件进行比较 如果需要对2个有序文件进行比较,那么可以使用comm命令。 (1) 首先,使用cat命令分别创建ex030506_01和ex030506_02文件,并输入内容,具体如下。 cat > ex030506_01 aaa bbb ccc ddd 按下Ctrl+D键结束编辑,继续创建ex03050602文件。 cat > ex030506_02 bbb ccc eee 输入完毕后按下Ctrl+D键结束编辑,效果如图392所示。 (2) 然后,使用comm命令对2个文件进行比较,命令如下。 comm ex030506_01 ex030506_02 该命令执行后的效果如图393所示。 图392创建ex030506_01和 ex030506_02文件 图393使用comm命令对ex030506_01和 ex030506_02文件进行比较 可以看到,命令执行后的结果被分为了3列。第1列只显示在ex030506_01文件中出现的行,第2列只显示在ex030506_02文件中出现的行,第3列显示ex030506_01和ex030506_02文件中相同的行。 图394使用comm命令对无序文件 进行比较 请执行以下复制文件的命令。 cp ex030502 ex030506_03 cp ex030501 ex030506_04 上述文件复制完毕后,再执行以下命令。 comm ex030506_03 ex030506_04 执行该命令后的效果如图394所示。 注意: comm命令只适合对2个有序的文件进行比较,若待比较的文件无序,则会给出相应提示; 如图394所示,ex030506_04文件无序,因此提示“comm:file 2 is not in sorted order”。 3.5.7对文件内容进行剪切 cut是Ubuntu下常用的命令之一,它负责剪切数据,其用法如下。 (1) 首先,使用cat创建一个名为ex030507的文件,该文件的内容如下。 cat > ex030507 abc abc abc (2) 然后,使用以下命令截取文件中每行的第2个字符,命令如下。 cut -b 2 ex030507 该命令执行后的效果如图395所示。 从图中可以看到,ex030507文件中的每一行的第2个字符“b”被筛选出来。 (3) 接着,使用以下命令截取每行的第3个字符,命令如下。 cut -c 3 ex030507 该命令执行后的效果如图396所示。 图395截取每行的第2个字符 图396截取每行的第3个字符 注意: 从上面我们可以看到,似乎cut b与cut c并没什么区别,其实不然,cut b命令在处理中文文档时会出现乱码,而cut c命令则可以正常输出。 图397截取以字母“b”为分割的第 2个域 (4) 最后,使用下述命令截取以字母“b”为分割的第2个域,命令如下。 cut -d 'b' -f 2 ex030507 该命令执行后的效果如图397所示。 注意: d参数用于以字符“b”分割,f 参数用于截取以字母“b”为分割的第2个域。 3.5.8对文件内容进行粘贴 若需对多个文件的内容进行合并,可以使用paste命令。 (1) 首先,使用cat命令分别创建ex030508_01和ex030508_02文件,具体如下。 cat > ex030508_01 abc 123 cat > ex030508_01 def 456 该命令执行后的效果如图398所示。 (2) 然后,使用paste命令将ex030508_02文件的内容粘贴到ex030508_01文件中去,请执行以下命令。 paste ex030508_01 ex030508_02 该命令执行后的效果如图399所示。 图398创建ex030508_01和ex030508_02 文件并输入内容 图399使用paste命令将ex030508_02的内容 粘贴到ex030508_01中 3.5.9对文件内容进行统计 Ubuntu系统中wc命令的功能为统计指定文件中的字符数、单词数和行数,并将统计结果显示输出。 (1) 首先,执行以下命令创建ex030509文件。 cp ex030508_01 ex030509 然后,在当前目录执行ls命令查看文件是否创建成功。 ls 该命令执行后的效果如图3100所示。 图3100创建ex030509文件 (2) 使用wc命令统计文件中的字符数、单词数和行数,命令如下。 wc ex030509 该命令执行后的效果如图3101所示。 其中,前3个数字分别表示ex030509文件的行数、单词数,以及该文件的字符数。可以看到,ex030509文件中的内容共有2行,包括2个单词及8个字符。 (3) 如果只想查看文件中的字符数,执行如下命令即可。 wc -c ex030509 该命令执行后的效果如图3102所示。 图3101统计文件中的字符数、单词数和行数 图3102统计文件中的字符数 (4) 如果只想查看文件中单词数,执行如下命令即可。 wc -w ex030509 该命令执行后的效果如图3103所示。 (5) 如果只想查看文件中行数,执行如下命令即可。 wc -l ex030509 该命令执行后的效果如图3104所示。 图3103统计文件中的单词数 图3104统计文件中的行数 3.6文件查找 本节将学习文件查找的相关知识。Ubuntu系统由成千上万个文件组成,我们在日常使用Ubuntu时必须熟练掌握文件查找的功能,包括在硬盘上和数据库中查找文件或目录及其位置等。 3.6.1在硬盘上查找文件或目录 如果想要在本地硬盘中搜索文件或者目录,可以使用find命令完成这一操作。 (1) 使用模糊查询搜索当前工作目录下所有以ex开头的文件,命令如下。 find -name "ex*" 该命令执行后的效果如图3105所示。 可以看到,当前工作目录下所有以ex开头的文件都被列了出来。 (2) 使用find命令搜索一天之内被存取过的文件,命令如下。 find -atime -1 该命令执行后的效果如图3106所示。 命令执行完成后,一天之内被存取过的文件都被列了出来,其中大部分都是系统文件。 (3) 也可以使用find命令查找系统中为空的文件或者文件夹,命令如下。 find / -empty 该命令执行后的效果如图3107所示。 (4) 还可以根据需要查找系统中属于用户user01的文件,命令如下。 find / -user user01 该命令执行后的效果如图3108所示。 图3105搜索当前工作目录下所有以ex 开头的文件 图3106搜索一天之内被存取过的文件 图3107查找系统中为空的文件或者文件夹 图3108查找系统中属于用户user01 的文件 3.6.2在数据库中查找文件或目录 locate命令用于查找文件,它比find命令搜索速度快,让使用者可以更加快速地搜寻指定文件。 图3109使用locate命令查找user01目 录下所有以ex开头的文件 (1) 首先,使用locate命令查找user01目录下所有以ex开头的文件,命令如下。 locate /user01/ex 该命令执行的效果如图3109所示。 注意: locate命令在后台数据库中按文件名搜索,搜索速度比find更快,但对于刚建立的文件,立即使用该命令进行查找会搜索不到所创建的文件; 若执行locate命令时出现“Command ‘locate’ not found, but can be installed with: sudo apt install mlocate”提示,请按提示安装。 接下来,我们使用touch命令创建ex030602文件并使用locate命令查找,效果如图3110所示。 如果想使刚创建的文件被locate命令立即搜索到,必须以root用户登录执行updatedb命令,更新数据库。更新完毕之后再使用locate命令就能搜索到刚创建的文件,否则要等到第二天才能搜索到该文件,因为后台数据库默认一天更新一次。 该命令执行后的效果如图3111所示。 图3110使用locate命令搜索刚刚创建的文件 图3111使用updatedb命令更新数据库 后搜索刚刚创建的文件 可以看到执行完updatedb命令后,刚刚创建的ex030602文件已经被成功查找了出来。 (2) 然后,使用locate r命令搜索所有以02结尾的文件,命令如下。 locate -r 02$ 该命令执行后的效果如图3112所示。 图3112搜索所有以02结尾的文件 3.6.3查找指定文件或目录的位置 查找文件的命令除了find和locate之外,还有whereis命令,该命令会在特定目录中查找符合条件的文件。这些文件只能是源代码、二进制文件,或是帮助文件。 使用whereis命令查看命令ls的位置,命令如下。 whereis ls 该命令执行后的效果如图3113所示。 图3113使用whereis命令查看命令ls的位置 3.6.4查找可执行文件的位置 which命令也用于查找文件,该命令会在环境变量$PATH设置的目录里查找符合条件的文件。 使用which命令查看命令pwd的路径,命令如下。 which pwd 该命令执行后的效果如图3114所示。 图3114使用which命令查看命令pwd的路径 3.7磁盘管理 本节将学习在Ubuntu中如何进行磁盘管理,包括检查磁盘空间、挂载和卸载文件系统、显示和分配磁盘空间等。 3.7.1检查磁盘空间占用情况 检查磁盘空间占用情况的命令是df,它还可以显示文件系统的类型等信息。 (1) 首先,使用df h 命令显示磁盘空间,命令如下。 df -h 该命令执行后的效果如图3115所示。 图3115使用df h 命令显示磁盘空间 (2) 然后,使用df T命令列出文件系统的类型,命令如下。 df -T 该命令执行后的效果如图3116所示。 图3116使用df T命令列出文件系统的类型 (3) 最后,可以使用df t命令查看选定文件系统的磁盘信息,也可以使用df x命令不显示选定的文件系统的磁盘信息,命令如下。 df -t ext4 df -x ext4 该命令执行后的效果如图3117所示。 图3117查看选定文件系统的磁盘信息 3.7.2统计目录或文件所占磁盘空间大小 在Ubuntu系统中查看目录或文件所占磁盘空间大小的命令是du。 (1) 首先,使用du h命令查看chapter03目录占用的磁盘空间大小,命令如下。 du -h chapter03 该命令执行后的效果如图3118所示。 (2) 然后,使用cd命令切换到上一级目录并使用du a命令查看user01目录及其子目录和文件占用磁盘空间的大小,命令如下。 cd .. du -a user01 该命令执行后的效果如图3119所示。 图3118查看chapter03目录占用 的磁盘空间大小 图3119查看user01目录及其子目录和文件 占用磁盘空间的大小 (3) 最后,使用du s命令查看某一文件夹所占用磁盘空间的大小,命令如下。 du -s chapter03 该命令执行后的效果如图3120所示。 图3120查看某一文件夹所占用磁盘空间的大小 3.7.3挂载文件系统 mount命令用于将文件系统挂载到指定的挂载点上,本小节将介绍这一命令的基本用法,请按照以下步骤执行。 (1) 将U盘连接至系统后,按下Ctrl+Alt+T键打开终端,执行df命令可以看到系统显示其为/dev/sdb4。接下来执行以下命令对该U盘进行格式化。 mkfs.ext4 /dev/sdb4 (2) 上述命令将sdb4分区格式化为ext4文件系统,接下来创建一个目录作为其挂载点,并使用mount命令进行挂载,具体如下。 mkdir /mnt/quotadir mount /dev/sdb4 /mnt/quotadir mount | grep sdb4 可以看到,出现了如图3121中显示的“Permission denied”的提示,这时只需切换至root用户并再次执行上述所有命令即可,效果如图3122所示。 图3121创建文件夹时权限不足 图3122挂载U盘至文件夹 (3) 为此目录进行配额的权限分配,命令如下。 mount -o remount,usrquota,grpquota /mnt/quotadir/ mount | grep sdb4 该命令执行后的效果如图3123所示。 图3123进行配额的权限分配 3.7.4检查磁盘的使用空间与限制 因为Ubuntu是多用户多任务的操作系统,许多人共用磁盘空间,为了合理地分配磁盘空间,我们需要对其进行配额以便高效地使用磁盘空间。在Ubuntu中,通常使用quota命令来对磁盘进行配额,请按照以下步骤进行。 (1) 若尚未安装quota,则须使用root用户下载安装quota,命令如下。 apt install quota 该命令执行后的效果如图3124所示。 图3124安装quota命令 (2) 完成安装quota之后,在上一节的基础上使用quotacheck命令检查U盘空间配置,命令如下。 cd /mnt/quotadir ll quotacheck -avugn ll 该命令执行后的效果如图3125所示。 图3125使用quotacheck扫描U盘并建立相应文件 注意: 上述命令成功执行后,在当前目录下会产生aquota.user和aquota.group两个文件。 3.7.5打开磁盘空间限制 接下来需要启动quota服务以完成配额操作,命令如下。 quotaon -vug /mnt/quotadir/ 该命令执行后的效果如图3126所示。 图3126打开磁盘空间限制 3.7.6为指定用户分配限额 在上一节的基础上,可以使用edquota命令为用户或工作组指定磁盘配额。 (1) 使用edquota为user01用户指定限额,命令如下。 edquota -u user01 该命令执行后的效果如图3127所示。 图3127为user01用户指定限额 (2) 使用edquota为user01用户组指定限额,命令如下。 edquota -g user01 该命令执行后的效果如图3128所示。 图3128为user01用户组指定限额 (3) 使用edquota命令为磁盘配额限定时间,命令如下。 edquota -t 该命令执行后的效果如图3129所示。 图3129为磁盘配额限定时间 3.7.7显示用户或工作组的磁盘配额信息 在Ubuntu系统中显示磁盘已使用的空间与限制的命令是quota,它可以查询磁盘空间的限制,并显示已使用多少空间。 (1) 首先,使用quota命令显示用户user01的配额信息,命令如下。 quota -vus user01 该命令执行后的效果如图3130所示。 图3130显示用户user01的配额信息 (2) 然后,使用quota命令显示组user01的配额信息,命令如下。 quota -vgs user01 该命令执行后的效果如图3131所示。 图3131显示组user01的配额信息 3.7.8显示文件系统的配额信息 在Ubuntu系统中,如果需要显示文件系统的配额信息,那么可以使用repquota命令。 (1) 首先,使用repquota命令查看/mnt/quotadir目录的磁盘空间限制,命令如下。 repquota -u /mnt/quotadir 该命令执行后的效果如图3132所示。 图3132查看/mnt/quotadir目录的磁盘空间限制 (2) 然后,继续使用repquota命令显示用户或群组的所有空间限制,命令如下。 repquota -v /mnt/quotadir 该命令执行后的效果如图3133所示。 图3133显示用户或群组的所有空间限制 (3) 也可以使用repquota命令查看加入quota设置分区的磁盘使用状况,命令如下。 repquota -a 该命令执行后的效果如图3134所示。 图3134查看所有文件系统的磁盘使用情况 (4) 最后,测试配额是否生效,使用chmod命令将mnt目录及quotadir目录的权限设为所有人可读写执行(777),然后切换至user01用户向该文件夹内写入大文件,命令如下。 dd if=/dev/zero of=bigfile bs=400M count=3 该命令执行后的效果如图3135所示。 图3135向文件夹内写入大文件 3.7.9关闭磁盘空间限制 如果想要关闭指定文件系统的磁盘配额功能,可以使用quotaoff命令。 (1) 若只需关闭用户配额功能,则可以使用如下命令。 quotaoff -u /mnt/quotadir (2) 若只需关闭组配额功能,则可以使用如下命令。 quotaoff -g /mnt/quotadir (3) 若需显示命令执行过程,则可以使用如下命令。 quotaoff -v /mnt/quotadir 该命令执行后的效果如图3136所示。 图3136关闭所有配额功能 (4) 在关闭磁盘配额的前提下重新执行写入大文件的命令,效果如图3137所示。 图3137向文件夹内写入大文件 从图中可以看到,在关闭磁盘空间配额的情况下,可以成功写入大文件。 3.7.10卸载文件系统 在Ubuntu中,卸载文件系统的命令是umount。 (1) 首先,通过设备名卸载文件系统,命令如下。 umount -v /dev/sdb4 该命令执行后的效果如图3138所示。 图3138通过设备名卸载文件系统 (2) 其次,也可以通过挂载点卸载文件系统,命令如下。 umount -v /mnt/quotadir 该命令执行后的效果如图3139所示。 图3139通过挂载点卸载文件系统 3.8备份压缩 同Windows一样,Ubuntu系统中也有备份与压缩功能,接下来我们来学习这方面的内容,包括各个命令的使用方法。 3.8.1zip、unzip和zipinfo Ubuntu系统中压缩命令有很多,如果想要产生具有“zip”扩展名的压缩文件,那么我们就要使用zip命令。 (1) 执行touch命令创建一个名为ex030801的文件,然后执行以下命令将它进行压缩并另存为ex030801.zip。 zip ex030801.zip ex030801 该命令执行后的效果如图3140所示。 (2) 执行zip d命令删除压缩包ex030801.zip中的ex030801文件,命令如下。 zip -d ex030801.zip ex030801 该命令执行后的效果如图3141所示。 图3140压缩ex030801并另存 图3141删除压缩包ex030801.zip中的ex030801文件 可以看到,系统提示当前压缩包为空,说明文件删除成功。 (3) 向压缩文件ex030801.zip中添加ex030801文件,命令如下。 zip -m ex030801.zip ex030801 该命令执行后的效果如图3142所示。 (4) 如果我们已经有.zip类型的压缩文件,该如何对它进行解压并获取其中的文件呢?在Ubuntu中对.zip文件解压缩的命令是unzip。执行如下命令将实现对ex030801.zip进行解压缩并覆盖原文件。 unzip -o ex030801.zip 该命令执行后的效果如图3143所示。 图3142向压缩文件ex030801.zip中添加ex030801 文件 图3143解压缩ex030801.zip并覆盖 原文件 (5) 如果在解压缩过程中不想覆盖原文件,那么执行如下命令。 unzip -n ex030801.zip 该命令执行后的效果如图3144所示。 (6) zipinfo命令用来列出压缩文件信息。执行zipinfo命令可得知zip压缩文件的详细信息,具体如下。 zipinfo ex030801.zip 该命令执行后的效果如图3145所示。 图3144解压缩ex030801.zip且 不覆盖原文件 图3145列出压缩文件信息 3.8.2gzip、gunzip和gzexe 如果想要产生具有“.gz”扩展名的压缩文件,那么我们就要使用gzip命令。 (1) 首先,把当前目录下的每个文件压缩成.gz文件,具体命令如下。 gzip * 该命令执行后的效果如图3146所示。 (2) 压缩完成后,可执行以下命令完成对上例中每个压缩文件进行解压,并列出详细的信息,命令如下。 gzip -dv * 该命令执行后的效果如图3147所示。 图3146把当前目录下的每个文件压缩成.gz文件 图3147把每个压缩的文件解压并列出详细信息 (3) 然后,使用gunzip命令对压缩包进行解压。假定存在压缩文件ex030801.gz(若ex030801.gz不存在,可以使用命令gzip ex030801创建之; 若ex030801不存在,可以使用命令touch ex030801创建之),可执行以下命令对其解压。 gunzip ex030801.gz 该命令执行后,ex030801.gz被成功解压。我们也可以使用gzipd ex030801.gz对该压缩包解压,读者可自行尝试。 (4) 最后,创建一个名为ex030802的文件并使用gzexe命令压缩,命令如下。 gzexe ex030802 该命令执行后的效果如图3148所示。 如果想要解压缩该文件,那么我们只需加上d参数即可,如图3149所示。 图3148创建一个名为ex030802的文件 并使用gzexe命令压缩 图3149解压缩文件ex030802 3.8.3bzip2、bunzip2和bzip2recover 如果想要产生具有.bz2扩展名的压缩文件,那么就要使用bzip2命令。 (1) 首先,使用touch命令创建名为ex030803的文件,再使用bzip2命令进行压缩并查看,命令如下。 touch ex030803 bzip2 ex030803 ls 该命令执行后的效果如图3150所示。 图3150创建、压缩并查看文件 上述命令执行时会将文件ex030803删除,替换成ex030803.bz2。如果以前有ex030803.bz2则不会替换并提示错误。 (2) 然后,进行解压操作,bzip2和bunzip2命令都可完成该操作。执行以下命令。 bzip2 -d ex030803.bz2 该命令执行后的效果如图3151所示。 也可执行以下命令完成解压操作。 bunzip2 ex030803.bz2 该命令执行后的效果如图3152所示。 图3151使用bzip2命令进行解压 图3152使用bunzip2命令进行解压 注意: 如果在当前文件夹下没有文件ex030803,那么这里解压的时候不会输出任何提示,而是直接将原来的文件ex030803.bz2替换成ex030803; 若在当前文件夹下存在ex030803这一文件,则不会被替换,而是给出相应提示。 (3) 如果由于压缩包损坏而无法读取,那么这时候可以使用bzip2recover命令修复压缩包,命令如下。 bzip2recover ex030803.bz2 该命令执行后的效果如图3153所示。 图3153使用bzip2recover命令修复压缩包 可以看到,由于当前压缩包没有损坏,命令执行后提示用户无须修复。 3.8.4compress和uncompress 如果想要产生扩展名为.Z的压缩文件,那么就要使用compress命令。 (1) 使用touch命令创建名为ex030804的文件,再使用compress命令进行压缩,命令如下。 compress ex030804 该命令执行后的效果如图3154所示。 命令执行后,系统提示该命令未安装,这时我们只需切换至root用户并执行“apt install uncompress”命令即可,效果如图3155所示。 图3154使用compress命令进行压缩 图3155安装compress命令 (2) 命令安装完成后,切换至原用户并执行以下命令对ex030804进行压缩,效果如图3156所示。 compress -f ex030804 (3) 压缩完成后,会生成一个ex030804.Z的文件替代原文件,图3157所示为执行ls a查看后的效果。 图3156对ex030804进行压缩 图3157显示所有文件 (4) 如果想要对压缩后的文件进行解压,我们可以使用compress或者uncompress命令。执行以下命令。 compress -df ex030804.Z 该命令执行后的效果如图3158所示。 图3158使用compress命令解压缩 也可执行以下命令实现文件的解压。 uncompress ex030804.Z 该命令执行后的效果如图3159所示。 图3159使用uncompress命令解压缩 3.8.5uuencode和uudecode 本节将介绍uuencode和uudecode命令。uuencode编码后的资料都以begin开始,以end作为结束。 (1) 首先使用touch命令创建名为ex030805的文件,再使用uuencode命令进行编码,命令如下。 uuencode ex030805 该命令执行后的效果如图3160所示。 图3160创建名为ex030805的文件并使用uuencode命令进行压缩 上述命令执行后,系统提示uuencode未安装,这时只需切换至root用户并执行aptget install sharutils命令即可,效果如图3161所示。 图3161安装uuencode命令 (2) 命令安装完成后,执行以下命令对图片snali.jpg进行编码并查看。 uuencode snali.jpg snali.jpg >snali.jpg.uue cat snali.jpg.uue 该命令执行后的效果如图3162所示。 图3162对图片进行编码 (3) 编码完成后,为了方便查看结果,可将编码后的snali.jpg.uue文件移动至空白文件夹并进行解码,命令如下。 uudecode snali.jpg.uue 该命令执行后,若在当前文件夹下生成snali.jpg,则说明命令执行成功。读者亦可进行验证。 3.8.6dump和tar 本节将介绍dump和tar命令。 (1) 首先,使用dump命令将home目录内的文件进行备份,命令如下。 dump -0 -f home.dump /home 该命令执行后的效果如图3163所示。 图3163使用dump命令将目录内的文件进行备份 可以看到,系统提示dump命令未安装,此时只需切换至root用户并执行apt install dump即可,效果如图3164所示。 图3164安装dump命令 (2) dump安装完毕后,接下来执行以下命令进行备份。 dump -0 -f /tmp/boot.dump /boot 该命令执行后的效果如图3165所示。 图3165使用dump命令进行备份 (3) 也可以使用如下命令对user01文件夹进行备份。 tar cvf backup.tar /home/user01 该命令执行后的效果如图3166所示。 (4) 然后,使用tar命令将当前目录下所有文件打包并压缩归档到文件this.tar.gz中,具体如下。 tar czvf this.tar.gz ./ 该命令执行后的效果如图3167所示。 图3166使用tar命令进行备份 图3167将当前目录下所有文件打包并压缩 (5) 最后,将this.tar.gz文件移动至空白文件夹中并解压缩,具体如下。 tar xzvf this.tar.gz ./ 命令执行后,当前空白文件夹下将出现被压缩的所有文件。 3.9获取帮助 在使用Ubuntu系统时,可能会遇到各种问题。下面就来学习在遇到问题时该如何获取帮助。 3.9.1使用man获取帮助 在Ubuntu中可以使用man来获取帮助。 (1) 输入man ls查看ls命令的帮助手册,命令如下。 man ls 该命令执行后的效果如图3168所示。 图3168查看ls命令的帮助手册 可以看到,它会在左上角显示“LS(1)”,这里,“LS”表示手册名称,而“(1)”表示该手册位于第1章。 (2) 继续执行man sleep命令查看sleep命令的帮助手册,命令如下。 man sleep 该命令执行后的效果如图3169所示。 图3169查看sleep命令的帮助手册 可以看到,它会在左上角显示“SLEEP(1)”,在这里,“SLEEP”表示手册名称,而“(1)”表示该手册位于第1章。 (3) 如果记不清楚完整的命令,可以考虑用k参数,命令如下。 man -k sleep 该命令执行后的效果如图 3170所示。 图3170查找和sleep有关的帮助 3.9.2使用whatis获取帮助 如果想查看一个命令的功能,那么可以使用whatis命令。执行whatis ls命令可查看ls命令的功能,命令如下。 whatis ls 该命令执行后的效果如图3171所示。 图3171查看ls命令的功能 3.9.3使用help获取帮助 如果想查看一个内部命令的帮助信息,这时我们可以使用help命令。 (1) 执行help命令查看cd命令的帮助信息,命令如下。 help cd 该命令执行后的效果如图3172所示。 (2) 执行help d命令查看cd命令的简短描述,命令如下。 help -d cd 该命令执行后的效果如图3173所示。 图3172查看cd命令的帮助信息 图3173查看cd命令的简短描述 (3) 执行help s命令查看cd命令用法的简介,命令如下。 help -s cd 该命令执行后的效果如图3174所示。 (4) 使用help命令查看非内部命令ls,命令如下。 help ls 该命令执行后的效果如图3175所示。 图3174查看cd命令用法的简介 图3175查看非内部命令ls 可以看到,系统提示无法找到ls命令的帮助信息,建议尝试使用man k或info命令。 3.9.4使用info获取帮助 info命令也可用来获取帮助。我们执行如下命令查看who命令的帮助信息。 info who 该命令执行后的效果如图3176所示。 图3176查看who命令的帮助信息 3.10其他命令 本节简要介绍Ubuntu系统中的其他命令,包括清除屏幕信息、显示日期时间、查看和终止进程等。 3.10.1清除屏幕信息 清除屏幕信息的命令是clear,在终端上执行clear命令前,效果如图3177所示。 图3177使用clear命令前的终端 按Enter键执行clear命令后,效果如图3178所示。 图3178使用clear命令后的终端 可以看到,命令成功执行后,终端中显示的内容被全部清空。 3.10.2显示文本 (1) echo命令的功能是在显示器上显示一段文字,一般起到提示的作用,具体如下。 echo this is my message 该命令执行后的效果如图3179所示。 (2) 也可以使用echo命令输入某个变量,例如,可以定义一个名为“x”的变量并赋值为10,然后将其显示出来,具体如下。 x=10 echo $x 该命令执行后的效果如图3180所示。 图3179显示一段文字 图3180显示一个变量中存的值 (3) 如果只是想输入“$x”这个字符串,那么可以使用转义符号进行操作,具体如下。 echo -e \$x 图3181显示一个转义后的字符串 该命令执行后的效果如图3181所示。 这样,系统就把“$x”当做普通的字符串进行解析,而不是变量。 (4) 使用echo命令输出当前工作目录,具体如下。 echo $(pwd) 该命令执行后的效果如图3182所示。 (5) 也可以使用以下命令输出某个用户的home目录名。 echo ~user01 该命令执行后的效果如图3183所示。 图3182输出当前工作目录 图3183输出某个用户的home目录名 命令执行完成后,会输出浪纹线后指定用户的home目录名。如果没有指定用户名,则是当前用户的home目录。 3.10.3显示日期时间 (1) 显示日期和时间的命令是date,执行以下命令。 date 该命令执行后的效果如图3184所示。 (2) 如果只想显示年月日中的某一个,可以执行以下命令。 date +%y date +%m date +%d 该命令执行后的效果如图3185所示。 图3184显示日期和时间 图3185显示年月日 可以看到,当前时间为2020年09月21日。 (3) 除了date命令外,cal命令也可以显示日历及当前日期,执行以下命令。 cal 该命令执行后的效果如图3186所示。 (4) 也可以使用cal命令查看当前年份的日历,命令如下。 cal -y 该命令执行后的效果如图3187所示。 图3186显示日历及当前日期 图3187查看当前年份的日历 3.10.4查看当前进程 (1) 执行查看当前进程的命令是ps,效果如图3188所示。 图3188查看当前进程 结果默认会显示4列信息,具体如表34所示。 表34ps命令的结果及描述 英文简称PIDTTYTIMECMD 中文描述运行中的命令(CMD)的进程编号命令所运行的位置(终端)运行中的该命令所占用的CPU处理时间该进程所运行的命令 (2) 接下来查看所有进程,命令如下。 ps -A 该命令执行后的效果如图3189所示。 (3) 最后查看user01用户的所有进程,命令如下。 ps U user01 该命令执行后的效果如图3190所示。 图3189查看所有进程 图3190查看user01用户的所有进程 3.10.5终止某一进程 (1) 如果想关闭图3188中PID为2315的进程,执行以下命令。 kill -9 2315 上述命令成功执行后,此进程被关闭,也就是系统将退出终端。 (2) 也可以根据程序名终止某一进程,例如,想终止程序名为sendmail的这一进程,可执行以下命令。 ps -ef | grep sendmail pkill sendmail 上述命令成功执行后,程序名为sendmail的进程将被终止。 (3) 还可以使用killall命令来实现pkill的功能,接下来仍以终止程序名为sendmail这一进程为例,执行以下命令。 ps -ef | grep sendmail killall -9 sendmail 若killall命令被成功执行,则进程sendmail将被关闭。 3.10.6显示最近登录系统的用户信息 显示最近登录系统的用户信息的命令是last,在终端上输入以下命令。 last 该命令执行后的效果如图3191所示。 图3191显示最近登录系统的用户信息 结果默认会显示6列信息,表35展示了执行该命令后,结果的前3行及其释义。 表35last命令的结果及释义 序号用户名终端登录IP或者内核开始时间结束时间持续时间 1user01tty7:0Wed Jun 14 23:09goneno logout/ 2rebootsystem boot4.8.054genericWed Jun 14 23: 08still running/ 3user01tty7:0Mon Jun 12 04:09crash2+18:58 3.10.7显示历史命令 显示历史命令的命令是history,系统默认保留最近执行的1000条命令。图3192显示了执行history之后的结果,该结果分为2列,第1列为执行过的命令的编号,第2列为具体的命令。 也可以使用如下命令显示最近执行过的10条命令。 history 10 该命令执行后的效果如图3193所示。 图3192显示历史命令 图3193显示最近执行过的10条命令 从图中可以看到,到目前为止在终端上一共执行了513条命令,最近10条命令为第504条到第513条。 注意: 成功执行history命令之后,系统默认将会显示最近执行的1000条命令,这1000条命令由~/.bash_history里的命令及当前Shell中命令所组成。 若需修改这一默认命令数目,则可执行以下操作: sed -i 's/^HISTSIZE=1000/HISTSIZE=300/' /etc/profile source /etc/profile (使其生效) 其中,HISTSIZE=1000表示显示最近执行的1000条命令,我们将其值修改为300。上述命令成功执行后,history执行时只会显示最近执行的300条命令。 3.10.8超级权限用户及操作 在Ubuntu系统中的权限分为超级(root)用户权限和普通用户权限,两者的主要区别如表36所示。 表36超级用户与普通用户的区别 序号超 级 用 户普 通 用 户 1没有磁盘空间的限制可使用的磁盘空间有限制 2对所有文件都具有读写和修改的权限只有文件的所有者具有文件的修改权限 3可以使用任何命令可以使用大部分命令,某些命令如果没有权限可以使用sudo申请root权限 以用户执行命令为例,普通用户可以被允许使用sudo命令,临时赋予root权限,但是必须要将其加入到sudoers用户组里,具体步骤如下。 (1) 首先,在普通用户的字符界面下执行halt命令,具体如下。 halt 该命令执行后的效果如图3194所示。 图3194普通用户执行halt命令 可以看到,系统提示由于权限不够无法执行该操作。 (2) 然后,使用sudo命令进行操作,具体如下。 sudo halt 该命令执行后的效果如图3195所示。 系统提示输入当前用户user01的密码,如果密码输入错误,系统将提示重新输入,输入正确后可能会出现如图3196所示的提示。 图3195使用sudo命令执行halt 图3196密码输入正确后出现的提示 这是因为user01用户是普通用户,不具有超级用户的权限,它不在具有超级用户权限的用户组sudoers的列表里。 (3) 使用su命令切换至root用户并执行以下命令以完成将普通用户user01加入具有超级用户权限的 sudoers用户组内。 adduser user01 sudo 该命令执行后的效果如图3197所示。 图3197切换至root用户并将user01加入sudoers列表里 这时切换至user01用户后继续执行sudo halt命令,系统将自动关闭,这说明用户user01已经被成功加入超级用户组并取得超级用户的权限。 3.10.9定义别名 (1) alias命令用来设置命令的别名。可以通过使用该命令将一些较长的命令进行简化,具体如下。 alias l='ls' l ls 上述命令执行的效果如图3198所示。 图3198设置命令的别名 可以看到,我们将ls命令的别名设置为“l”,执行“l”命令后会得到与ls命令相同的结果。如果要删除“l”这个别名,只需执行unalias l即可。 (2) 也可以使用alias命令列出当前系统中所有的别名及其对应的命令,具体如下。 alias 该命令执行的效果如图3199所示。 图3199列出当前系统中所有的别名及其对应的命令 (3) 我们已经设置ls命令的别名为“l”,这时我们将date命令的别名也设置为“l”,尝试以下命令。 alias l='date' l 上述命令执行的效果如图3200所示。 图3200将date命令的别名也设置为“l” 可以看到,命令成功执行后,别名“l”被设置为date命令,自动覆盖之前设置的ls命令。这也是为什么我们在最初执行“alias l='ls'”时无须查看“l”是否被设置为其他命令的别名,因为它会被自动覆盖。 本章小结 在Ubuntu字符界面下完全使用命令来进行所有操作。在本章中,我们仅介绍了最为常用的命令,大致包括: 用户登录与注销、关闭和重启系统; 目录与文件的更改、创建、删除、移动等; 文件内容的显示及剪切、粘贴、比较和统计; 在硬盘和数据库中查找文件或目录及其位置; 检查磁盘空间占用情况、挂载文件系统、分配和显示配额、卸载文件系统等; 压缩和解压缩、备份和恢复; 获取帮助以及其他一些常用的命令。 习题3 1. 选择题 (1) 普通用户登录后,以下()命令可以打开新终端。 A. Ctrl+Alt+RB. Ctrl+Alt+T C. Ctrl+Alt+YD. Ctrl+Alt+U (2) 普通用户打开Shell后,以下()命令可以切换至root账户。 A. suB. adduserC. loginD. exit (3) ()命令不能执行关闭系统操作。 A. shutdown hB. haltC. shutdown rD. poweroff (4) 如果想要使用init命令重启,那么应该使用以下()级别。 A. 1B. 3C. 5D. 6 (5) ()命令不能执行重启系统的操作。 A. shutdown hB. init 6C. shutdown rD. reboot (6) ()命令可以创建名为abc的文件。 A. touch abcB. mkdir abcC. rmdir abcD. cd abc (7) Ubuntu系统的文件不包括()权限。 A. 写入B. 执行C. 删除 D. 读取 (8) 如果想查看文件的权限,那么需要使用()命令。 A. ls lB. ls dC. ls mD. ls R (9) ()按键是more命令向后翻页的快捷键。 A. DelB. EnterC. SpaceD. Page Up (10) 如果想以逆序查看文件内容,那么sort命令后需要加上()参数。 A. aB. dC. mD. r (11) cut b命令在处理中文文档的时候会出现乱码,而()命令可以正常输出。 A. cut aB. cut cC. cut dD. cut e (12) 使用wc命令统计文件中字符数,()命令可以正确执行。 A. wc cB. wc lC. wc wD. wc d (13) 如果我们想使刚创建的文件被locate命令立即搜索到,那么我们可以执行()命令。 A. updateB. update datebase C. updatedbD. updating (14) 如果我们需要使用locate命令搜索当前工作目录下以“test”结尾的文件,那么以下()命令是正确的。 A. locate r test$B. locate r test# C. locate r test%D. locate r test$* (15) 如果在使用unzip命令解压缩过程中不想覆盖原文件,那么执行()命令。 A. unzip nB. unzip neC. unzip mD. unzip a (16) ()仅用于查看一个内部命令的帮助信息。 A. whatisB. helpC. manD. info (17) 如果想使用echo命令输出pwd命令的结果,()命令可以正确执行。 A. echo #(pwd)B. echo %(pwd) C. echo pwdD. echo $(pwd) (18) 如果想使用date命令输出当前的年份,()命令可以正确执行。 A. date +%yB. date +%mC. date +%dD. date +%w (19) ()选项不是ps命令执行后的结果。 A. PIDD.B. TTYC. CMDD.D. DATE (20) ()选项不是last命令执行后的结果。 A. 用户名B. 密码 C. 开始时间D. 结束时间 2. 填空题 (1) Ubuntu系统里具有最高权限的用户名是。 (2) 如果想要退出Shell,那么我们要使用命令。 (3) 如果想要创建可以立刻使用的账户,那么我们需要使用命令。 (4) 在Ubuntu系统中,显示当前工作目录的命令是。 (5) 如果我们想要切换工作目录,那么我们需要使用命令。 (6) 使用cat命令创建文件后系统提示输入内容,按下可以结束输入。 (7) 如果使用chmod命令给一个文件赋予444权限,那么任何人对该文件都具有权限。 (8) 使用less命令分页显示文件内容时,如果想翻到上一页需要按下键。 (9) head命令默认显示文件的前行。 (10) 命令可以对3个文件的内容进行比较。 (11) 命令 /dev/sdb4将sdb4分区格式化为ext4文件系统。 (12) 使用quotacheck命令检查U盘空间配置后,会生成aquota.user 和文件。 (13) 如果想要产生具有“zip”扩展名的压缩文件,那么我们就要使用命令。 (14) 如果由于压缩包损坏而无法读取,那么这时候可以使用命令修复压缩包。 (15) 在解压以“.z”结尾的压缩文件时,我们可以使用compress df或者命令。 (16) 在使用Ubuntu系统时,如果我们遇到各种问题需要查看某条命令的帮助手册时,应该使用命令。 (17) 显示历史命令的命令是history,系统默认保留最近执行的条命令。 (18) 普通用户可以被允许使用命令,临时赋予root权限。 (19) 如果要删除“w”这个别名,我们只需执行即可。 (20) 执行命令可以完成将普通用户user01加入具有超级用户权限的 sudoers用户组内的操作。 3. 简答题 (1) 说一说Ubuntu系统内部命令和外部命令的区别。 (2) 用户在登录系统输入密码时,会显示出来吗?为什么? (3) 在使用useradd和adduser命令创建用户时,我们需要注意哪些地方? (4) 请说出修改当前用户密码的详细步骤。 (5) 如果想使用rmdir命令删除某个文件夹(文件夹内包含子目录与文件),该如何操作? (6) cat命令有哪些功能? (7) less命令和more命令的区别是什么? (8) 举例说一说diff、diff3和sdiff之间的区别。 (9) 在使用Ubuntu系统时,为什么要对磁盘进行配额分配? (10) 用自己的话总结一下普通用户和root账户之间的区别。