[Linux-操作系统(第3版)][电子课件]-[264页]

PPT
  • 阅读 52 次
  • 下载 0 次
  • 页数 264 页
  • 大小 689.265 KB
  • 2022-11-26 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档50.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
[Linux-操作系统(第3版)][电子课件]-[264页]
可在后台配置第一页与第二页中间广告代码
[Linux-操作系统(第3版)][电子课件]-[264页]
可在后台配置第二页与第三页中间广告代码
[Linux-操作系统(第3版)][电子课件]-[264页]
可在后台配置第三页与第四页中间广告代码
[Linux-操作系统(第3版)][电子课件]-[264页]
[Linux-操作系统(第3版)][电子课件]-[264页]
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 264
  • 收藏
  • 违规举报
  • © 版权认领
下载文档50.00 元 加入VIP免费下载
文本内容

【文档说明】[Linux-操作系统(第3版)][电子课件]-[264页].pptx,共(264)页,689.265 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-54854.html

以下为本文档部分文字说明:

第3章shell与shell基本操作3.1shell基本功能与基本概念3.2Linux系统的基本命令3.3服务和软件包管理*3.1shell基本功能与基本概念shell作为操作系统的外壳,为用户提供使用操作系统的接口。在UNIX/Linux中有多种shell,但在大多数情况下,默认使用的

shell是bash或bsh(简称sh)。本书所用系统默认的shell均为bash(BourneagainShell),它包含了bsh的所有特性。3.1.1shell基本功能shell是用户和Linux内核之间

的接口程序,人机交互的桥梁。功能有六:命令解释执行文件名及各种替换I/O重定向通信管道建立系统环境设置shell编程3.1.2字符与保留字1.字符1)白空格2)通配符3)注释符与注释4)转义字符5)普通字符1)白空格在UNIX/Linux系统中,空格

和Tab称为白空格(WhiteSpace),主要用于命令行中命令名、参数及选项的分隔。在特殊情况下,白空格中也可包含回车字符。2)通配符*:代表从它所在位置开始的任何字符串,但,文件名中的“.”和路径名中“/”必须显式匹配。?:代表它所在位置上的任何单个字符。[]:每次只匹

配“[]”中字符的一个。方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符“-”组成。通配符含义举例模式串意义*当前目录下所有文件名,但不包括“.”开头的文件。*Text*当前目录下所有文件名中包含有

Text的文件,但不包括“.”开头的文件[ab-fm]*当前目录下所有以a、b、c、d、e、f和m开头的文件名[ab-fm]?当前目录下所有以a、b、c、d、e、f和m开头且后面只跟一个字符的文件名[!ab-fm]?[^ab-fm]?当前目录下所有不以a、b、c、d、e

、f和m开头且后面只跟一个字符的文件名/dev/sd?目录/dev下所有以sd开头且只有三个字符的文件名3)注释符与注释“#”可以引导注释。但若在行中需要使用“#”开始引导注释,则“#”前至少要有一个白空格。规定从字符“#”开始以后到行末的部分作为注释,因此以“#”开

头的行是注释行。以下情况不能引导注释:$#表示命令行参数的个数,而${#name}表示变量name的值作为字符串的长度。4)转义字符UNIX/Linux系统中还有一个特殊字符“\”,用于对某些特殊字符的表示,基于此,字符“\”被称为转

义字符(ESCapechar)。Shell中“\”的作用与在C语言中的作用类似。部分由“\”转义的特殊字符如表3-2所示。常用转义字符字符意义字符意义字符意义\a响铃符\x??16进制表示\\\\b退格键\0???8进制表示\``\f换页

\tTab键\””\n换行\r回车\eESC2.特殊键特殊键意义Ctrl+D结束当前程序输入或结束当前程序,或从系统中注销Ctrl+C终止当前程序的执行Ctrl+\终止当前程序的执行(系统内部处理时不同于Ctrl+C),可能产生内存映像文件Ctrl+Z挂起当前程

序执行Ctrl+S/Ctrl+Q暂停/继续屏幕的输出滚动,必须配合使用ScrolLock暂停/继续屏幕的输出滚动,开关键Ctrl+Alt+Del默认动作为重启系统Alt+F#字符终端切换,如Alt+F2将终端切换至F2Ctrl+Alt+F#从图形界面切换终端到字符终端,如Ctrl+Alt+F1

从图形界面切换至F13.保留字!,[,],(,),{,},break,continue,cd,echo,eval,exec,exit,export,function,getopts,hash,pwd,read,readonly,return,select,set,s

hift,test,time,trap,type,ulimit,unset,umask,wait,for,do,done,case,in,esac,if,else,elif,fi,while,until。3

.1.3文件命名及文件类型1.文件与文件名2.文件类型1.文件与文件名UNIX/Linux的文件均为无结构的字符流。文件名是文件的一种标识,一般情况下,它由字母、数字、下画线和圆点组成的字符串构成。在实际应用中应该使用具有实际意义的文件

名。Linux支持长文件名,但限制在255个字符以内。为了便于管理和识别,用户可以把扩展名作为文件名的一部分,用圆点“.”区分文件名和扩展名。2.文件类型UNIX/Linux系统中有三种基本的文件类型:普通

文件目录文件设备文件1)普通文件普通文件是用于存放数据的文件。文本文件:以可阅读的ASCII码形式存储,大多数情况下,是以“行”为基本结构的。二进制文件:是人们一般不能直接读懂,只有通过相应的

软件才能对其进行操作的文件。一般是经编译程序编译后生成的可执行程序、图形、图像或声音等。2)目录文件目录文件用于存储一组相关的文件项信息或文件说明信息,其中包括文件名及其属性的信息。在UNIX/Linux

系统中,目录只包括文件名和i节点号等相关信息,而文件的属性信息保存在i节点信息中。目录文件在形式上同普通文件一样,但具有目录属性,只能用目录管理命令来访问和管理。关于目录的说明一个目录文件内至少要有两个文件项:.—当前目录;..—上级

目录。目录文件简称为目录或子目录,在图形界面下称为文件夹。因为目录也是文件,所以它的命名规则与文件命名规则相同。3)设备文件UNIX/Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I

/O设备的使用和对一般文件的使用一样,不必了解I/O设备的细节。为了区分普通文件、目录文件和不同设备文件之间的不同,系统把设备文件称为“设备特别文件”,简称为设备文件。常见设备文件种类块设备文件(b):以块方式存取的设备,如硬

盘、磁盘、磁带等。字符设备文件(c):以字符方式存取的设备,如字符打印机、显示器等。符号链接(l):用于通过此文件的内容指向它所链接的文件或资源。管道设备文件(p):用于进程之间通信的先进先出(FIFO)“临时文件”。两类管道设备

无名管道:主要用于有直接继承关系的父子进程之间的通信。当创建无名管道的进程结束后,无名管道自动消失。命名管道:是一种特殊的设备文件,在文件系统里以文件形式的存在。由于是以文件形式存在的,使得不论是否有家族关系的进程间都可使用其进行通信。在通信结束后,若不主动删除它,它不会自动消失。两类文件链接

硬链接(-):两个或多个文件名共用一个文件体,也就是说一个文件可以具有多个不同的名字,但它们具有相同的i节点号。符号链接(l):与硬链接不同,它们是不同的文件,各有自己的i节点,但可以通过符号链接文件的内容访问被链接文件。符号链接也叫软链接,在Windows系统中被

称为快捷方式。MACOS中称为替身。3.1.4目录结构与路径UNIX/Linux系统以文件目录的方式来组织和管理系统中的所有文件,即采用树型目录结构组织文件系统。整个文件系统只有一个“根”(root,用“/”表示)。在根上分“杈”(directory)

,任何一个分杈上都可以再分杈,也可以长出“叶子”。“根”和“杈”在被称为“目录”或“文件夹”,而“叶子”则是一个个文件。UNIX/Linux系统的目录结构2.工作目录、用户主目录与路径1)工作目录自从用户登录到系统中后,每时每刻都“处在”某个目录之中,此目录被称为工作目录或当前目录(Work

ingDirectory)。工作目录用“.”表示,且可根据需要而随时改变。用户主目录默认情况下,每个用户都有自己的主目录,不同用户的家目录一般互不相同。root用户的主目录为/root,其他用户的家目录是在/home下的与登录名相同的目录。可

以通过“~”字符或环境变量HOME来引用自己的家目录。默认情况下,用户登录到系统之初,其主目录或家目录(HomeDirectory)就成为其工作目录。2)路径(相对路径或绝对路径)路径是指从树型目录中的某个目录到另一个文件

或目录的路线。路径表示符是由它所经过的目录名,中间用“/”链接构成的。文件在文件系统中的位置可以由相对路径或绝对路径来决定。绝对路径是指从“根”开始的路径;相对路径是从用户工作目录开始的路径。绝对路径是

确定不变的,而相对路径则随着用户工作目录的变化而不断变化。物理路径和逻辑路径在引入链接的文件系统中,从某位置到另一位置的路径可能不只一个,因此又有物理路径和逻辑路径之分。路径示例处在图3-1中di

r目录的用户要访问目录usrn中的文件file1,可通过相对路径../../usrn/或绝对路径/home/usrn/来实现,此时带有路径的文件名可表示为../../usrn/file1或/home/usrn/file1

。这种带有路径的文件名通常也称为文件名。3.1.5命令格式与命令行编辑用户登录到系统后,可以看到一个shell提示符(#或$)。用户可以在提示符后面输入任何命令及参数。命令行由分隔符(白空格)、选项和参数组成。格式如下:命令名[选项…][

参数…]选项和参数参数是命令操作的对象,而选项用于影响命令对对象的操作行为。选项是由符号“-”引导的字符或字符串,“-”是必需的,用于区分选项和参数。Linux有两种形式选项:传统UNIX风格的选项:以“-”开始,紧跟

一个字符;GNU风格的选项:以“--”开始,紧跟着完整的英文单词或由“-”连接的单词组合。命令行示例$date#以默认方式显示当前日期和时间$date-u#传统UNIX风格选项$date--utc#GNU风格选项$date--universal$

ls-l/etc/passwd$ls-l-n/etc/passwd$ls-l--numeric-uid-gid/etc/passwd$ls-l-n--time-style=iso/etc/passwd命令行编辑特性1)命令和文

件名扩展2)命令行编辑3)历史记录1)命令和文件名扩展bash具有命令和文件名扩展特性。当输入一个还没完成的命令或文件名时,只需按“Tab”键就能激活命令和文件名扩展特性,从而“自动”完成该命令的剩余输入。如果有多个命令或文件的前缀

相同,bash将响铃并等待用户输入足够的字符,以便选择唯一的命令或文件名。如果找到,系统将自动补齐搜索到的命令或文件名,用户可按回车键执行这条指令。2)命令行编辑bash允许用户对正在输入的命令行使用“编辑键”进行。编辑键意义编辑键意义Ctrl+A|H

OME光标移至行首Ctrl+K删除光标处至行末Ctrl+E|END光标移至行尾Ctrl+U删除光标处至行首Alt+F光标前移至右一词末Alt+D删除光标处至单词末Alt+B光标后移至左一词前Alt+DEL删除光标处至单词首Ctrl+

L清屏并在屏幕顶端重显当前行Ctrl+W删除光标处左一词或至词首Ctrl+-恢复上一次的操作Ctrl+Y将刚删除的内容插入到光标处3)历史记录在bash中,回车后命令行被保留在历史记录文件中。可通过光标键“↑”和“↓”在历史记录中漫步,对出现的“当前”记录可以进行编辑和使用。利

用此可以重复执行以前执行过的命令,而无须重新输入。history命令Bash,为每个用户在~/.bash_history文件内预设了1000条记录的历史,并为每条记录一个编号。使用history命令可以查询历史记录。history的用法为:h

istory[n]#n为整数用来显示最近n条记录,若不指定n则显示所有历史记录。比如:$history20#显示最近20条历史记录$history#显示所有历史记录对历史记录的引用若要重新执行某条历史记录的命令则可以使用格式:$!记录编号需说明的是,历史“记录编号”是变化的

,按以上格式引用的“记录编号”必须是上次刚刚执行过的history命令显示的编号。$history20#显示最近20条历史记录99ls–l/#此为第99条记录$!99#执行第99条历史记录:ls–l/3.1.6标准流与I/O重定向1.标准流当一

个命令执行时,shell会自动为其打开三个标准流:标准输入0键盘标准输出1屏幕标准错误2屏幕默认情况下,程序将从标准输入流读取输入数据,而将正常输出数据输出到标准输出流,将错误信息送到标准错误流。直接使用标准流存在的问题(1)输入数据从终端输入时,用户

输入的数据只能用一次,易出错且修改不便。(2)输出到终端屏幕上的信息只能看,不便使用。UNIX/Linux系统的标准I/O重定向可以解决这些问题。2.I/O重定向I/O重定向是指通过文件的形式实现标准I/O流。<:标准输入重定向。>:覆盖方式标准输出重定向。若文件不

存在则创建之,否则覆盖之。>>:追加方式标准输出重定向。若文件不存在则创建之,否则在其尾部追加。&>:标准输出和标准错误同时重定向。&>>:标准输出和标准错误同时重定向追加。1)标准输入重定向是指让命令(程序)的标准输入从指定的文件中读取。因此,输入重定向主要用于解决命令

的输入源数据,尤其是输入数据量大或重复使用问题。例如,wc可用于统计指定文件包含的行数、单词数和字符数。$wc/etc/passwd$wc</etc/passwd2)标准输出重定向是指把命令的标准输出保存到文件中,可用两种方式:覆盖方式(>)和追加方式(>>)。

例如:$ls>/tmp/dir.out$ls/usr>>/tmp/dir.out标准输出的重定向是有副作用的:一是它可能覆盖已经存在的文件;二是它可能会在一个具有完整意义的文件后面追加一些外来或无意

义的信息。3)标准错误的重定向标准错误的重定向与标准输出的重定向意义相同,但是针对标准错误的,但在对其改道时须使用文件号2。命令2>文件或命令2>>文件在2与>间、>与>间不能有空格。例如:$ls-l/home/w-w-w2>/

tmp/err.out$cat/home/w-w-w2>>/tmp/err.out$cat/tmp/err.out4)标准输出、错误同时重定向使用符号&>或&>>可以让一个程序的标准输出和标准错误同时重定向到文件,前者用于覆盖方式,后者用于追加方式。示例如下:$ls-l-d//ho

me/w-w-w&>/tmp/err.out$ls-l-d/boot/home/w-w-w&>>/tmp/err.out$cat/tmp/err.out3.1.7管道与三通管道机制是在两个或多个进程之间建立一种连接,使得前一命令的输出作为后个命令的输入。该机制常用于进程间通信。

将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法:(1)通过临时文件将多个命令或程序结合在一起。(2)通过管道机制。1.管道实现管道机制的符号是“|”,其方法为:命令1|命令2|…|命

令n例如:$ls-l/dev|wc-l$cat/etc/passwd|grep"root:"|wc-l2.三通(tee)有时候,既要在屏幕上看到输出,又要同时保存一个副本,这时可使用管道与tee命令配合来实现三通。tee命令

读取标准输入,并将其内容同时写到标准输出和指定文件,其用法为:tee[-ai][files]选项-a指定使用追加方式,若不指定则采用覆盖方式;-i用于忽略中断信号(^C)。tee命令使用示例#将当月日历表显示到屏幕的同时也保存到文件calendar中$cal

|teecalendar#将根目录短式列表显示到屏幕上的同时也保存到文件f1和f2中$ls/|teef1f23.1.8环境变量与变量1.变量在UNIX/Linux系统中,用户可以定义自己的变量。定

义后的变量就像在其他程序设计语言里一样被引用。引用变量时需要使用“$”作为变量名的前导字符。由于shell是解释语言,在变量定义和使用时不需要声明类型,shell在使用变量时会根据变量的值来具体确定变量的类型。变量的定义方法与示例变量的定义方法如下:v

ar_name=var_value变量的定义和使用示例如下:$x=123#定义一变量x,值为123$y='Iamastudent'#定义变量y$echo$x$y$HOME#显示x,y和环境变量HOME的值$z="$x$

y"2.环境变量shell在开始执行时就已经定义了一些和系统工作环境有关的变量,用来控制用户程序的执行,或为用户程序的执行提供环境支持。可用env、export或set来查询环境变量:$export#显示所有的环境变量$e

nv#同上用户还可定义自己的环境变量(见后述)。常用的shell环境变量HOME:家目录。LOGNAME、USER:登录用户名、用户名。IFS:命令行参数、选项间的分隔符。PATH:由冒号分隔的目录路径名。TERM

:终端的类型。PWD:当前工作目录的绝对路径名。OLDPWD:刚刚离开的目录。PS1:主提示符。PS2:辅提示符(继续行用提示符)。3.1.9引号机制、命令替换与变量替换1.引号机制在shell中有三种引号:单引号('),双引号("

)和反单引号(`)。前两者用于变量定义,后者用于命令替换。1)单引号由单引号括起来的字符都作为普通字符,特殊字符用单引号括起来以后也会失去原有意义。例如:#定义string变量,其值为'$PATH‗$string='$PATH'#显示变量的值

:$PATH$echo$string2)反单引号反单引号的作用是命令替换。命令替换也叫命令扩展。所谓命令替换是指反单引号内的内容将作为命令首先被执行,然后再将命令执行的标准输出替换反单引号及其括号位置的信

息。例如:$x=`pwd`#通过命令替换定义变量x$y=`whoami`#通过命令替换定义变量y$echo$x$y#显示变量x和y的值命令替换的另一种形式$(cmd)作用与`cmd`相同,但功能更强。例如:#通过命令whoami替换定义变量MyVar$MyVar=$

(whoami)#显示变量MyVar和$(pwd)的值$echo$MyVar$(pwd)3)双引号双引号,也用来定义变量,在双引号内可进行变量替换和命令替换。所谓变量替换,是指在双引号中的对变量的引用将被替换成变量的值,变

量替换也叫变量扩展。双引号中的特殊字符仍具有特殊意义。若在双引号内使用特殊字符且又把它作为特殊字符本身来看待,则必须使用转义字符,比如,双引号中的双引号必须表示为\",\必须表示为\\。双引号使用示例$myname="`whoami`"#定义

myname##定义变量myself。$myself="Iamastudent,myunameis$mynameandmyworkdiris`pwd`."##定义变量myself1$myself1="Iamastud

entmyunameis\"$myname\"andmyworkdiris\"`pwd`\""$echo$myself$echo$myself12.参数替换参数替换主要是指命令行参数中的变量和命令替换。在执行命令

时,命令的命令行参数既可以是常量也可以是变量,也可以包含命令替换。参数替换示例设当前目录下有命令DispAllVar用于显示它自己的所有命令行参数,变量x的值为"testparm",则命令$./DispAllVarIam`whoami`,thevalueofxis$x的输出为:Iamro

ot,thevalueofxistestparm参数替换示例(续)还可以定义一个变量:D=DispAllVar之后,程序的执行可简写为:$./$DIam`whoami`thevalueofxis$x在这里,程序名也可以是变量。DispAllVar的生成生成$echo

'echo$*'>DispAllVar;增加执行权$chmod+xDispAllVar3.1.10shell命令的执行命令类型:内部命令、外部命令和别名内部命令:shell拥有自己的内部命令,也能被系统中其他应用程序所调用。比如cd;外部命令:是存在于文件系统中某个目录下

的(系统或用户)程序;别名:是另外一类可执行的“命令”,可用alias查询。也还有一些命令,比如echo,既是内部命令,也是外部命令。1.命令搜索默认情况下,当用户从键盘输入一个命令时,shell首先检查它是否带

有路径。若有路径则按路径搜索它,若找到则执行之,否则报错。若没有带路径,则首先检查它是否为内部命令,若是则执行之;否则,再沿$PATH指定的路径检查是否是一个外部命令。如果能够成功找到,则执行之;否则报错。考虑别名的

命令搜索顺序如果键盘输入的是一个别名,则优先于内部命令。考虑别名的命令搜索顺序是:别名->内部命令->外部命令对于既是内部又是外部命令者,或者说内、外部命令同名者,shell也有一种机制可以有选择地

执行之,但默认情况下是执行内部命令。2.标准流与程序I/O当一个命令执行时,系统首先为其打开三个标准流。程序执行时,默认从标准输入读、向标准输出写、出错时将错误信息写向标准错误。可以使用I/O重定向将3个标准流重定向到文件

。也可将标准输入和标准输出重定向到管道。当从文件读取信息时,结束符为文件结束标志EOF;当从标准输入读取信息时,输入完成时的结束符为^D。标准流与程序I/O由于UNIX/Linux系统的shell命令大多做成了从

标准输入读,向标准输出写的过滤器,用户可将从标准输入读的信息重定向到输入文件,将向标准输出写的信息重定向到输出文件,也可将标准错误重新定向到文件。比如:ls/dev>x$grepsdx#使用文件$grepsd<x#

使用标准输入$ls/dev|grepsd#使用管道3.命令的返回值UNIX/Linux系统默认约定,shell命令在结束时向调用者返回一个状态码或返回值,以表示执行成功与否。返回值为0表示成功,非0表示失败。当命令是由管道连接的命令串,或是命令组时,最后执行的

命令的返回作为整个命令串的返回值。返回值可以在命令刚刚执行完毕后,通过$?来访问。比如:$echo$?3.1.11shell种类UNIX/Linux中的shell有多种类型,其中最常用的几种是Bourneshell(sh或bsh)、Bourne

againshell(bash)、Cshell(csh)、tcshell(tcsh)、Kornshell(ksh)和Zshell(zsh)等。bsh是StephenBourne在Bell实验室设计的shell,在每种UNIX上都可以使用,且在众多的UNIX系统中bsh

基本保持一致,它是大多数UNIX系统默认的shell。bashbash是GNU工程中使用的shell,bash是在bsh基础上发展起来。bash与bsh稍有不同,它兼有csh、tcsh和ksh的特色。大多数bsh脚本程序可在其上不加修改就可运行,但bash的脚本程序则不一定能在b

sh上运行。bash是GNU操作系统的默认shell,Linux操作系统默认的shell是bash。3.2Linux系统的基本命令3.2.1目录基本操作命令3.2.2文件操作基本命令3.2.3文件属性基本操作命令3.2.4文本文件编辑与操作

基本命令3.2.5日期、时间与时区管理命令3.2.6进程管理基本命令3.2.7文件或目录比较命令3.2.8其他操作命令3.2.1目录基本操作命令1.列目录内容(ls)2.建立目录(mkdir)3.删除目录(rmdir)4.改变工作目录

(cd)5.显示当前目录(pwd)1.列目录内容(ls)1)功能与用法ls(list)的功能是列指定目录的内容,并将输出按某种方式排序。若不指定目录,则默认当前目录。用法为:ls[option

s][files]2)参数说明选项意义-a列出所有文件及目录(Linux规定以点“.”开头为隐藏文件,默认情况下不会列出)-A同-a,但不列出.和..-b以八进制数字方式列出不可显示的文件-i列出目录时显示i节点信息-l长格式列表-F短格式列表,文件名称后加一符号表示属性:可执行文件加*,

目录/-r将文件以相反排序方式列出(默认按文件名ASCII码值排序)-R递归列出目录及其子目录-t按文件依修改时间排序-U以不排序方式列目录3)示例#ls-ltrs*#列出当前目录下所有名字以s开头的文件,按修改时间倒排序#ls-lR/bin#递归列/b

in目录及其子目录#ls-ad.*#列所有名以点.开头的文件#ls-AF#列当前目录,名后属性字符#ls-lid/usr/bin/ls/dev/sda/etc#以长格式列文件且输出I节点号4)ls的输出与文件属性ls-lid/usr/bin/ls/dev/s

da/etc的有以下内容:2039brw-rw----.1rootdisk8,0Mar809:06/dev/sda651522drwxr-xr-x.141rootroot2288Mar809:08/etc894-rwxr-xr-x.1rootroot14159Nov101:21/

usr/bin/ls①②③④⑤⑥⑦⑧⑨各域的意义是:①I节点号;②文件类型;③权限;④链接数;⑤主;⑥组;⑦普通文件为长度,特别文件为主次设备号;⑧最后修改时间;⑨文件名。2.建立目录(mkdir)1)功能与用法mkd

ir(makedirectory)的功能是创建子目录,一次可以创建多个子目录,还可以一次创建包括全部父目录和子目录在内的一个完整的目录结构,它的使用受权限的制约。mkdir的用法为:mkdir[-p][-mMODE]dirs2.建立目录(mkdir)2)参数说明

-p:如果要创建的目录存在也不报错,必要时可一同创建父目录。-mMODE:按照权限MODE创建子目录。3)示例#mkdirtemp#创建名为temp的子目录#mkdirtemp2temp3#一次创建多个#mkdir-ptemp5/child#在子目录temp5下创

建子目录child,若父目录不存在3.删除目录(rmdir)rmdir(removedirectory)的功能是删除空子目录,其使用受权限制约。用法为:rmdir[-p]dirs使用-p参数,rmdir在删除一个

目录时,若其子目录也是空的,则一并删除。示例:#rmdirtemp#删除temp,若非空则报错#rmdir-pa/b/c#删除目录时一同删除其空子目录.4.改变工作目录(cd)cd功能是改变用户的当前目录。它的使用受权限制约,用户必须对要

进入的目录有执行权。用法:cd[dir]若不指定dir,则切换到家目录$HOME。#cd/tmp#切换到目录/tmp#cd~-#回到刚离开的目录#cd..#切换到上级目录#cd#切换到家目录$HOM

E~扩展~扩展被扩展为用户家目录($HOME)。~/.bash_profile等于$HOME/.bash_profile但~-被扩展为刚刚用户刚刚离开的目录($OLDPWD)5.显示当前目录(pwd)pwd(printw

orkingdirectory)的功能是显示当前目录。用法:pwd[-P][-L]选项-P、-L分别用于显示当前目录的物理和逻辑位置,默认为后者。3.2.2文件操作基本命令1.显示文件的内容或合并文件(cat)2.

分屏显示文件内容(more)3.使用less命令浏览文件4.文件或目录的删除(rm,unlink)5.文件移动或更名(mv)6.文件和目录复制(cp)7.显示文件的开始或结尾部分(head/tail)8.文件的格式输出(pr)9.以指定格式或

进制显示文件内容(od)1.显示文件内容或合并文件(cat)1)功能及用法cat(catenate)命令用来把文件内容显示到屏幕上,也可以同时显示多个文件。当不带参数运行cat时使用标准输入。使用cat可以通

过I/O重定向的方法将多个文件的显示内容改道到某个文件中,从而实现文件合并。cat的用法为:cat[options][files]2)参数说明选项意义选项意义-E在行末显示$符号-s当有一个或多个空行时只显示一个-n为所有行添加行号-T将Tab键显示为^I(Ctrl

+I)-v显示所有内容。除回车和Tab键外,不可显示的字符用^或M-表示(^表示Ctrl键,M-表示Alt键)3)应用举例#cattest.txt#显示test.txt的内容#cat-ntest.txt#内容,并添加行号#cat*.t

xt#显示所有的*.txt文件#cattst1.txttst2.txt>tst.txt#将tst1.txt和tst2.txt的内容合并为tst.txt#cat>myfile#从键盘读入内容并将其保存到文件myfile。按^D结束2.分屏显示文件内容(more)1)功能

及用法功能是分屏显示文件的内容。more是UNIX/Linux系统中分页命令家族中的一员。能使用户在浏览文件的时候可以一次一屏或一行进行,这在阅读大文件时特别有用。more命令的用法为:more[-dflpcsu]-lines[+linenum|+/pattern]files2)参数

与命令说明参数意义+/pattern从第一个正规表达式pattern处开始显示(参见第10章)+linenum从第linenum行开始显示-lines指定满屏行数为lines,默认时为24行-d屏幕底端的默认提示。默认提示为--more—(##

%)-l忽略^L(换页)。默认时遇到^L时会暂停-s压缩多个空行为一行more命令的部分屏幕操作命令命令功能命令功能Q/q/^C退出!cmd执行shell命令=显示当前行行号:n下一个文件#d/#b向前/后滚动#行(#为数字):p上一个文件空格向前翻一屏:f显示当前文件名和行号回车向前翻一行^L重

显本屏内容?/h帮助.重复上一个命令3)应用举例#more/etc/passwd#分屏显示/etc/passwd的内容#ls-l/dev|more#列出系统设备目录并通过more分屏显示3.使用less命令浏览文件less命令和more一样都是分页处理命令。它改进了more命

令中的一些功能,并又添加了许多其他特色,例如,可以使用PgUp和PgDn翻页,使用HOME和END直接跳到文件开始或结尾等。通过less分屏显示/dev/目录内容的示例如下:ls-l/dev|less4.文件或目录的删除(rm,unlink)1

)功能及用法功能是删除文件。rm可用于删除各种类型的文件;unlink只能删除单个文件。由于在UNIX/Linux系统内被删除的文件是不可恢复的,所以使用时要特别小心。rm命令的使用方式为:rm[option

s]filesunlinkfile2)rm命令的部分参数选项功能描述-i交互方式。删除前逐一询问确认,回答时y/yes表示确认,其他为放弃-f强制方式。强迫删除,删除时不进行提示-r/-R递归方式。删除目录时,连同其子目录一起删除

。删除目录时必须选此项--删除以-开头的文件3)示例$rmmyfilehisfile#交互式删除,删除前需要用户确认$rm-r-fmyf.cmydir#同时删除文件myf.c和目录mydir$rm---xyz#删除具有特殊名字的文件-xyz$rm\*\\#删

除名字为*和\的文件$unlink/tmp/x#删除/tmp/x5.文件移动或更名(mv)1)功能及用法mv的功能是文件位置移动或更名。其用法为:mv[options]sourcedestmv[options]source.

..directory前者是将源文件移动到目的文件,可用于文件移动或更名;后者是将一批文件移动到某个目录directory。mv命令是有副作用的,但可使用备份方式避免。mv至少需要两个参数,一个用于源文件,另一个是目标文件或位置,若目标为当前目录可用“.”表示,但不能省略。2)mv命令的

部分选项选项功能描述-b若需覆盖,则在覆盖前备份。行为受-S和-V参数的影响,默认时在文件名后追加~-f参见rm-i参见rm-u若目标文件已经存在,则比现文件旧时覆盖,否则不覆盖-Ssuff定义备份时使用的后缀为suff,默认为~,与-b配合使用-V=<method>版本控制。method

可取值为:none/off:不备份;never/simple:按预设方式备份;t/numberd:文件名尾部增加备份次数,如~1~,~2~;nil/existing:若已有备份方式则使用原备份方式3)示例#mvfile1file2#若file2存在,则在不使用备份时将被覆盖

#mvmyfile/tmp/tmpf#将文件myfile移动至/tmp/tmpf下或更名为/tmp/tmpf#mvfile1file2mydir#将文件fiel1,file2移动到目录mydir下#mv-bf–V"t"file1file2mydir#以备份方式移动文件6.文件和目录复制(

cp)1)功能及用法cp(copy)的功能是文件或目录复制。不能复制设备文件,但却可复制设备文件的内容以构造映像。其用法为:cp[options]sourcedestcp[options]source...directory第一种用法是将源文件复制到目标文件,第二种用法

是将一批文件复制到某个目录directory。cp命令也是有副作用的,但同样可使用备份方式加以避免。cp至少需要两个参数,一个用于源文件,另一个是目标文件或位置,若目标为当前目录可用“.”表示,但不能省略。2)cp命令的部分选项选项功能描述-d复制时复制符号链接,

若不指定则复制符号链接指向的文件-p复制源文件时,保留源文件的属性信息-l不作复制,只创建硬链接-s不作复制,只创建符号链接-R/-r递归复制。复制目录时,一同复制其中的所有文件和子目录3)示例#cpfile1file2#将file1复制到file2#cp/tmp/myp.c

.#将/tmp/myp.c复制到当前目录#cp*.c*.txt/tmp#将*.c和*.txt复制到目录/tmp#cpfile1/tmp/file2#将file1复制到/tmp/file2#cp-rpdir1dir2#将目录dir1复制到目录dir2,且保持原属性#cp-Rf

ile1file2dir1dir2#将文件file?和目录dir1复制到目录dir2#cp/dev/cdrom/tmp/disk.img#构造光盘映像到文件/tmp/disk.img7.显示文件的开始或结尾部分(head/t

ail)head和tail命令可用于显示文件开始和结束部分,用户可以通过参数-num或-nnum来决定要显示的行数,默认为10行。其基本用法为:head[-num|-nnum][files]tail[-num|-nnum][fi

les]head和tail均可处理多个文件,此时输出中每个文件的内容均以==>文件名<==分隔,若要抑制文件名输出可以使用-q参数。8.文件的格式输出(pr)1)功能及用法pr用于对文本文件进行加工并按指

定格式输出。pr可对文本文件按分页、分栏要求进行加工,若不指定输入和输出文件,则使用标准I/O。在pr的默认输出中,页面长度为标准的66行,每页都有包括56行的正文,前、后各保留5行作为页眉和页脚。在页眉中有包含打印日期、时间、文件名和

页码的标题。用户可能通过命令行参数来控制pr的行为。pr用法为:pr[options]files2)pr命令的部分参数选项功能描述-#指定分栏数。#为数字,默认为1-a分栏时使用交叉方式(即按先后顺序交叉分栏-c显示控制字符。显示方式

为^x或\###-F/-f使用^L换页,而不以填充空行方式-hstring使用指定的头字符串string作为页眉,而非默认方式-J取消固定列宽,将各栏合并为一长整行-l#指定页长为#行(默认为66行)-m合并文件。多个文件并列输出,每个占一栏-n在行前输出行

号-sCHAR指定分栏字符串CHAR,默认为Tab-SSTRING指定分栏字符串STRING。若不指定时默认为Tab,-J时为一个空格-t取消页眉和页脚-w#指定页宽为#个字符,用于多栏输出-W#指定页宽为#,除非与-J配合使用,否则超宽部分被截掉3)示例#pr-nprog.c#给C程序pro

g.c添加行号后输出#pr-2mytxt.txt#以对分方式分2栏输出文件mytxt.txt#ls/dev|pr-a-3#以交叉方式分3栏显示/dev中的内容#pr-n-fprog.c>x#给C程序prog.c添加行号且以\f(^L)分页后存

放到x9.以指定格式或进制显示文件(od)1)功能及用法od(octaldump)命令的功能是按不同进制或格式显示文件内容,默认为八进制。od可以处理多个文件,此时输出将文件按排列顺序合并。若不指定输入文

件或输入文件为-,则使用标准输入。其用法为:od[options]filesod--traditional[files][[+]offset[[+]label]]2)od命令的部分参数选项功能描述-Atype地址类型:d,o,x和n分别代表十进

制、八进制、十六进制和无地址,默认为十六进制-j<#>跳过#个字符-N<#>只读入#个字符-t<type>设置输出格式。type:a,c,d#,f#,o#,u#,x#分别为命名字符、字符、整数、浮点数、八进制、无符号整数和十六进制数,#为数字表示位数-w<#>设置每列的最大字符数为#--t

raditional接收传统格式。-v输出时不省略重复的数据3)示例#od-tx1x#按16进制方式显示文件x#od-N32-taa.out#按命名字符显示a.out前32个字符#od-N32-tx1ca.out#按1位16进制和字符方式分别显示a.out前32个字

符3.2.3文件属性基本操作1.确定文件类型(file)2.显示文件或文件系统状态信息(stat)3.修改文件存取时间或创建空文件(touch)1.确定文件类型(file)1)功能与用法file用于确定文件的类型,其用法为:

file[-bciknsvzL][-fnamefile][-mmagicfiles]file…file-C[-mmagicfiles]2)参数说明参数功能-b输出结果时不显示前导文件名-ffile从文件file中读取要确定类型的文件名-i显示MIME类型的输出,而非传统文本-L

跟踪符号链接,显示链接目标的文件类型-mfilelist指定幻数文件(filelist),而非默认的/usr/share/magic-s用于对特别文件进行进一步分析,以报告其上文件系统的类型-z尝试读取压缩文件的内容

3)file示例#确定文件类型#file/bin/bash/etc/inittab/lib/libc.*#确定特别文件及其上的文件系统类型#file-s/dev/sda12.显示文件或文件系统状态信息

(stat)1)功能及用法stat用于显示指定文件的状态信息或其所在文件系统的状态信息—属性信息。用法:stat[options]files2)参数及说明-f:显示文件所在文件系统的信息-t:精简模式-L:跟踪符号链接-cFORMAT:指定显示格式3)示例#stat

/usr/bin/wc#显示文件的状态信息#stat-f/usr/bin/wc#显示文件所在文件系统的状态信息#stat-L/dev/cdrom#显示文件的链接文件状态信息#stat-c"%A/%a%h%s"/etc/hosts#显示的权限、链接数和长度关于文件属性stat的输出

几乎包含文件的全部属性。其中“File”:为文件名;“Size”:为文件大小;“Blocks”为文件所占512字节的块数;“IOBlock”:为文件系统I/O块大小;“regularfile”:表明这是一个普通文件(“blockspecialfile‖:块设备;

“characterspecialfile”:字符设备;“fifo”:管道设备;“directory”:目录);关于文件属性(续)“Device”:文件所在设备ID;“Inode”:为I节点号;“Links”:为硬链接数;“Access”:为文

件访问权限;“Uid”:为用户标识;“Gid”:为组标识;“Context”:为SELinux上下文;“Access”、“Modify”、“Change”分别为访问时间、修改时间和属性修改时间。3.修改文件时间属性或创建空文件(tou

ch)1)功能及用法touch的功能有二:一是建立空文件;二是更新文件的存取时间。默认时,将文件的3个时间都修改为系统的当前时间,若指定文件不存在,则创建空文件。用法为:touch[-acm][-rref_file][-t[[CC]YYMMDDhhmm[.ss]]filestouch

[-acm][-tMMDD[yy]]files2)参数说明-a:改变文件的访问时间-m:改变文件的修改时间-c:若目的文件不存在,禁止创建新文件-ddatestr:设定日期-ttimestamp:设定日期和时间日戳。

timestamp格式为[[CC]YY]MMDDhhmm[.ss]3)touch示例#touchmyfile#将文件的访问时间等改为当前时间,若不存在则创建之#touch-a-t201601010030myfileyourfile#修改文件的存取时间#touch-m-t201

706050403myfile#修改文件的修改时间#touch-m-d"Feb2201718:20"/tmp/tmpf3.2.4文本文件编辑与操作基本命令1.文本编辑命令(vi)2.字符串过滤命令(grep)3.文件排序命令(sort)4.处理文件中的重复行

命令(uniq)5.文件内容信息统计(wc)1.文本编辑命令(vi)1)功能及用法vi是UNIX/Linux文本文件的全屏编辑器。vi一次可以编辑多个文件,若vi启动时没有指定文件名,则vi将创建一个无名的文件,待用户保存时由用户指

定文件名。若指定的文件不存在,则创建一个新文件。若用户对文件的修改不保存,则原文件不发生变化。vi的临时文件设vi编辑的文件为file,则在工作时,vi创建一名为.file.swp的临时文件,若没有指定文件名,创

建.swp临时文件。临时文件也叫交换文件。当vi结束编辑后,对应的临时文件被自动删除。但当vi非正常退出时,此临时文件就可能会被残留下来,在下次再编辑此文件时会出现错误信息。vi的整个工作过程和被编辑的文件无关,只是在保存的时候

才修改被编辑的文件。vi有三种工作模式:命令模式:当进入vi时,它处在命令模式。在此模式下,可通过vi的命令对文件内容进行处理,也可通过插入命令进入编辑模式。编辑模式:可在命令模式下通过o,O,a,A,i

,I等命令使vi进入编辑模式。也可通过按Esc键返回命令模式。命令项模式或叫底行模式:在命令模式下,用户输入冒号“:”后,光标会跳到底行,输入相关命令后可完成指定操作。vi的使用方法vi[options][files]2)参数说明选项功能描述[files]被编辑的文件名。当不提

供时,打开一个无名文件+[#]file进入vi后光标直接定位到第#行首,若不指定#,则光标定位到末行首+/patternfile从指定的模式匹配行行首处开始-r/-L列出当前目录内所有因vi非正常退出而残留的交换文件,以便恢复-

r<.*.swp>从交换文件.*.swp中恢复文件-rfile从vi崩溃或非正常退出中恢复文件-R以只读方式编辑文件。使用此参数时,被编辑的文件不能回存,但可以另存3)vi的基本操作(1)编辑模式(2)删除命令(3)修改或替换(4)

搜索与定位(5)搜索和替换(6)块操作命令(7)缓冲区操作命令(8)其他命令(9)保存与退出(1)编辑模式在命令模式下,输入i、I、a、A、o和O命令进入编辑模式,编辑完毕后通过按Esc键返回命令模式。命令功能描述命令功能描述i光标处插入I行首插入a光标后追加A行末追加o当前行后插

入新行O当前行前插入新行(2)删除命令命令功能描述命令功能描述x删除光标处的字符X删除光标前的字符d0从光标处删除到行首D从光标处删除到行末db删除光标到本word始dw删除光标到下一个词首dd删除光标所在的行#cmd重复执行命令cmd#次(3)修改或替换命令功能命令功能

cc/S替换光标所在行s替换光标处的字符C/R修改当前行光标后的部分r替换当前一个字符cw修改光标到一个字的结尾部分cb修改光标到一个字的开始部分(4)搜索与定位命令功能描述命令功能描述0定位至行首w光标移至本行下一字开始$定位至行末b光标移至本行前/当前字开始:#|

#G定位到第#行首E光标移至下一/当前字尾:0|gg定位到首行行首%查找单括号对():$|G定位到末行行首[[|]]定位到最外层{}的{/}#%光标移至#%处行首[{|]}定位到当前层{}的{/}(4)搜索与定位命令功能描述命令功能描述/exp后向定位到字符串exp[/|

]/定位到注释块的开始/结束?exp前向定位到字符串expFc|fc后/前向定位到当前行字符c/^exp定位到行首为exp的行Tc|tc后/前向定位到当前行字符c后/前/exp$定位到行末为exp的行g0|gm|gl光标移动到行首/中/末n,m?|/exp在n-m行前/后向搜索expg

j|gk光标下/上移一屏幕行(而非文本行)n|N前/后向继续查找*|#前/后向搜索光标下的单词(5)搜索和替换命令功能描述:s/exp1/exp2/g将当前行的exp1替换成exp2:n,ms/exp1/exp2/g将从n

到m行中的exp1替换为exp2:n,mg/exp1/s//exp2/g将从n到m行中的exp1替换为exp2:g/exp1/s//exp2/g将全文中的exp1替换为exp2(6)块操作命令命令功能描述:n1,

n2d删除n1到n2行的内容:n1,n2mn3将n1到n2行内容移动到n3:n1,n2tn3将n1到n2行内容复制到n3:n1,n2w[!][file]将n1到n2行内容写入[file](7)缓冲区操作vi默认时使用无名缓冲区进行工作,比如,将文件的某些部分删除了,但可以用u命令进行撤销。

文件内容的复制与移动都是通过缓冲区进行的。对任何使用各种删除命令删除的内容都被保留在无名缓冲区中,用户可以使用p命令在光标后追加它们。比如:命令串xp可以交换光标处及其后两个字符的位置;ddp可以交换光标所在行及其下一行的

位置。缓冲区操作命令vi还可使用命名缓冲区a-z,然后通过缓冲区进行复制或粘贴等操作。命令功能描述Y/yy将当前行放入无名缓冲区P/p将无名缓冲区中的内容粘贴到当前行的上/下方"cyy将当前行放入缓冲区c(c为任何小写字母)"cd将当前行删除,内容放入缓冲区c"cP/"

cp将缓冲区c中的内容粘贴到当前行的上/下方(8)其他命令命令功能描述命令功能描述.重复上次执行的命令u作废刚执行过的命令:setnu设置行号:setnonu取消行号J将下一行合并到当前行~将光标处的字符大小写转换^G显示当前编辑

文件信息^L刷新屏幕(屏幕乱时使用):n定位到下一文件:N定位到上一文件:rfile读入文件到光标处:!cmd执行shell命令cmd:!!重复上次执行的shell命令:r!cmd执行cmd并将其输出追加到光标处:e!重新读

入当前文件,作废以前所有操作:efile放弃当前文件编辑,以file启动vi(9)保存与退出命令功能描述命令功能描述:w保存文件,但不退出:wq[!]保存退出:x保存文件,且退出vi:w>>file将现行文件的内容追加到

文件file:q退出(若文件已更改,则不能退出):wfile将现行文件的内容写入file:q!不保存强制退出:w!file将现行文件内容写入已存在的fileZZ保存文件且退出viZQ不保存退出2.字符串过滤命令(grep)1)功能与用法grep的功能是字符串搜索与过滤

。以grep为例,它的用法为:grep[options]pattern[files]grep[options][-epattern|-fpatternfile][files]若不指定搜索的文件,则默认为标准输入。2)参数及说明选项功能描述-c不显示匹配内容,只显示匹配行数-

E/-F使用扩展正则/固定表达式,调用egrep/fgrep-epattern使用表达式pattern,用于保护以“-”开头的表达式-fpatternfile从patternfile中读取表达式-h输出结果前面不带有

文件名-I忽略二进制文件-i忽略大小写的区别-l遇到匹配时立即退出,且每个文件只输出一次文件名,-mNUM在文件中搜索到NUM次出现时停止本文件搜索-n输出时显示行号-o只显示行中的匹配部分,而非整行-q无输出,只有返回码。可用$?进行访问-s不显示工作过程中的错误信息-v反向搜索,显示不

匹配的内容-w/-x整字/行匹配模式3)grep搜索示例$grep-E'([Ss]ome)|([Aa]ny)one'file$grep-E'[Hh]enr(y)|(ietta)'file$grep-Froot/etc/passwd

$grepmytext[abc]*$ls/dev|grep'sda'$grep-v"^#"/etc/inittab关于grep的说明用于字符过滤的命令有3个,分别是grep、egrep和fgrep,三者都用于在指定文件或流中搜索指定字符

串,并显示出它所在行的相关信息。默认情况下,grep使用标准正则表达式,egrep使用扩展正则表达式,fgrep则使用固定的字符串。可通过grep及选项-E和-F调用egrep和fgrep。3.文件排序命令(sort)1)功能与用法sort对指定文件中的行按要求进行排序,并将结果写到标

准输出。如果指定多个文件,则sort命令将这些文件连接起来,并当作一个文件进行排序。如果不指定文件名或文件为-,则使用标准输入。如果不指定排序要求,则以行为单位按ASCII码的顺序排序。用法为:sort[options][files]2

)参数说明选项功能描述-b忽略前导空格-c检查给定文件是否已排序,若没有则返回1-d忽略特殊字符。-f忽略大小写-i忽略不可打印字符-kPOS1[,POS2]以从位置POS1开始(到POS2为止)的字符为“键”排序。+posl-

pos2以相对数定义列位置-n按字符串数值排序-oFILE指定输出文件。可与输入文件名相同-r按逆序输出排序结果-tSEP指定字段分隔符为SEP,默认为空格-u除去重复的行,使文件中的每一行唯一3)sort示例#将filei按字典顺序排序

后输出到fileo$sortfilei>fileo$sort-k2,2filei#使用k指定绝对域号$sort+1-2filei#使用相对量定义域号#以第二个域的第一个字符为键进行排序$sort-k2,2.1ifi

le$sort+1.0-2.1ifile4.处理文件中的重复行命令(uniq)1)功能及用法uniq用于处理文件中的重复行。该命令首先比较相邻的行,然后处理(删除或显示)其后重复的行,在文件中不相邻重复行的将不会被处理。uniq将处理的结果输出到

标准输出或指定文件,一般不会对输入文件造成影响,除非指定的输出文件与输入文件名相同。用法为:uniq[options][infile[outfile]]2)参数说明选项功能描述选项功能描述-c在输出行前加入在输入文件中连续出现的次数-sN忽略由N指定数目的字符-d仅显示重复行-[f]N忽略

由N变量指定数目的字段-D显示所有重复行-wN只比较前N个字符-u仅显示不重复的行-i比较时忽略大小写3)示例$uniqifileofile#将输入文件中的非重复行保存到另一个文件中$uniqifile>ofile#同上$uniq-dif

ile#仅显示重复行$uniq-Difile#显示所有重复行5.文件内容信息统计(wc)1)功能及用法wc的功能是对输入文件的信息进行统计。统计信息包括行数、单词数和总字节数等。若有多个输入文件,则将对每个输入文件进行分别统计,在最后还给出所有文件的统计信息。用法:wc

[-c][-m][-w][-l][-L]files2)参数说明选项功能描述-c/-m字节/字符数统计-l统计行数-w统计单词数-L统计最长行的字节数3)示例$wc/etc/inittab#综合统计/etc/inittab的

内容信息$wc-w/etc/inittab#统计单词数$wc-l/etc/inittab#统计行数$wc-c/etc/inittab#统计字符数3.2.5日期、时间与时区管理命令UNIX/Linux提供有date、hwclock、timedat

ectl等命令用于日期和时间的管理。除此之外,桌面或工作站系统还可在图形界面下对日期和时间进行管理。第13章还介绍了通过NTP实现系统时间的自动校正。1.时区及相关文件时区是日期和时间的基础,必须设置正确,否则系统时间与手表的时间就可能不一致。

对于有营业时间限制的业务系统更是如此,否则可能造成正在营业时间与系统时间却不一致。日期和时间的设置与显示受时区环境变量TZ的影响,在Linux下,格林尼治标准时区是TZ=UTC,中国的标准时区是TZ=CST。时区设置系统的时区控制文件为/etc/localtime,它是/usr/shar

e/zoninfo/内某个文件的复制品或链接,在中国,这个文件是/usr/share/zoninfo/Asia/Shanghai。因此,设置中国时区的方法之一是执行命令:#ln-f-s/usr/share/zon

einfo/Asia/Shanghai/etc/localtime2.日期与时间管理命令(date)1)功能与用法date的功能是显示和设置时间。用法为:date[options][+FORMAT]date[-u|--utc|--universal][MMDDhhmm[[CC]Y

Y][.ss]]2)参数说明MMDDhhmm[CC]YY][.ss]:设置系统时的时间格式+form:指定时间显示格式。form由表3-33和3-34中的格式控制字符组成。-ddatestr:显示datestr中所设定的时间(非系统时间)-sdatestr:

将系统时间设为datestr中所设定的时间-u:显示当前的格林尼治时间3)日期和时间使用示例$date#以默认格式显示系统的当前时间$date+%T%n%D#按指定格式显示系统当前时间,时间和日期各占一行#dat

e05311010#设置系统时间为当年5月31日10:10:00#date-s"+2minutes"#将系统时间前提2分#date-d"2017-05-0100:00:00CST"+%s#仅转换而不设置时间UNIX/Linux时间元年UNIX

/Linux新纪元时间(Epoch)是1970-01-010:0:0UTC。也就是说,将从格林尼治标准时间1970-01-010:0:0UTC开始计时。系统内记录的时间表,是从1970-01-010:0:0UTC到

当前经历的秒数。可参考:#date-d"2017-05-0100:00:00CST"+%s#date-d"2017-05-0100:00:00GMT"+%s由于计时采用的是32位整数,照此计算,到2038年,也将会出现―Y2K‖问题,不过到时候有办法解决的。3.

hwclock1)功能及用法hwclock的功能是访问硬件时钟。它可以完成以下功能:显示硬件时钟;将硬件时钟设置为指定时间;将硬件时间设置为系统时间,或相反地将系统时间设置为硬件时钟;比较系统时间与硬件时间;补偿硬件时钟漂移等。其用法为:hwclock[function][options

]2)子功能及参数-c:周期性地(每10秒)比较系统和硬件时钟(^C结束)-r:读取硬件时间并以ISO8601(yyyy-mm-ddhh:mm:ss.*+TZ)格式显示-s:由硬件时钟设置系统时间--setdate_str

:由date_str格式指定的时间设置硬件时钟-w:由系统时间更新硬件时间常用选项有--localtime,-u/--utc用于告诉hwclock按本地或格林尼治标准时间处理。3)hwclock示例hwclock--show#读取硬件时间并显

示hwclock--set--date"dd/mm/yyyyHH:MM:S"#设置硬件时间(要具体化)hwclock-s--date"yyyy-mm-ddHH:MM"--localtime#将本地系统时间设为硬件时间hwclock--systohc--lo

caltime#将本地系统时间同步为硬件时间hwclock--hctosys#将硬件时间同步为系统时间4.timedatectl1)功能及用法设置和显示系统时间。用法:timedatectl[options]{cmd}2)子功能及选项list-timezones:列所有可用时区stat

us:显示当前与时间相关的配置信息set-timeTIME:设置系统和硬件时间,时间格式为“YYYY-MM-DDhh:mm:ss”set-timezoneTZ:设置时区set-local-rtcBOO

L:是否使用UTC。set-ntpBOOL:设置是否启用网络时间。与set-local-rtc可配合的有选项--adjust-system-clock,使其也同步系统时间。3)timedatectl示例#timedatectlstat

us#显示配置#timedatectlset-time12:30:00#设置时间#timedatectlset-time2017-03-31#设置日期#timedatectlset-time"2017-03-3112:30:00"#同时设置日期和时间#

timedatectllist-timezones#显示所有时区#timedatectlset-timezoneAsia/Shanghai#将时区设为Asia/Shanghai#timedatectlset-

ntpyes#配置使用网络时间5.日历显示命令(cal)cal命令用来显示日历。用法:cal[-smjy13][[month]year]其部分可用选项如下:-1:只显示1个月日历(默认);-m:以星期一为每周的第一天方式显示-3:显示以当前月为中心的3个月日历-j:按儒略历(

JulianCalendar)显示日历-s:以星期日为每周的第一天方式显示(默认)-y:显示当年历cal示例cal2018#显示公元2018年日历cal18#显示公元18年日历cal52017#显示2017年5月分日历6.日期时间管理图形界面对于桌面或工作站系统,可以通过“

设置中心(Settings)”,或在CLI界面下执行gnome-control-center后选择“Date&Time”进入Date和Time管理界面,也可以在安装system-config-date

软件包后,从CLI界面执行命令system-config-date进入Date和Time管理界面进行日期和时间设置。也可从桌面顶端面板中选择―日历和时钟‖。3.2.6进程管理基本命令系统在启动时创建了很多进程。进程的创建者称为父进程,被创建者

称为子进程,子进程还可以创建子进程。父、子进程都是进程。为对进程管理,系统为每个进程分配了一个编号PID:进程号或进程标识。在诸多的进程中,父、子进程之间按先后创建关系构成了一棵进程树。进程树上的每一个分支都对应或描述着一组进程的家族关系。进程树可

用pstree来查询。1.信号及默认处理方式进程间可以通过信号进行通信,以实现进程间一定程序的控制,用于进程间信号通信的命令是kill和trap。UNIX/Linux中使用很多信号,各种信号及默认处理办法如表3-38所示。常用信号在众多信号中,有的

是硬件产生的,有的是软件产生的,还有一些是人工可以制造的。人工可以制造的信号简称为人工信号,比如^C可以产生SIGINT,其值为2。常用信号有SIGHUP、SIGINT、SIGQUIT、SIGKILL、SIGTERM、SIGUSR1和SIGUSR2等,或简写为HU

P、INT、QUIT、KILL、TERM、USR1和USR2等。这些信号中的一些是可以被捕获的,捕获命令为trap。2.进程树及进程状态查询(pstree)1)功能及用法用于显示系统内进程间的关系—进程树。系统中所有进程的进程树都会以基本进程init(1)为根,如果指

定用户,则只显示此用户拥有的进程子树。用法:pstree[-a][-c][-h|-Hpid][-l][-n][-p][-u][-G|-U][pid|user]2)参数说明pid显示指定进程pid的子进程树user显示指定用户user的子进程树-a显示完整的

命令行参数,包含pid,参数或内存驻留情况(括号内的表示被换出)-c不使用精简方式-h突出显示正在执行的进程-H<pid>突出显示指定进程,若指定进程不存在,则失败-l长列格式显示树状图-n按pid排序,而非默认进程名排序-p显示pid-u显示用户名称3)示例#pstree#显示系统进程树

#pstree-p|more#分屏显示系统进程树#pstree-p|grepvsftpd#查询进程vsftpd#pstreeuser#显示指定用户(比如root)的进程3.终止进程执行(kill

)1)功能及用法向指定进程(pid)发送一个特定的信号(signal)。默认情况下,kill发送终止信号TERM,其值为15。按照系统规定,当进程收到某信号后,应该采取相应动作,默认动作是结束执行。kill的用法为:kill[-

ssigname|-nsignum|-signum]pid...kill-l[signame]2)参数说明pid:进程编号-l:列出所有可用的信号-lsigname/signum:列出指定信号-ssigname、-nsignum、

-sig:指定发送的信号,可用的信号有HUP(1)、INT(2)、QUIT(3)、KILL(9)和TERM(15)等,另外还可是系统为用户保留的USR1和USR23)使用举例#kill-l#列出所有信

号(参见表3-38)#kill-93231#发送信号9(KILL)终止pid为3231的进程##终止名为named的进程#pstree-p|grepnamed#查询进程信息#kill-91656#发信号9,终止pid为1656的进程#kill-KILL1656#同上#kill-SI

GKILL1656#同上4.信号的捕获(trap)1)功能及用法通常只处理一些人工软中断信号,在这些信号中HUP、INT、QUIT、USR1、USR2和TERM是可屏蔽的,而KILL是不可屏蔽的。trap用法为:trap[-lp][[

arg]signals]收到信号后的进程行为一个进程收到信号的处理方法有3种:系统默认(参见表3-38,一般是终止当前进程);忽略;定义一个新动作(通过命令trap可以完成这些工作)。用户可以根据需要,使用trap为进程设置对信号的处理方法(以上3种之一,若不设置,则采取系统默

认)。2)参数说明-l:用于列出可用信号(trap-l等于kill-l);-p:用于显示所有或指定信号已经定义的动作;signals:为信号;arg:为命令或由“;”连接的命令序列或shell

函数(见后述),表示当信号signals到来时将执行由arg规定的动作。2)参数说明(续)①如果arg被忽略(缺或不存在),则signals的所有行为将被自动恢复为调用trap前的设定。②如arg是空串,则signals将被忽略。③如果trap没有选项和参数,则显

示当前所有已定义的信号动作。相当于trap-p。3)信号捕获示例#trap'echo-e"Youpressed^C!\n"'2#捕获2#trap-p2#显示INT信号动作##按一下组合键^C,观察一下效

果#trap#列出当前信号动作#trap''2315#捕获并忽略2、3和15。##再按组合键^C,观察一下效果#trap2315#恢复信号2,3,15的之前动作##再按组合键^C,观察一下效果5.进程挂起或前/后运行切换当一个交

互式进程正在运行时,用户可以通过按^Z将它挂起。之后,可让其在后台等待运行,也可让其从后台再重新回到前台运行。实现这些功能的命令是fg、bg,还有jobs命令用于这些作业队列查询和管理。用法为:fg[job]bg[job]

jobs[options][job…]fg、bg和jobsfg(foreground)的功能是让被挂起的进程或作业到前台来运行;bg(background)的功能是让被挂起的进程或作业在后台运行,就像用符号“&”启动的那样。若不指定job则默认使用当前作业。job列所有被挂起的进程。

fg、bg和jobs示例$manbash#启动对bash的帮助##按^Z挂起进程manbash$bc#启动计算器进程bc(退出办法是按^D键)##再按^Z挂起进程bc$jobs#查询已经挂起的进程$fg#将最后挂起的进程拉到前台$fg1#将编号为1进程拉到前台3.

2.7文件或目录比较命令1.比较两个文件的内容(cmp)2.比较文件的差异(diff)3.逐行比较两个文件已经排序的文件(comm)4.显示或截取文件行的指定部分(cut)5.连接文件的行(paste

)6.连接两个文件的行(join)7.文本文件排版(fmt)8.文本文件包装(fold)1.比较两个文件的内容(cmp)1)功能与用法用于比较两个文件是否有差异。默认情况下,若发现有差异则标示出第一个不同的字符和行号后退出。用法:cmp[-l][-s]file1fil

e2[skip1[skip2]]2)参数说明-l:显示出所有不同的位置和差异-s:只返回退出码。0-相同;1-不同;>1:错误skip1,skip2:分别为file1和file2开始位置3)示例及说明$cm

pprog.o.bakprog.o#确定两文件$cmp-lprog.o.bakprog.o#显示两个文件的所有不同字节对$cmp-sprog.c.bakprog.c#比较两个文件,而不输出信息,可使用其返回值说明:通常,使用cmp命令比较非文本文件,使用

diff命令比较文本文件。2.比较文件的差异(diff)1)功能与用法用于比较文本文件,且仅当输入为文本文件时才有效,也可用于比较目录。用法为:diff[options]file1file2若file1为目录,

而file2不是,则将目录中的与file2同名的文件与file2比较,反之亦然。当file1和file2都是目录时,比较其中相应文件的内容。若使用-r选项,则做递归处理。3)示例$diffchap1.backchap1#比较文件ch

ap1.bak和chap1$diff-wmyp.c.bakmyp.c#比较两个文件,但是忽略空格字符个数的区别$diff-rdir1dir2#递归比较dir1,dir23.逐行比较两个文件已排序文件(comm)比较两个已排序

文件并显示结果。用法为:comm[-123]file1file2默认情况下,输出包含3栏:第1栏为file1中的不同行,第2栏为file2中的不同行,第3栏为两个文件相同的行。2)参数说明-1:禁止输出第1栏;-2

:禁止输出第2栏-3:禁止输出第3栏3)示例#comm-12file1file2#显示两文件中相同的行#comm-23file1file2#显示只出现在file1中的不同行#comm-3file1file2#只显示两文件中不同的行4.显示或截取文件行的指定部分(c

ut)1)功能与用法用于从文件或标准输入中读取内容,并截取每一行的特定部分,然后将结果送到标准输出。用法为:cut[options][files]2)参数说明-bList:指定字节列表;-cLis

t:指定字符列表-fList:指定文件中输出的域列表;-s:不输出不包含定界符的行-dSep:指定Sep作为输入文件域分隔符,默认为Tab--output-delimiter=Sep:指定Sep为输出域分

隔符,默认无在使用-b、-c和-f时,列表可用以下方式指定。N:第N个;N-M:从第N~M个。N-:从第N个到最后。-M:第1~M个。N1-M1,…,Nn-Mn:多个列表。3)示例##显示系统中的所有用户名#cut-d:-f1/etc/passwd##显示以Tab分隔的组和组成员

#cut--output-delimiter=$'\t'-d:-f1,4/etc/group5.连接文件的行(paste)1)功能与用法用于连接输入文件的行。默认情况下,paste将每个文件的行当作一栏,并用制表符水平连接它们(并行合并)。顺序连接时,可以将paste命令作为c

at命令。用法:paste[options][files]2)参数说明-dSep:指定在并行时使用Sep作为输出分隔符,默认为Tab。-s:顺序合并文件。3)示例##将多个文件按栏粘贴到一起$pastefile1file2file3##用“@”作

为栏分隔符$paste-d"@"namesplaces>emailusers##以3栏方式列当前目录$ls|paste---6.连接两个文件的行(join)1)功能与用法用于连接两个文件的数据字段。join读取指定的文件,并

根据“连续指标”连接文件中的行,将结果写到标准输出。这里的“连接指标”是指两个输入文件中具有相同值的(指定)域。被连接的文件必须为文本文件。用法为:join[options]file1file22)参数说明选项功能描述-1<filedid>在第1个文件的fieldid域

连接文件-2<filedid>在第2个文件的fieldid域连接文件-a#除显示原输出外,还显示文件#中无相同“连接指标”的行。#为1或2代表文件1或2-estring对于空的域使用string来填充-i比较域内容时,忽略大小写差

异-o<fmt>按照指定格式输出结果。fmt=file:field,file:field,…-t<c>指定c为域分隔符-v#同-a,但仅显示文件#中无相同“连接指标”的行3)示例##在默认域(第1文件的第1域)上连接文件$join-t:/etc/passwd/etc/group

##在默认域上连接文件,空域用字符串“---”代替$join-e"---"-t":"/etc/passwd/etc/group##连接文件并按指定格式输出(输出第1文件的第1,3,4域和第2文件的第4域)#join-t:-e----o1.1,1.3,1.4,2.4/etc/pass

wd/etc/group7.文本文件排版(fmt)1)功能与用法fmt的功能是从指定的文件里读取内容,将其按照指定格式重新编排后输出到标准输出,因此可用其进行简单“排版”。用法:fmt[-num][options][files]2)

参数说明-c:每段前缩排两列-pstring:仅合并含有指定字符串string前缀的行-s:分隔长行,但不做格式处理-t:首行与其他行有不同缩进-u:字间以一个空格间隔,句子间以两个空格分隔-num:指定最大列宽,默认为75(有的默认为72)8.文本文件包装(fold)

1)功能与用法功能是将输入文件的长行分成多个固定宽度的行,然后将其输出到标准输出,默认行宽为80列。用法为:fold[options][files]2)参数说明-b:按字节计算宽度,默认值是按列计数

-s:在空格处分行;-c:按字符计算宽度;-w#:以#的值为最大行宽,默认值为803)使用示例##将文件myfile按72列宽度,在空格处分行$fold-s-w72myfile3.2.8其他操作命令1

.清屏命令(clear)2.字符串或变量输出命令(echo)3.变量输入命令(read)4.显示环境变量命令(env)5.环境变量的定义(export)6.定位可执行程序及相关信息(which、whereis、w

hatis和apropos)7.别名管理(alias、unalias)8.任意精度计算器(bc)1.清屏命令(clear)clear用于清除用户的终端屏幕,使光标回到屏幕的左上角。其用法为:clea

r说明:在一般终端都可以使用组合键Ctrl_L(^L)完成清屏操作。2.字符串或变量输出命令(echo)1)功能与用法将命令行参数中的字符串或变量的值写到标准输出。默认情况下,每个echo命令执行完

毕后会产生一个换行符,如果不带参数执行此命令,将输出一个空行。用法为:echo[options]string...2)参数说明-e:用于处理转义字符;-n:用于抑制默认的换行符;-E:用于抑制对转义字符的处理。3)示例#显示字符串常量$echoPleaseinse

rtdiskette…#不处理转义字符$echo"Mycellphonenumberis:\n13903750000"#处理转义字符$echo[-e]"Mycellphonenumberis:\n\t13903750000"$echo-n"Iam

student,"#不处理换行$echo"mynameisBillJoy"#以上命令的输出在同一行上3.变量输入命令(read)read从标准输入上读入一行,并将它读到的内容按分隔符分隔的字符串传递给相应变量。若值的个数大于变量个数,

则多余的部分赋给最后一个变量;若值的个数小于变量个数,则后面多余的变量被置空。如果没有指定变量名,则默认使用REPLY作为变量名。用法为:read[-ddelim][-nnum][-pprompt][-r][-s][-ttime]var1v

ar2…2)参数说明参数功能-ddelim指定新的分隔符-nnum当read读到num个字符后返回-pprompt设置提示信息-r取消转义字符的转义作用。此种情况下不能使用继续行-s安静方式。键盘输入屏幕不回显,可用于密码输入-ttimeout设置超时时间为timeout。当等待时间超过timeo

ut秒后自动返回3)示例$readxy#输入:HelloWorld$echo-e"x=$x\tVary=$y"#x=Helloy=World$read-p"NameandTelephonenumber:"xy#输入:Bill1234

56$echo"Nameis$x,andTelephoneis$y"$read-s-p"PasswordPlease:"p#读取密码p。输入时屏幕不回显$echo"Passwordp="$p#显示密码

变量p的值4.显示环境变量命令(env)用于显示当前环境变量或为一个将要运行的命令设置临时环境变量。如果不带参数运行,则它将显示用户所有当前环境变量。用法为:env[-|-i][-uenv_var][va

r=value]…[cmd]参数:-i或-:用于忽略所有继承的环境变量设置;-uenv_var:用于取消env_var环境变量的设置;var=value:设置新的环境变量var,其值为value;cmd:为在新环境下执行的命令。env示例env设置或取消的环境

变量只对cmd的运行子环境有效,而不影响当前的环境变量。env的示例:#date#显示当前系统日期#envTZ=GMTdate#以新环境变量执行命令,显示格林尼治标准时间5.环境变量的定义(export)export用于

环境变量的定义、修改和撤销。其用法为:export[-fn][name[=value]]...export-p第1种用法用于定义、修改或撤销环境变量。-f:用于指定一个函数;-n:用于撤销一个环境变量。

第2种用法用于显示当前shell通过export定义的环境变量。export示例$my_env1="MyEnv1"#定义局部变量my_env1$exportmy_env1#将my_env1变为环境变量

$exportmy_env2="MyEnv2"#直接定义环境my_env2$env|grepmy_env#显示新定义环境变量定义$echo$my_env1$my_env2#显示新定义环境变量$export-nmy_env1#撤销对my_env1的定

义$env|grepmy_env#显示新环境变量的定义(只有my_env2了)关于export的说明从示例可以看出,可以通过先定义变量,再执行export命令的办法定义环境变量:my_env1="My

Env1";exportmy_env1也可采用一步走的办法直接定义环境变量:exportmy_env2="MyEnv2"对于错定义或不再需要的环境变量可以重新定义或撤销。还有命令declare用于环境变量的管理。6.定位可执行程序及相关信息定位一个可执行程序及相关信息的命令有which

、whereis、whatis和apropos等。其它关于文件定位的命令还有find和locate等,请参见第5章。1)which定位一个可执行程序的位置,输出信息中包括别名和路径等。用法为:which[options]

filenameswhich只能在PATH指定的范围内定位可执行文件的位置。可用--skip-alias抑制别名的输出。示例如下:$whichwhich#查找命令which的位置$whichls#查找命令ls$which--s

kip-aliasls#查找命令ls,不要别名2)whereis可用于对命令、源代码和手册页位置定位。其用法为:whereis[-bmsu]file...参数-b、-s和-m分别用于搜索file的二进制、源代码和手册页文件,比如:#whereislswho#wher

eis-bls#whereis-mls3)whatis和aproposwhatis和apropos用于查找whatis数据库。whatis等价于man-f,用于从whatis数据库中查找完整的单词,属于精确查找,而apropos等价于

man-k,用于从数据库中查找字符串,属于模糊查找。示例如下:#whatisecho或man-fecho#aproposecho或man-kecho7.别名管理(alias、unalias)常用的ll和红帽系统超级用户使用的c

p、mv等都是别名。别名管理可通过以下命令实现:1)别名定义(alias)2)别名取消(unalias)1)别名定义(alias)alias可用于为一个可执行程序定义别名。用法为:alias[-p][name[=value]]…参数-p用于显示别名列表,当不带参数运行alia

s时,将显示当前的所有别名。应用示例如下:#alias#显示所有已经定义的别名#aliasllrm#显示ll和rm的别名定义#aliasli='ls-l-i'#定义别名li,其功能为ls-l-i2)别名取消(unalias)

unalias用来取消由alias定义的别名,其用法为:unalias[-a][name...]选项-a用于取消所有别名。示例如下:#unaliasll#取消别名ll#unalias-a#取消所有别名。8.任意精度计算器(bc)bc是一个支持任意精度计算的解释语言,

提供交互式操作。其用法为:bc[-l][file...]若提供有file,则bc首先读取指定的输入文件file,在输入处理完毕后,继续读取标准输入作为处理和解释对象。若不带参数运行bc,则它进入交互式界面。bc支持类似C语言的语法,还

可通过-l选项使用函数库。可以下办法之一退出:quit,halt,Ctrl+D。1)数bc命令接受10、8、16进制或其他进制数作为输入和输出进制。默认值为十进制。ibase=n指定输入进制;obase=m指定输出进制。scale=n来指定输出数据小数部分的位数为。在16进制中,A、B、

C、D、E和F分别表示十进制的10、11、12、13、14和15。2)变量在bc中,数可被存入两种类型变量:简单变量和数组变量,数组变量形式为name[]。所有变量的字母都必须是小写的。特殊变量有ibase、obase、scal

e和last。last代表最后显示的数据的值。显示一个变量值的办法是输入变量名后直接回车,也可以通过直接输入数值或表达式后直接回车的办法进行直接计算或数制转换(输入和输出进制由ibase和obase决定)。注

释、继续行和表达式3)注释可以使用shell的方式进行注释,也可以使用C语言中的“/*…*/”进行注释,但不能使用//方式。4)继续行可以像C语言和shell一样使用继续行。5)表达式可像其

他高级语言一样使用表达式,在表达式中可用的运算符如表3-49所示。6)函数(1)bc的函数有:length(var)、read()(读取字符串)、scale(var)(求小数位数)和sqrt(var)(开平方)等。(2)库函数(使用-l时):s(var)、c(v

ar)、a(var)、l(var)、e(var)和j(n,x)(x的n阶贝塞尔函数)。(3)自定义函数:方法为:definefunc_name(parameters){auto_liststatement_list}7)语句bc可使用的语句有:printlist(

输出列表);if(expr)statement1elsestatement2(if结构);while(expr)statement(while结构);for([expr1];[expr2];[expr3])statemen

ts(for结构);break;continue(循环控制);halt、quit(退出bc);return,return(expr)(函数中返回);limits(显示bc的最大值)等。8)示例(1)一般(数学)计算。#bc

-l#(使用库函数)进入bc,输入以下内容scale=4/*定义小数位数*/123+456*850-s(2)^2387722.1734/*输出结果*/(2)进制转换。obase=16/*定义输出进制为16*/32767

/*结果为7FFF*/123456/*结果为1E240*/8)示例(续)(3)使用自定义函数。#bc-l#(-l使用库函数)scale=2definemyf(x){/*定义函数myf*/autoi,j/*定义自动变量*/j=1for(i=1;i<=x;i++)j=i*

jreturn(j)}myf(5)/*计算myf(5),结果为:120*/8)示例(续)(4)在shell中使用bc计算。#计算并显示π的值$echo"scale=10;4*a(1)"|bc-l#计算π的值,并赋给变量pi$pi=$(

echo'scale=10;4*a(1)'|bc-l)$echo$pi#显示π的值:3.14159265323.3服务和软件包管理*3.3.1软件包管理3.3.2服务管理3.3.1软件包管理1.红帽2.Ubuntu1.红帽红

帽系统都以软件包管理工具为rpm和yum/dnf。软件包名格式为:pkgname-version.type.rpm以bash-4.3.42-7.fc24.i686为例说明如下。(1)pkgnam软件包名,b

ash。(2)version:版本号,bash-4.3.42-7.fc24。(3)type:i686。(可能类型有alpha、i[3456]86、sparc、src和noarch)。(4)rpm:扩展名,不可变。1)本地管理命令rpmrpm命令的参数较多,常用方法如

下。(1)rpm{-q}[options]#查询(2)rpm{-i}[options]packages#安装(3)rpm{-e}[options]packages#删除(4)rpm{-U}[options]packages#升级(5)rpm{

-F}[options]packages#重新安装(6)rpm{-V}[options]#校验rpm应用举例(查询)rpm-qa#查询所有已安装的包rpm-qpkgname#查询指定包rpm-qipkgname#查询已安装包的详细信息rpm-ql

pkgname#查询已安装包中的内容rpm-qffilename#查询指定文件的归属包rpm-q-providespkgname#查询功能信息rpm-qRpkgname#查询包的最低依赖要求rpm-qprpmfil

e#查询rpm包文件中的内容rpm应用举例(查询示例)#rpm-qdhcp#查询是否安装了dhcp#rpm-qa|grepsysstat#是否安装了sysstat#rpm-qidhcp#查询dhcp详细信息#rpm-qldhcp#查询dhcp包的内容#rpm-qf`whichbash`#

查询bash的归属包rpm应用举例(查询安装)rpm多安装用于已经下载到本地的包。用于安装软件包的常用形式为:rpm-ivhpackage#package为包文件安装示例:#rpm-ivhsysstat*#安装rpm应用举例(升级与删除)升级形式:rpm-Uvhpackages

删除形式:rpm-epackages由于包间有依赖关系,建议不要使用rpm随便删除系统中已经安装的包。rpm应用举例(验证)系统中安装的软件包可能会因为各种误操作,如修改权限、删除等造成软件包内容的损坏或不一致,因此有必要进行校验。

常用校验形式如下:rpm-Va#验证所有已经安装的包rpm-Vpkgname#验证指定包rpm-Vffilename#验证包含指定文件的包rpm-Vprpmfile#验证rpm包文件2)本地管理命令(yum或dnf)yum正在被dnf所替代,不过dnf兼容yum,先把dnf和

yum看作同一个命令,因为一些版本还没有跟上,还在使用yum。用法yum[options][cmd][package...]常用选项有:-y:默认yes;-q:安静工作;-v:与-q相反;-x:反向选择,排除指定包。yum或dnf常用命令help[command]:帮

助。list[...]:列出可用包的各种信息。installpackage(s):安装软件包。update[package(s)]:升级软件包。check-update:检查可用更新。upgrade[package(s)]:带有选项--o

bsoletes的update。remove/erasepackage(s):删除软件包。info[...]:列出可用包的描述信息。repolist[all|enabled|disabled]:列出可用资源库。yum或dnf应用示例#yumlist#列出资源库中所有软件包#

yumcheck-update#检查可更新包#yumupdate#更新所有包#yumupdatekernel#更新内核#yuminstallxinetd#安装xinetd包2.Ubuntuubuntu采用Debian的软件包管理机制。ubuntu有两种类型的软件包:二进制软

件包(.deb)和源码包(.dsc)。软件包文件名的格式为:pkgname_version_reversion_architechture.debpkgname_version_reversion_architechture.dsc其中,filename为软件

包名;version:为版本号;reversion为修订版本号;architechture为体系结构或类型;.deb/.dsc为扩展名。1)本地包管理工具dpkgdpkg用于本地软件包的管理,用法为:dpkg[option

...]actiondpkg常用参数-i,--installpackage-file...:安装--unpackpackage-file...:解包-V,--verify[package-name...]:校验,类

似rpm-V-lpackage-name-pattern...:列已安装包,类似rpm-qa-Lpackage-name...:列已安装包的内容,类似rpm-ql-Sfilename-pattern...:列文件归属包,类似rpm-qf-spackage-name...:报告包状态信息,类

似rpm-qs-rpackage...:删除软件包,类似rpm-e-Ppackage...:清理已安装或被删除包(包括配置文件)dpkg应用示例dpkg-l#列出所有已经安装的软件包dpkg-l|awk'{print$2,$3,$4}'|grepbash#列

出已安装的与bash相关的包dpkg-Lbash#列出bash包的内容dpkg-S`whichbash`#查询bash命令的归属包2)apt-cacheapt-cache用于包缓存的管理与操作。用法为:apt-cache[-opti

ons][action]常用选项有:--names-only,-n:只显示名字--all-names:显示所有名字,包括虚拟包、丢失依赖关系等--recurse:构造正向和反向依赖关系,显示所有包相关信息--instal

led:仅限于已经安装的包apt-cache常用功能showpkgpkg...:显示软件包信息stats:显示软件包缓存信息showpkg...:显示软件包记录信息searchregex...:查询软件包dependspkg...

:显示软件包依赖关系信息pkgnames[prefix]:显示以[prefix]开头的软件包名apt-cache使用示例#apt-cachestats#apt-cacheshowpkgbashtarvsftpd#apt-cacheshowbashtarvsftpd#ap

t-cachesearchbashtarvsftpd#apt-cachedependsftpd3)apt-getapt-get用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软

件包。用法为:apt-get[options][action]apt-get常用选项-d,--download-only:只下载-f,--fix-broken:试图修复已破坏的依赖关系-q,--quiet:安静工作;--reinsta

ll:重新安装最新版本-s,--no-act:仅模拟而不真正工作-y,--assume-yes:默认yes;--assume-no:默认no-u:显示升级的包信息--no-upgrade:安装时不升级;--only-upgrade:

只升级--show-progress:显示进度;-h,--help:帮助--purge:删除包时使用purge,remove--purge等同purgeapt-get常用功能install:安装;update:更新包索引upgrade:更新软件包

;download:下载包dist-upgrade:将系统升级到新版本remove:删除;purge:删除并清理source:获取源代码包;check:检查,更新缓存autoclean:将已经删除

了的软件包的.deb安装文件从硬盘中清除clean:删除包缓存中的所有包autoremove:删除为了满足其他软件包的依赖而安装的、但现在不再需要的软件包apt-get应用示例#apt-getupdate:更新包索引。#apt-getupgrade:更新所有软件包#apt-getdis

t-upgrade:将系统升级到新版本#apt-getinstallvsftpd:安装vsftpd服务器#apt-getsourcevsftpd:下载vsftpd源代码。4)aptapt整合了apt-get和apt-cache,其用法为:apt[-h]{list|sea

rch|show|update|installpkg|removepkg...|upgrade|full-upgrade|edit-sources|{-v|--version}|{-h|--help}}子功能list、show、install和re

move等功能分别对应apt-cache和apt-get的相关功能。apt应用示例有了apt之后,ubuntu的软件包管理方便多了(相当于红帽的yum/dnf)。如查询和安装软件包ntp*,可分别使用以下命令:#aptlistntp*#查询ntp*软件

包#aptinstallntp*#安装ntp*软件包3.3.2服务管理systemd是现行Linux的启动和服务管理工具。systemd对服务的管理通过工具systemctl来实现。systemd与init和telini

t在引入systemd的系统中,init命令被替换成systemd,telinit命令被替换成systemctl。当系统启动时,systemd作为1#进程运行,它的作用是初始化系统,并管理系统和用户空间的各种服务。为了与Sysvini

t兼容,如果systemd作为init调用且PID≠1,则它执行telinit(systemctl),且不加修改地传递所有的命令行参数给telinit。1.服务与服务名系统中有很多服务,每个服务至少对应一个服务名,但在

不同系统中名字又可能不相同。比如vsftpd的服务名在红帽与Ubuntu下均vsftpd;ssh服务在红帽与Ubuntu分别为sshd和ssh;WEB服务在红帽与Ubuntu下分别为httpd和apache2等。2.服务管理工具systemct

l1)功能及用法systemctl用于systemd的系统和服务管理。systemctl的用法为:systemctl[options]{CMD}[NAME…]其中,options为选项;CMD为子命令;NAME为被操,控的对象,可以是服务名。2)syst

emctl的部分选项选项功能--help,-h帮助--type=,-t指定类型,如service、target和socket等--all,-a列所有unit--quiet,-q抑制标准输出--runtim

e当与enable/disable/is-enabled或其他命令配合使用时,只临时修改配置,而不保存到磁盘,对下次启动无效3)子功能CMD命令功能list-units列出所有已知的unitis-active[NAME…]检查指定unit是

否在活动。status[NAME„]检查指定unit或进程的运行情况show[NAME„]显示unit或JOB的属性信息start/stop/restart[NAME„]启动/停止/重启服务reload[NAME…]重

载指定(而非systemd的)服务配置文件is-enabled检查指定unit是否已经启用enable/disable[NAME„]启用/禁用指定服务3.服务管理示例这里仅以对vsftpd服务管理来说明使

用systemctl管理服务的过程。要管理一个服务,必须要先知道服务的名字。vsftpd服务器的服务名为vsftpd。服务管理安装服务软件包(若已安装,则不必再安装)#yum-yinstallvsftpd#红帽系统#apt-get-yinstallvsftpd#ubuntu系统列所有

服务#systemctllist-units#列所有对象#systemctl-tservicelist-units#列所有服务服务vsftpd管理#systemctl|grepvsftpd#检查vsftpd#systemctlis-enabledvsftpd#检查是否启用#syst

emctlstatusvsftpd#检查状态#systemctlenablevsftpd#启用#systemctlstartvsftpd#启动#systemctlstopvsftpd#停止#systemctlrestartvsftpd#重启动#system

ctldisablevsftpd#禁用

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?