本次我们来介绍一下Linux中的bash所具有的特性
bash的特性:
(1)命令行编辑
(2)命令历史
(3)命令别名
(4)命令替换
(5)文件名通配
(6)管道和 重定向
(7)变量
(8)编程
一、命令行编辑
(1)光标跳转:
Ctrl a:跳到命令行首
Ctrl e:跳到命令行尾
Ctrl u:删除光标至命令行首的内容
Ctrl k:删除光标至命令行尾的内容
Ctrl ←:向左一个单词一个单词移动
Ctrl →:向右一个单词一个单词移动
Ctrl l:清屏
(2)命令行展开:略,请自行百度
二、命令历史
(1)查看命令历史:history
清空命令历史:history -c
(2)命令历史的使用技巧:
①!n:执行命令历史的第n条命令
②!-n:执行命令历史中的倒数第n条命令
③!!:执行上一条命令
④!$:引用前一个命令的最后一个参数;与其相同的命令还有:按住[Esc]后松开按[.]
三、文件别名
注:在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程
(1)定义别名:
alias [别名] =‘[命令]’
eg:alias cls =clear 即用cls代替clear,定义后用cls命令可以达到clear的作用
(2)撤销别名:
unalias [别名]
eg:unalias cls 即撤销cls别名
(3)[命令]:
定义别名之后,我还想用一下命令本身,即[命令]
四、命令替换
当我们使用一些命令时,我们希望命令是随着环境的变化而产生一定的灵活变化的,这个时候我们就需要用到命令替换
(1)命令替换是指将命令的输出结果赋值给某个变量
命令替换的方式:
(1)反引号:`命令`
(2)():(命令)
即:命令替换是把命令中某个子命令(pwd)替换为其(echo)执行结果的过程
五、文件名通配
(1)* :匹配任意长度的任意字符(包括0个字符)
eg:
① [root@c ]# ls
ab abb abc abm xab
# 如有文件
② [root@c ]# ls ab*
ab abb abc abm
# 匹配以ab开头后面跟着任意字符
③ [root@c ]# ls *ab
ab xab
# 匹配以ab结尾
④ [root@c ]# ls *ab*
ab abb abc abm xab
#匹配包含ab的文件
(2)?: 匹配任意单个字符
① [root@c ]# ls a?
ab
② [root@c ]# ls a??
abb abc abm
(3)[]: 匹配指定字符范围内的任意单个字符
[abc] #匹配字母abc
[a-z] #匹配小写字母a-z
[A-Z] #匹配大写字母A-Z
[0-9] #匹配数字0-9
[a-zA-Z] #匹配大小写字母a-z
eg:
① [root@c ]# ls ?[0-9].log
#查询以“.log”结尾且“.log”前只有两个字符的文件且第二个字符是数字
② [root@c ]# ls [a-zA-Z]
#只查询字母文件,且文件名仅为单字母
(4)[^]:匹配指定字符范围外的任意单个字符
[root@c ]# *[^txt]
#查询不是以“.txt”结尾的文件
六、管道和重定向
(1)>:覆盖输出
>>:追加输出
Ps.重定向错误输出及追加方式,请自行百度。
eg:执行下面的 who 命令,它将命令的完整的输出重定向在用户文件中(users):
执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。
你可以使用 cat 命令查看users文件内容
输出重定向会覆盖文件内容,请看下面的例子:
如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾,例如:
(2)<:输入重定向
和输出重定向一样,命令也可以从文件获取输入
这样,本来需要从键盘获取输入的命令会转移到文件读取内容。
接上例:
注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。
(3)管道
命令1 | 命令2 | 命令3 | ……
管道用于将一个命令的输出作为另一个命令的输入。可以将个命令依次连接起来,前一个命令的输出作为后一个命令的输入。
eg:cat /etc/log/message | more
#在执行输出内容较多的命令时可以通过管道使用 more 命令进行分页显示
END
变量和编程内容太多,我们后面再具体介绍。