1.bash的特性

在LINUX进行SHELL编程是很常见的一项任务,熟悉BASH的特性,是十分必要的。

昨天花了一天时间,对BASH的特性进行了学习总结,发现过去的自己,对LINUX的BASH特性认识的很少,收获很多。

2.BASH支持命令行编辑

一直以来,和LINUX的COMMAND LINE打交道,只知道clear清屏,用退格键进行删除。其实,BASH支持命令行进行高效,快速的编辑。一些常用的,总结如下:

序号 命令快捷键 说明
1 ctrl+a 表示跳到命令行首
2 ctrl+e 表示跳到命令行尾
3 ctrl+u 表示清除从光标开始至行首的字符
4 ctrl+k 表示清除从光标开始至行尾的字符
5 ctrl+d 表示清除光标的下一个字符
6 ctrl+l 相当于clear

3.BASH支持命令行历史

其实就是关于history的用法。

关于history的使用技巧:

序号 技巧 说明
1 !NUMBER 具体执行哪一条命令。还有一种!-NUMBER的用法(这里的NUMBER标示从倒数开始的第几个命令,不常用)
2 !STR 从倒数开始匹配,找到第一个以STR开头的命令执行
3 !! 执行上一次的命令。似乎用上下箭头可能更方便些,但是,如果我们想在SHELL脚本中完成呢?
4 !$

进行快速引用,表示取得上一次命令的最后一个参数。

这个十分有用,因为我们经常的做法是查看一个文件,然后进行编辑,如果使用这一技巧,可以避免重复输入。当然,还有一个更为快速的方式,那就是esc+.的方式。

4.BASH支持补全

我们经常使用的技巧,比如我们敲了一个命令的一部分,或者一部分路径,就可以使用这一技巧,来快速完成。

命令补全的机制:PATH环境变量进行搜索

路径补全的机制:路径匹配

有些时候,如果我们连按2次TAB键,会将符合的全部列出,如果过多,会提示。

5.BASH支持命令别名

在WINDOWS DOS下,清屏命令是cls,可以在LINUX下定义别名。

[root@localhost test]# alias cls=clear[root@localhost test]# aliasalias cls='clear'alias cp='cp -i'alias l.='ls -d .* --color=tty'alias ll='ls -l --color=tty'alias ls='ls --color=tty'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'[root@localhost test]#

要撤销别名,直接unalias cls即可。

需要注意的是:

用alias命令的方式定义别名,自在当前SHELL有效,即便使用同样的ID登录,也无效。

而且命令定义别名,重启后失效。

6.BASH支持命令替换

什么是命令替换,也就是说,一个命令中的子命令被子命令的结果所替换。

这个非常重要。

看个例子:

[root@localhost test]# echo 'the dir is $(pwd)'the dir is $(pwd)[root@localhost test]# echo "the dir is $(pwd)"the dir is /root/test[root@localhost test]# echo "the dir is `pwd`"the dir is /root/test

命令替换的重要表现形式:$(),"",``

补充:BASH所支持的引号类型

单引号 弱引用,也就是说不会进行任何替换,说白了,你看到的是什么就是什么
双引号 强引用,会进行替换操作。
反引号 `COMMAND` equals $(COMMAND)

7.BASH支持文件名通配

参考我的博客: