Linux总结之Bash特性
- 命令历史:
- 使用命令:history
- 环境变量:
- HISTSIZE:命令历史缓冲区中记录的条数,默认为1000;
- HISTFILE:记录当前登录用户在logout时历史命令存放文件;
- HISTFILESIZE:命令历史文件记录历史的条数,默认为1000;
- 操作命令历史:
- history d OFFSET删除指定行的命令历史;
- history c 清空命令历史缓冲区中的命令;
- history # 显示历史中最近的#条命令;
- history a 手动追加当前会话缓冲区中的命令至历史文件中;
- 调用历史中的命令:
- !#:重复执行第#条命令;
- !!:重复执行上一条(最近一条命令;)
- !string:重复执行最近一次以指定字符串开头的命令;
- 调用上一条命令的最后一个参数:
- !$
- ESC, .
- 使用命令:history
- 控制命令历史的记录方式:
环境变量:HISTCONTROL
三个值:
ignoredups:忽略重复的命令;所谓重复,一定是连续且完全相同,包括选项和参数;
ignorespace:忽略所有以空白开头的命令,不记录;
ignoreboth:忽略上述两项,既忽略重复的命令,也忽略空白开头的命令;
修改环境变量的方式:
export 变量名="VALUE"
或: VARNAME="VALUE" export VARNAME
- 命令补全:
内部命令:直接通过shell补全;
外部命令:bash根据PATH环境变量定义的路径,自左而右地在每个路径搜寻以给定命令命名的文件,第一次找到即为要执行的命令;
Note:在第一次通过PATH搜寻到命令后,会将其存入hash缓存中,下次使用不再搜寻PATH,从hash中查找;
Tab键补全:
若用户给出的字符在命令搜索路径中有且仅有一条命令与之相匹配,则Tab键直接补全;
若用户输入的字符在命令搜索路径中有多条命令与之相匹配,则再次Tab键可以将这些命令列出;
- 路径补全:
以用户输入的字符串作为路径开头,并在其指定路径的上级目录下搜索以指定字符串开头的文件名;
如果唯一,则直接补全;
否则,再次Tab,列出所有符合条件的路径及文件;
- 命令行展开:
1)~:展开为用户的主目录;
2)~USERNAME : 展开为指定用户的主目录;
- {}: 可承载一个以逗号分隔的列表,并将其展开为多个路径;
- 命令的执行结果状态:
成功或失败;
bash使用特殊变量$?保存最近一条命令的执行状态结果;
值: 0 : 成功;
1-255:失败,1,127,255为系统保留;
程序执行有两类结果:
程序的返回值;程序自身执行的输出结果;
程序的执行状态结果;$?
- 命令别名(alias)
- 通过alias命令实现:
- alias 显示当前shell进程所有可用的命令别名;
- 定义别名:alias NAME=‘VALUE‘ 定义别名NAME,其执行相当于执行命令VALUE,VALUE中可包含命令、选项、参数;
- 通过修改配置文件定义命令别名:
当前用户:~/.bashrc
全局用户:/etc/bashrc
- 通过alias命令实现:
Bash进程重新读取配置文件:
source /path/to/config_file
./path/to/config_file
撤销别名:unalias
unalias [-a] name [name ...]
Note:对于定义了别名的命令,要使用原命令,可用使用 \COMMAND
- glob(globing)
bash中用于实现文件名"通配"
通配符:*,?,[]
- * 任意从长度的任意字符;
a*b:
- ? 任意单个字符;
a?b:
- [] 匹配指定范围内的任意单个字符;
[0-9] [a-z] 不区分大小写
[admin] 可以是区间形式的,也可以是离散的;
4)[^] 匹配指定范围外的任意字符;
[^0-9] 单个非数字的任意字符;
专用字符集合:
[:digit:] 任意单个数字,相当于[0-9]
[:lower:] 任意单个小写字母,
[:upper:] 任意单个大写字母;
[:alpha:] 任意单个大小写字母;
[:alnum:] 任意数字或字母;
[:space:] 任意空白字符;
[:punct:] 任意单个特殊字符;
Note:在使用[]引用专用字符集合时,外层也需要嵌套[]。例如:
# ls -d /etc/l*[[:digit:]]*[[:lower:]]
- Bash快捷键:
时间: 2024-10-12 20:39:31