时间:2017-04-06注:本文部分内容摘自《Linux命令行与shell脚本编程大全》一书,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第三章学习总结第三章:基本的bashshell命令本章内容:使用shellbash手册浏览文件系统文件和目录列表管理文件和目录查看文件内容3.1启动shellGNUbashshell可以提供支持交互式访问Linux系统。/etc/passwd文件包含所有系统用户帐户的列表和每个用户的基本配置信息。以下是从/etc/passwd文件中获取的示例条目:shell:x:1001:1003::/home/shell:/bin/bash每个条目都有七个字段,用冒号分隔。大多数条目将在第7章中解释,最后一个字段指定用户使用的shell程序。3.2Shell提示一旦启动终端仿真包或登录到Linux虚拟控制台,您将看到shellCLI提示。提示符是shell世界的大门,您可以在其中输入shell命令。默认的bashshell提示符是一个美元符号($),表示shell正在等待用户输入。Shell提示不是静态的。您可以根据需要更改它。第6章介绍了如何修改shellCLI提示符。Tips:如果你还是CLI新手,请记住在输入shell命令后,你需要按下回车键让shell执行你输入的命令。3.3bash手册大多数Linux发行版都带有在线手册,用于查找有关shell命令和其他GNU工具的信息。熟悉手册对使用各种Linux工具时大有裨益,尤其是当你必须搞清楚各种命令行参数时。man命令用于访问存储在Linux系统上的手册页。例如:manls,查找ls命令的手册页。阅读手册页后,您可以按q键退出。提示:如果您是bashshell的新手,手册页一开始可能不是很有用。但是,如果您养成阅读手册的习惯,尤其是DESCRIPTION部分的第一段或前两段,最终您会掌握所有技术术语,并且手册页会变得越来越有用。提示:bash手册甚至包括对自身的参考。键入manman以查看与man关联的手册页。手册页将与命令相关的信息分成不同的部分。各部分习惯命名标准如下:Name:显示命令名称和简短描述Synopsis:命令语法Configuration:命令配置信息Description:命令一般描述Options:命令选项描述ExitStatus:命令退出状态指示ReturnValue:命令的返回值Errors:命令的错误信息Environment:描述使用的环境变量Files:命令使用的文件Versions:命令的版本信息ConformingTo:命令遵循的标准Notes:其他帮助informationBugs:提供提交bugs的方式Example:展示命令的用法Authors:命令的开发者信息Copyright:命令源代码的版权状态SeeAlso:与该命令类型相关的其他命令Tip:不记得命令名称怎么办?可以使用关键字搜索手册页。语法是:man-k关键字。例如,要查找与终端命令相关的命令,请输入man-kterminal。除了节的命名约定外,手册页也有相应的内容区域。每个内容区域都分配有一个编号。从1到9,如下:1:可执行程序或shell命令2:系统调用3:库调用4:特殊文件5:文件格式和约定6:游戏7:概述,约定8:超级用户和系统管理员命令9:内核例程可以使用命令mannumberls,输入man1ls阅读第1部分。3.4浏览文件系统当您登录系统并获得shell命令提示符时,您通常位于主目录中。3.4.1Linux文件系统Linux虚拟目录界面只包含一个基本目录,称为根(root)目录。根目录下的目录和文件按照访问的目录路径一一列出。提示:您会注意到Linux使用正斜杠(/)而不是反斜杠()来分隔文件路径中的目录。在Linux中,反斜杠用于标识转义字符,如果在文件路径中使用,可能会导致各种问题。如果您以前使用过Windows环境,则需要一点时间来适应。Linux文件系统结构是从Unix文件结构演变而来的。在Linux文件系统中,常用目录名来表示一些常用的功能。一些常见的Linux顶级虚拟目录及其内容如下:/:虚拟目录的根目录。这里通常不存放文件/bin:二进制目录,存放很多用户级的GNU工具/boot:启动目录,存放启动文件/dev:设备目录,Linux创建设备节点的地方/etc:系统配置文件目录/home:主目录,Linux创建用户目录/lib:library目录,存放系统和应用程序库文件/media:media目录,可移动媒体设备的公共挂载点/mnt:挂载目录,另一个可移动媒体的公共挂载点devices/opt:可选目录,常用于存放第三方软件包和数据文件/proc:进程目录,存放现有硬件和当前进程的信息/root:root用户家目录/sbin:系统二进制文件目录,存放许多GNU管理员工具/run:运行目录,存放系统运行时的运行时数据/srv:服务目录,存放本地服务的相关文件/sys:系统目录,存放相关系统硬件信息文件/tmp:临时目录,其中可以创建和删除临时工作文件/usr:用户二进制目录,大量用户级GNU工具和数据文件存放于此/var:变量目录,用于存放经常变化的目录3.4.2Linux文件上遍历目录系统,您可以使用切换目录命令cd将shell会话切换到另一个目录。命令格式:cddestination命令说明:cd命令可以接受单个参数destination,用于指定要切换到的目录名。如果cd命令没有指定目标路径,它将切换到用户主目录。命令演示:cdtestdemo说明:进入名为test的目录destination参数有两种表示方式:一种是使用绝对路径,另一种是使用相对文件路径。绝对文件路径:绝对文件路径始终以正斜杠(/)开头,表示虚拟文件系统的根目录。提示:切换到新的当前工作目录时使用pwd命令是个好习惯。因为许多shell命令在当前工作目录中运行,所以在发出命令之前,您应该始终确保您位于正确的目录中。相对文件路径:相对文件路径允许用户根据当前位置指定目标文件路径。相对文件路径中可以使用两个特殊字符:单点(.):表示当前目录双点(..):表示当前目录的父目录3.5文件和目录列表了解哪些文件是在系统中,您可以使用列表命令(ls)。3.5.1基本列表功能命令格式:ls命令说明:显示当前目录下的文件和目录命令格式:ls-F命令格式:显示当前目录下的文件和目录,目录后加正斜杠,Add执行文件后带星号命令格式:ls-a命令描述:显示当前目录下的文件和目录,包括隐藏文件和普通文件命令格式:ls-F-R命令描述:显示当前目录下的文件和目录directory,递归显示子目录中的文件提示:选项不必像示例中那样单独输入:ls-F-R。它们可以按如下方式合并:ls-FR。3.5.2显示长列表命令格式:ls-l命令说明:显示当前目录下的文件和目录,包括目录下每个文件的详细信息,每行包含文件或目录的以下信息:文件类型,例如目录(d)、文件(-)、字符文件(c)或块设备(b);文件权限(见第6章);文件的硬链接总数;文件所有者的用户名;文件所属组的组名;文件的大小(以字节为单位);文件的最后修改时间;文件名或目录名。提示:不要忘记可以组合多个参数。有些参数组合既能显示出需要的内容,又便于记忆,例如:ls-alF。3.5.3过滤输出列表命令格式:ls-lstudy命令说明:显示当前目录下的文件和目录,根据字符串过滤文件或目录当用户指定特定文件名作为过滤器时,ls命令只会显示文件信息。有时您可能不知道要查找的文件的确切名称。ls命令可以识别标准通配符并将它们用于过滤器中的模式匹配:问号(?):代表一个字符星号(*):代表零个或多个字符方括号([ab]):代表a或b感叹号([!a]):表示不包含a3.6处理文件shell提供了很多操作Linux文件系统上文件的命令。3.6.1创建文件命令:touch命令格式:touch文件名命令说明:使用touch创建文件命令demo:touchtestdemo说明:创建文件名为testtouch命令修改文件修改时间命令格式:touchfilename命令描述:使用touch文件修改时间3.6.2复制文件命令:cp命令格式:cpsourceobjecttargetobject命令描述:copysourceobjecttotargetobjectcpsourcedestination当source和destination参数为文件名时,cp命令将源文件复制到一个名为destination的新文件中。cp-isourceobjecttargetobject复制文件时,如果目标文件已经存在,询问是否需要覆盖已有文件。cp-Rsourceobjecttargetobject可以使用cp-R在一条命令中递归复制整个目录的内容。3.6.3Tab键自动补全Tab键自动补全允许您在输入文件名或目录名时按下Tab键,让shell帮助补全内容。3.6.4链接文件类似于Windows快捷方式。创建文件的快捷方式。比较难理解。3.6.5重命名文件在Linux中,重命名文件称为移动。mv命令可以将文件和目录移动到另一个位置或重命名它们。命令:mv命令格式:mvsourceobjecttargetobject命令说明:将源对象移动到目标对象或将源对象重命名为目标对象提示:与cp命令类似,也可以在mv中使用-i参数命令。这样,当命令尝试覆盖现有文件时,系统会提示您。3.6.6删除文件在Linux中,删除(deleting)称为移除(removing)。命令:rm命令格式:rmfile命令描述:删除名为file的文件命令格式:rm-ifile命令描述:删除文件时,提示是否确认删除。3.7使用目录3.7.1创建目录在Linux中创建目录非常简单,只需使用mkdir命令即可。命令:mkdir命令格式:mkdir目录名命令描述:创建一个指定目录名的目录命令格式:mkdir-p目录名/子目录命令描述:通过添加-p参数,同时创建多个目录和子目录3.7.2删除目录命令:mkdir命令格式:mkdir目录名命令描述:删除指定目录名的目录,目录必须为空才能删除命令:rm命令格式:rm-r目录名命令描述:删除指定目录名的目录指定目录名,将删除目录下的子目录和文件命令:rm命令格式:rm-rf目录名命令描述:删除目录及其所有内容。rm-rf命令既没有警告信息也没有声音提示。这当然是一个危险的工具,尤其是在具有超级用户权限的情况下。谨慎使用并仔细检查您所做的是否符合预期。3.8查看文件内容3.8.1查看文件类型命令:file命令格式:file文件名命令描述:查看文件类型3.8.2查看整个文件Linux上有3个不同的命令来完成这个任务。cat命令,更多命令,更少命令。命令:cat命令格式:cat文件名命令描述:查看指定文件的内容命令格式:cat-n文件名命令描述:查看指定文件的内容,-n参数会给所有行加上行号。命令格式:cat-b文件名命令说明:查看指定文件的内容,-b参数会在有文字的行后面加上行号。命令格式:cat-Tfilename命令说明:查看指定文件的内容,-T参数会将文本中所有制表符替换为^I字符组合。命令:more命令格式:morefilename命令描述:查看指定文件的内容命令:less命令格式:lessfilename命令描述:查看指定文件的内容3.8.3查看部分文件命令:tail命令格式:tailfilename命令描述:查看指定文件的最后10行内容命令格式:tail-n文件名命令描述:查看指定文件的最后n行内容命令格式:tail-f文件名命令描述:查看指定文件的内容。用于实时监控系统日志文件。命令:head命令格式:headfilename命令描述:查看指定文件的前10行命令格式:head-nfilename命令描述:查看指定文件的前n行3.9小结本章介绍shell提示符下的操作基础Linux文件系统知识。主要介绍cd、ls、mv、rm、mkdir、rmdir、cat、more、less、tail、head命令。本章学习命令个人总结如下:cd:切换或进入目录ls:显示当前目录下的目录和文件mv:移动或重命名目录或文件rm:删除目录或文件mkdir:创建目录rmdir:删除目录cat:查看文本more:查看文本文件全部内容less:查看文本文件全部内容tail:查看文本文件尾部部分内容head:查看内容文本文件的头部
