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支持文件名通配
参考我的博客: