标签:bash
一、bash由来
bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。它也被移植到Microsoft Windows上的Cygwin与MinGW,或是可以在MS-DOS上使用的DJGPP项目。在Novell NetWare与Andriod在上也有移植。1990年后,Chet Ramey成为了主要的维护者。
为Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
二、bash的一些特点
1、命令历史、命令补全
命令历史:
查看命令历史:history
-c:清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;
Esc+“.”
命令补全,路径补全
在输入命令或路径开始的部分内容后,使用一次[两次]Tab键,
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表;否则将直接补全;
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全;
2、管道、重定向
管道:利用“|”隔开,将前一个命令的输出,作为后一个命令的输入
如:命令1 | 命令2 | 命令3 | ...
#cat /etc/inittab | wc -l :将统计/etc/inittab文件的行数
重定向:> < >> <<
>file: 覆盖输出
>>file:追加输出
set -C: 禁止对已经存在文件使用覆盖重定向;
强制覆盖输出,则使用 >|
set +C: 关闭上述功能
<file:输入重定向
<<text:从命令行读取输入,直到一个与text相同的行结束,除非输入使用引号括起来,此模式将对输入内容进行shell变量替换.
如:
# cat << EOF
> Hello world!
> Hello linux!
> EOF
Hello world!
Hello linux!
3、命令别名
命令别名
alias CMDALIAS=‘COMMAND [options] [arguments]‘
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
ualias CMDALIAS 取消别名
4、命令行编辑
4.1. Bash命令行的编辑模式:
(1)有两种:emacs模式、vi模式。EMACS=Esc+Meta+Alt+Control+Shift,VI=Visual+Interface。
(2)emacs模式是默认的。
(3)可以在选项中查看、修改输入模式:命令set -o查看,命令set -o vi/emacs修改。
4.2. emacs模式的热键操作:
(1)对于字符(ctrl):
前移一个字符:ctrl+f
后移一个字符:ctrl+b
删除前一字符:ctrl+h
删除后一字符:ctrl+d
(2)对于单词(esc):
前移一个单词:esc+f
后移一个单词:esc+b
删除前一单词:esc+ctrl+h,或ctrl+w
删除后一单词:esc+d
恢复最后删除的项:ctrl+y
(3)对于行(ctrl):
移到行首:ctrl+a
移到行尾:ctrl+e
从光标所在删除直到行首:ctrl+u
从光标所在删除直到行尾:ctrl+k
移到前一行:ctrl+p
移到后一行:ctrl+n
(4)对于历史文件(esc):
移动到历史文件的首行:esc+<
移动到历史文件的末行:esc+>
在历史文件中反向搜索:ctrl+r
4.3. 命令行补齐:
(1)通用热键:
试图补齐命令行:tab
列出所有可能的备选项:esc+?
(2)补齐文件名(/):
试图补齐文件名:esc+/
列出所有备选文件名:ctrl+x+/
(3)补齐用户名(~):
试图补齐用户名:esc+~
列出所有备选用户名:ctrl+x+~
(4)补齐主机名(@):
试图补齐主机名:esc+@
列出所有备选主机名:ctrl+x+@
(5)补齐内置变量($):
试图补齐变量名:esc+$
列出所有备选变量名:ctrl+x+$
(6)补齐命令名(!):
试图补齐命令名:esc+!
列出所有备选命令名:ctrl+x+!
(7)补齐历史列表中的命令名:esc+tab
4.4. 杂项命令:
(1)清屏:ctrl+l
(2)反转光标所在字符及其前面的字符:ctrl+t
(3)从光标处开始的整个单词大写:esc+u
(4)从光标处开始的整个单词小写:esc+l
(5)将光标处的单词的首字母大写:esc+c
5、命令行展开
6、文件名通配
文件名通配, globbing
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
7、变量
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量
本地变量:
set VARNAME=VALUE: 作用域为整个bash进程;
局部变量:
local VARNAME=VALUE:作用域为当前代码段;
环境变量:作用域为当前shell进程及其子进程;
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME“导出”
位置变量:
$1, $2, ...
特殊变量:
$?: 上一个命令的执行状态返回值;
$#:参数的个数
$*: 参数列表
$@:参数列表
8、编程
内容较多,单独介绍
本文出自 “卡卡” 博客,请务必保留此出处http://cakaluote.blog.51cto.com/504821/1621557
标签:bash
原文地址:http://cakaluote.blog.51cto.com/504821/1621557