Linux学习之路 4---bash特性

    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类:与本地变量设定和设定命令别名有关

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章