Linux上可运行的Shell有很多种,例如sh、csh、ksh、bash、tcsh、zsh等,不同的Shell可能在软件下载和部分命令上有所不同。目前大多数Linux上默认的Shell是bash。
在bash中,用#和$区分root用户和普通用户:
[root@promote ~]# //root用户
[hadoop@promote ~]$ //普通用户
1.bash命令行快捷键
有时候可能一条命令会很长,删除和修改都会很麻烦,bash提供了一系列的快捷键来进行快速操作:
Ctrl+A :跳到行首
Ctrl+E :跳到行尾
Ctrl+U :删除当前光标所在位置至行首的内容
Ctrl+K :删除当前光标所在位置至行尾的内容
Ctrl+L :清屏
Ctrl+C :停止执行
2.命令补全
在bash中,可以使用Tab键进行命令补全,连续按两次Tab键可以查看那些命令可以进行补全。
3.命令历史
bash中执行过的命令会缓存到内存中,正常退出时会保存到相应的配置文件。
使用history命令查看曾执行过的命令。有几个与命令历史相关的环境变量:
HISTFILE :配置文件路径
HISTSIZE :最大缓存数
HISTFILESIZE :配置文件中可保存的命令数
HISTCONTROL :命令历史记录设置
ignorespace :以空白字符开头的命令不会记录
ignoredups :忽略重复的命令
ignoreboth :以上两者都生效
history的一些选项:
-c:清空缓存中的命令历史
-w: 保存缓存中的命令历史至配置文件
-a: 追加缓存中的命令历史至配置文件
-d N:删除第N条命令
-d N M:从地N条开始删除M条命令
一些配合命令历史执行的命令:
!N :执行命令历史中的第N条
!! :执行上一条命令
!-N :执行倒数第N条命令
!STR :执行最近一条以STR开头的命令
4.bash文件通配符
文件通配符是一些特殊的字符,可以进行文件名匹配,其不表示字面意义,每个通配符都具有特殊意义:
* :匹配任意长度的任意字符字符
? :匹配任意单个字符
[] :匹配指定范围内的任意单个字符,如:
a[xyz]b会匹配axb ayb azb
[[:alpha:]] = [a-zA-Z]
[[:digit:]] = [0-9]
[[:lower:]] = [a-z]
[[:upper:]] = [A-Z]
[[:space:]] = 空白字符
[[:alnum:]] = [a-zA-Z0-9]
[[:punct:]] = 可打印字符
[^] :取反,例如
[^a-z] : 不匹配小写字母一次
5.bash变量
在bash中,变量可以分为本地变量、环境变量、特殊变量和位置变量。
5.1本地变量
本地变量的作用范围仅限与本bash,对其他bash和子bash无效。
可以使用echo命令查看变量值:
echo $HISTSIZE
echo的几个常用选项:
-n:不换行显示
-e:使用转义字符
对于变量的类型,bash中默认全部是字符型,当需要使用不同类型的变量时,可以使用declare命令
declare [options] VAR
options:
-i:声明变量为整型
-r:声明为只读变量 等价于 readonly VAR[=VALUE]
-n:声明为数组
当然,对于一般的变量而言,可以不使用declare,直接进行赋值使用就行,即“拿来就用”。
对于释放变量,使用unset命令即可。
变量的引用:${VAR},花括号一般可以省略,但有些场合下不能省。
5.2环境变量
环境变量的作用范围是当前bash和其子bash。
将本地变量声明为环境变量或直接声明环境变量:
export VAR[=VALUE]
或
declare -x VAR[=VALUE]
查看当前bash的环境变量:printenv和export命令。
部分系统环境变量解释:
HOSTNAME :当前主机名
SHELL :当前用户shell路径
HISTFILE :配置文件路径
HISTSIZE :最大缓存数
HISTFILESIZE :配置文件中可保存的命令数
HISTCONTROL :命令历史记录设置
OLPWD :上一次路径
PWD :当前路径
USER :当前用户
MAIL :当前用户邮件缓冲队列
PATH :path中包含的文件路径
PS1 :命令提示符显示的东西
PS2 :续航符符号
5.3特殊变量和位置变量
特殊变量和位置变量大部分都与shell编程有关。
特殊变量:
$? :保存着上一条命令的执行情况,0为成功,非零为失败
$# :保存shell编程中用户输入的参数个数
$*和$@ :参数列表
位置变量:
$1 $2 $3... 分别保存用户输入的第N条参数,$0保存的是当前命令的绝对路径
5.4bash中引号的使用
单引号(''):表示强引用,即其中的所有内容都会被认为是原字符串,不会进行变量替换。
双引号(""):弱引用,会进行变量替换。
反引号(``):返回命令的执行结果,实现命令替换。例如:
makedir "file-`data +%T`"
data是获取当前时间的命令。
6.bash中的配置文件简介
读取顺序:
交互式:/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bahsrc --> /etc/bashrc
非交互式:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*
profile类:与环境变量的设定和运行脚本有关
bashrc类:与本地变量设定和设定命令别名有关