Linux总结之Bash特性

  1. 命令历史:
    1. 使用命令:history
    2. 环境变量:
      1. HISTSIZE:命令历史缓冲区中记录的条数,默认为1000;
      2. HISTFILE:记录当前登录用户在logout时历史命令存放文件;
      3. HISTFILESIZE:命令历史文件记录历史的条数,默认为1000;
    3. 操作命令历史:
      1. history d OFFSET删除指定行的命令历史;
      2. history c 清空命令历史缓冲区中的命令;
      3. history # 显示历史中最近的#条命令;
      4. history a 手动追加当前会话缓冲区中的命令至历史文件中;
    4. 调用历史中的命令:
      1. !#:重复执行第#条命令;
      2. !!:重复执行上一条(最近一条命令;)
      3. !string:重复执行最近一次以指定字符串开头的命令;
      4. 调用上一条命令的最后一个参数:
        1. !$
        2. ESC, .

  1. 控制命令历史的记录方式:

    环境变量:HISTCONTROL

    三个值:

    ignoredups:忽略重复的命令;所谓重复,一定是连续且完全相同,包括选项和参数;

    ignorespace:忽略所有以空白开头的命令,不记录;

    ignoreboth:忽略上述两项,既忽略重复的命令,也忽略空白开头的命令;

修改环境变量的方式:

export 变量名="VALUE"

或: VARNAME="VALUE" export VARNAME

  1. 命令补全:

    内部命令:直接通过shell补全;

    外部命令:bash根据PATH环境变量定义的路径,自左而右地在每个路径搜寻以给定命令命名的文件,第一次找到即为要执行的命令;

    Note:在第一次通过PATH搜寻到命令后,会将其存入hash缓存中,下次使用不再搜寻PATH,从hash中查找;

    Tab键补全:

    若用户给出的字符在命令搜索路径中有且仅有一条命令与之相匹配,则Tab键直接补全;

    若用户输入的字符在命令搜索路径中有多条命令与之相匹配,则再次Tab键可以将这些命令列出;

  1. 路径补全:

以用户输入的字符串作为路径开头,并在其指定路径的上级目录下搜索以指定字符串开头的文件名;

如果唯一,则直接补全;

否则,再次Tab,列出所有符合条件的路径及文件;

  1. 命令行展开:

1)~:展开为用户的主目录;

2)~USERNAME : 展开为指定用户的主目录;

  1. {}: 可承载一个以逗号分隔的列表,并将其展开为多个路径;

  1. 命令的执行结果状态:

    成功或失败;

    bash使用特殊变量$?保存最近一条命令的执行状态结果;

    值: 0 : 成功;

    1-255:失败,1,127,255为系统保留;

    程序执行有两类结果:

    程序的返回值;程序自身执行的输出结果;

    程序的执行状态结果;$?

  1. 命令别名(alias)
    1. 通过alias命令实现:
      1. alias 显示当前shell进程所有可用的命令别名;
      2. 定义别名:alias NAME='VALUE' 定义别名NAME,其执行相当于执行命令VALUE,VALUE中可包含命令、选项、参数;
      3. 通过修改配置文件定义命令别名:

      当前用户:~/.bashrc

      全局用户:/etc/bashrc

Bash进程重新读取配置文件:

source /path/to/config_file

./path/to/config_file

撤销别名:unalias

unalias [-a] name [name ...]

Note:对于定义了别名的命令,要使用原命令,可用使用 \COMMAND

  1. glob(globing)

bash中用于实现文件名"通配"

通配符:*,?,[]

  1. * 任意从长度的任意字符;

    a*b:

  2. ? 任意单个字符;

    a?b:

  3. [] 匹配指定范围内的任意单个字符;

    [0-9] [a-z] 不区分大小写

    [admin] 可以是区间形式的,也可以是离散的;

4)[^] 匹配指定范围外的任意字符;

[^0-9] 单个非数字的任意字符;

专用字符集合:

[:digit:] 任意单个数字,相当于[0-9]

[:lower:] 任意单个小写字母,

[:upper:] 任意单个大写字母;

[:alpha:] 任意单个大小写字母;

[:alnum:] 任意数字或字母;

[:space:] 任意空白字符;

[:punct:] 任意单个特殊字符;

Note:在使用[]引用专用字符集合时,外层也需要嵌套[]。例如:

# ls -d /etc/l*[[:digit:]]*[[:lower:]]

  1. Bash快捷键:

    ©著作权归作者所有:来自51CTO博客作者kalaguiyin的原创作品,如需转载,请注明出处,否则将追究法律责任

0

收藏

kalaguiyin

19篇文章,3W+人气,0粉丝