命令行实际上是可以编辑的一个文本缓冲区,在按回车之前,可以对输入的文本进行编辑 。比如利用BACKSPACE键可以删除刚键入的字符,可以进行整行删除 , 还可以插入字符,使得用户在输入命令,尤其是复杂命令时,若出现键入错误,无须重新输入整个命令 , 只要利用编辑操作,即可改正错误 。
利用上箭头可以重新显示刚执行的命令,利用这一功能可以重复执行以前执行过的命令,而无须重新键入该命令 。
bash保存着以前键入过的命令的列表,这一列表被称为命令历史表 。按动上箭头,便可以在命令行上逐次显示各条命令 。同样,按动下箭头可以在命令列表中向下移动,这样可以将以前的各条命令显示在命令行上,用户可以修改并执行这些命令 。这一特征将在10.4节中进行详细的论述 。
在一个命令行中还可以置入多个命令 , 用分号将各个命令隔开 。例如:
$ ls -F;cp -i mydata newdata
也可以在几个命令行中输入一个命令,用反斜杠将一个命令行持续到下一行 。
$ cp -i \\
mydata \\
newdata
上面的cp命令是在三行中输入的,开始的两行以反斜杠结束,把三行作为一个命令行 。
shell中的特殊字符
shell中除使用普通字符外 , 还可以使用一些具有特殊含义和功能的特殊字符 。在使用它们时应注意其特殊的含义和作用范围 。下面分别对这些特殊字符加以介绍 。
■ 通配符
通配符用于模式匹配,如文件名匹配、路经名搜索、字符串查找等 。常用的通配符有*、?和括在方括号[ ]中的字符序列 。用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配 。
* 代表任何字符串(长度可以不等),例如:“f*”匹配以f打头的任意字符串 。但应注意,文件名前的圆点(.)和路经名中的斜线(/)必须显式匹配 。例如“*”不能匹配.file,而“.*”才可以匹配.file 。
? 代表任何单个字符 。
[ ] 代表指定的一个字符范围,只要文件名中[ ]位置处的字符在[ ]中指定的范围之内,那么这个文件名就与这个模式串匹配 。方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符(-)组成 。例如,f [a- d] 与f [abcd]的作用相同 。Shell将把与命令行中指定的模式串相匹配的所有文件名都作为命令的参数,形成最终的命令,然后再执行这个命令 。
下面我们给出的表说明这些通配符的具体含义 。
■ 模式串
意 义
*
当前目录下所有文件的名称 。
*Text*
当前目录下所有文件名中包含有Text的文件的名称 。
[ab-dm]*
当前目录下所有以a、b、c、d、m开头的文件的名称 。
[ab-dm]?
当前目录下所有以a、b、c、d、m开头且后面只跟有一个字符的文件的名称 。
/usr/bin/??
目录/usr/bin下所有名称为两个字符的文件的名称 。
特别需要注意的是,连字符“-”仅在方括号内有效,表示字符范围,如在方括号外面就成为普通字符了 。而*和?只在方括号外面是通配符,若出现在方括号之内,它们也失去通配符的能力 , 成为普通字符了 。例如,模式“- a[*?]abc”中只有一对方括号是通配符,*和?均为普通字符,因此,它匹配的字符串只能是- a*abc和- a?abc 。
最后说明一下使用通配符时需要注意的一些问题 。由于*、?和[ ]对于shell来说具有比较特殊的意义,因此在正常的文件名中不应出现这些字符 。特别是在目录名中不要出现它们 , 否则Shell匹配起来可能会无穷的递归下去 。另外要注意的一点是:如果目录中没有与指定的模式串相匹配的文件名,那么Shell将使用此模式串本身作为参数传给有关命令 。这可能就是命令中出现特殊字符的原因所在 。
- mongodb 更新子文档 mongodb数据文件无法新建
- redis linux安装包 linux下redis包
- mongodb数据库语句 mongodb数据库文档
- mongodb中如何嵌入文档 mongodb嵌入式linux使用
- mysql的注释表达方式 mysql注释符号
- linuxmongodb启动服务 linux-mongodb
- linux备份工具 linuxmongodb备份命令
- yum-ymysql
- linux安装redis5.0 linux中装redis
- mongodb 中文文档 mongodb怎么设置中文
