通配符
*:通配任意个字符
?:通配单个字符
[]与通配符配合使用
首先建立以下文件
SolidCaptureImage18113093
file[1-9]:表示以file开头结尾为1~9的文件,文件名应为5位,如file5等
ls file[1-9]
SolidCaptureImage18263531
*[a-c]:表示以a~c结尾的任意个字符开头的文件
ls *[a-c]
SolidCaptureImage18307328
[abc]?:表示以a或b或c开头的以一位字符结尾的文件,文件名应为2位,如a1等
ls [abc]?
SolidCaptureImage18388453
-_-| 因为我没有建立这样的文件,所以就无法找到匹配这个条件的文件
*[^abc]?:表示倒数第二位为除了a或b或c以外的任意字符的文件,文件名可以为:file_d1等
ls *[^abc]?
SolidCaptureImage18518968
 
history显示历史命令记录
默认记录1000条历史命令,可以在/etc/profile中更改HISTSIZE后面的值,每当系统注销时,会将当前用户的历史命令存储在~/.bash.history文件中,而系统运行时是保存在缓存里
最简单的调用历史命令的操作是键盘的上下方向键,但这只适合调用最近的一两条命令,比如现在存储了200条命令,如果要调用第98条,用上下键去翻看会很浪费时间,可以用“!98”来直接执行序号为98的命令
当前我的系统存储了498条历史记录,我需要直接执行第431条命令
SolidCaptureImage26039437
SolidCaptureImage26093265
直接输入!431就可以了
SolidCaptureImage26195031
或者我需要执行离当前位置最近的以“c”开头的命令
SolidCaptureImage26364812
输入!c
SolidCaptureImage26459843
还有一种匹配历史记录的方法,提示符下输入“ctrl+r”进入快速匹配模式,只用输入少量关键字,即可快速查找到历史记录中匹配的命令
比如我要再次运行yum install vsftpd,可以直接按一次ctrl+r,然后输入yu,即可匹配出yum install vsftpd的命令,这个方法最推荐使用,可以有效提高操作效率
SolidCaptureImage26613375
 
$()和 ``反向单引号:表示先执行括号或引号内的内容
反向单引号是“~”按键上的那个引号, ``和''是不一样的
分别运行这3条命令:
echo hostname
echo $(hostname)
echo `hostname`
SolidCaptureImage26898781
 
简单的命令行编辑技巧
  • ctrl+a回到shell行首
  • ctrl+e到行尾
  • ctrl+u从光标处删除到行首
  • ctrl+k从光标处删除到行尾包含光标处字符
图形下的open-terminal还多了一些技巧
  • ctrl+“左方向键”/“右方向键”按词移动光标位置
  • ctrl+shift+t:新建一个shell标签
  • ctrl+shift+w:关闭当前shell标签
  • ctrl+PGUP/PGDN:切换标签
tab键的使用
linux下包括cisco下面都有一种很好用的操作,就是tab补全,不管是命令还是文件名等,只要输入合法,都可以通过tab键快速补全,也是一种提高操作效率的好工具
比如输入命令ifconfig,我们只需要输入ifco,然后按 一次tab键就可以让系统自动补全ifconfig命令,或者只输入ifc,然后按 两次tab键就可以显示出以ifc开头的所有可能的命令,如ifcfg什么的,或者在进入某个目录时,如果记不太清楚具体路径,也可以通过按一次或两次tab键结合起来让系统帮助我们找到想要的东西
 
脚本基础
所有的脚本,文件开头一行都必须是“#!/bin/bash”,用来规定该脚本中的命令用哪种shell环境,每个脚本文件内只能定义一个shell环境,如果要定义perl环境,必须另写一个perl脚本,而不能在#!/bin/bash下再起一行#!/bin/perl
注意,这里的#并不是注释符,这样的写法是脚本固定格式
比如写一个最简单的脚本,名称为file1
#!/bin/bash
echo hello
exit 0
这样就完成了一个脚本的编写,执行结果应该是在屏幕显示hello这个单词
应该怎样执行呢?
脚本的执行有3种方法:
绝对路径:/root/test/file1
./文件名:./file1
用这两种方法,脚本文件都必须有“x”权限
或者不用“x”权限,在执行前加sh
sh 文件名:sh file1
SolidCaptureImage27988078