linux系统中shell命令的解释

命令行


当用户登录到Linux系统时,您可以看到一个shell提示符来标识命令行的开始。用户可以在提示符的后面输入任何命令和参数:


$日期


1123个01:34:58 CST 1999


美元


当用户登录时,它实际上进入shell,它遵循某种语法来解释输入命令并将其传递给系统。第二个单词是命令的选项或参数。命令行中的每个单词必须用空格或制表符隔开。格式如下:


$命令选项参数


选项和参数


选项包括代码的一个或多个字母,其中有一个减号(在Linux前面有一个减号,以区别于选项和参数),可用于更改命令执行操作的选项类型:


$ ls


motd passwd


美元


这是ls命令,没有选项,它列出当前目录中的所有文件,只列出各种文件的名称,并且不显示任何其他信息。


美元- L


总2


- rw-R -R - 2市威之海书22 4月20日20:37公告


- rw-R -R - 2市威之海书796 4月20日20:37 passwd


美元


添加L选项以列出每个文件的一行信息,如数据的大小和数据最后修改的时间。


大多数命令被设计为可接受的参数。参数是在命令行中的选项之后键入的一个或多个单词,如:


ls - l文本


- rw-R -R - 2市威之海书22 4月20日20:37公告


- rw-R -R - 2市威之海书796 4月20日20:37 passwd


美元


将显示文本目录中的所有文件和信息。


有些命令,如ls,可以接受参数,一些命令可能需要一些最小的参数数。例如,CP命令需要至少两个参数,如果参数的数量不符合命令要求,shell将给出一条错误消息:


为CP -我该新的数据


注意:命令行中的选项前面是参数输入。


命令行功能


命令行实际上是一个文本的缓冲区,可以进行编辑,并可进行文字编辑,然后回到车上。如使用Backspace键删除刚键入的字符,可以进行整行也可以删除、插入字符,允许用户输入的命令,尤其是复杂的命令,如果有一个打字错误,不需要输入命令,只要编辑操作的使用,你可以改正错误。


通过使用上箭头,我们可以重新显示刚刚执行的命令。通过使用这个函数,我们可以重复执行以前执行的命令,而不必重新键入命令。


巴什拥有以前输入的命令的列表,这是所谓的命令历史表。按箭头,你可以显示在命令行命令。同样,按向下箭头可以向下移动的命令列表,使以前的所有命令可以显示在命令行上,用户可以修改和执行这些命令。此功能将在10.4节中详细讨论。





在命令行中,可以放置多个命令,并用分号分隔单独的命令:


$ ls - F;CP -我该新的数据


你也可以输入几个命令行命令和使用反斜杠来继续命令行到下一行。


美元;


MYDATA


新的数据


上面的命令是进入三线,和前两线端与反斜杠和三线作为一个命令行。


外壳中的特殊字符


除了shell中的普通字符外,还可以使用一些具有特殊意义和特殊功能的特殊字符,在使用时应注意其特殊含义和作用范围,下面介绍了这些特殊字符。


通配符


模式匹配的通配符,如文件名、名、路径搜索,搜索字符串。常用的通配符*和字符序列括在方括号{ }。用户可以包含这些字符的文件名作为命令的参数,形成了所谓的模式字符串







*代表任何字符串(长度可以不同),例如,×匹配任何字符串,由F.但是注意头应支付给点之前的文件名称(。)的斜线的名称和路径(/)必须是明确的,例如,*无法比拟的。文件,*可以match.file。


表示任何单个字符的。


{ }指定一个字符范围,只要范围的文件名{ }在位置字符{}内指定文件名和模式匹配。方括号中的字符的范围可以由字符直接给出,也可以由起始字符、终止符中间的连字符(-)。例如,F {一}是D F { ABCD }一样的外壳将使用所有的文件名匹配指定模式字符串中的命令行命令的参数,形成最终的命令,然后执行命令。


下面我们给表10-1说明这些通配符的具体含义。


表10-1一个通配符的意义


模式串的意义


*


当前目录中所有文件的名称。


* *在当前目录下所有文件名中有文本的文件名。


{在当前目录下以a、b、c、d和m开头的所有文件的名称。


型糖尿病


当前目录中的所有文件的名称,包括a、b、c、d、m和只有后面一个字符的文件名。


/ usr /斌/


名称的所有文件有两个字命名的目录下的 / usr /箱。


特别重要的是要注意,连字符-是唯一有效的方括号,表示字符的范围,例如在方括号中的共同特征,*和只有在括号通配符,如果他们出现在方括号中,他们也失去通配符成为普通字符的能力。例如,只有一个括号的模式- { * } ABC是一个通配符,*和所有的人都是平凡的人物,所以它只能匹配字符串- * ABC和AABC。


最后,介绍一些需要注意的问题,当使用通配符,*,和{ }有壳有特殊的意义,所以这些人物不应该出现在正常的文件名。特别是,他们没有出现在目录名或外壳匹配可以递归递归。另一个要注意的是,如果没有文件名指定的模式串匹配的目录,壳牌将模式串本身作为一个参数传递给相关的命令。这可能是命令中的特殊字符的原因。


引号


在shell中,引号分为三种类型:单引号、双引号和反向引号。


单引号'


由单个引号括起来的字符看起来像普通字符,当一个特殊字符被包含在一个引号中时,它将失去它原来的意义,只能被解释为一个共同的字符:


$$路径


$ $字符串


$路径


美元


可以看出,该$保持其本身的意义,作为一个共同的字符出现。


双引号


用双引号括起来的字符,除了$,$,它是用指定变量的值替换变量和$。对于这个词,它是一个转义字符,它告诉shell不处理它后面的字符,只是作为一个普通字符。正如你所能想象的,在双引号前面只有四个字符,$,,,和‘本身'。如果数字不在前面,shell会将其与否匹配。


例如,我们假设路径的价值。 / usr /斌: /箱,输入以下命令:


teststring美元=$路径 $路径


$ echo $ teststring


/ usr /斌: / bin $路径


美元


读者可以试着找出第二个双引号没有添加什么结果。


反引号







与此字符相对应的键通常位于键盘的左上角。不要把它与单引号(')混淆,引号括起来的字符串被shell解释为命令行。执行时,shell首先执行命令行,并接受标准输出结果,而不是整个反引号(包括两个反引号):


$ pwd





为字符串=当前目录` PWD `


$ $字符串


Current directour is /home/xyz


美元


当shell执行命令,先执行命令pwd ` PWD `,并输出结果/家/ XYZ代替` PWD `,最后输出结果的整体置换后。


这个函数可以用后面引号的函数来代替,也就是说,计数器引号的执行结果被分配给指定的变量:


今天$ =日期


今天的回音是今天美元。


今天是4月15日星期16:20:13 CST 1999


美元


后面的行情也可以嵌套。然而,需要注意的是,内层的反引号必须逆转与反斜杠()重要当嵌套使用。例如:


为ABC = `回波用户数量 `谁| wc-l ` `


回声$ abc


用户数为5


美元


shell的特殊字符也可以在引号后面的命令行中使用。shell实际上将执行在中的结果中指定的命令。执行时,命令中的特殊字符,如$


$ ls


注意注意unix.dir readme.txt


teststring美元=` echo $家` ` LS {网络} * `


$ echo $ teststring


/家/ yxz注意


美元


在其他情况下,读者可以自己尝试。


注释


在shell编程,一些文本线往往注释增加了程序的可读性,在外壳与性格# 在评论在文章的开头。