Linux bash基础特性
补全机制、快捷键、命令历史、命令别名、变量、特殊符号、I/O重定向、通配符
目录
一、补全机制
1、命令补全
给定打头字符串如果可以唯一标识某命令文件程序,按下“Tab”键即可直接补全;如果不能,再次按下“Tab”键可以给出所匹配的列表(如果没有反应,并没有匹配项)。
2、路径补全
与命令补全不同的是,路径补全在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件。
3、小建议
tips:善用“tab”可以帮你省下很多时间并且避免很多错误的输入哦!
二、快捷键
按 键 | 解 释 |
---|---|
Ctrl+c | 强制终止前台运行的程序 |
Ctrl+z | 停止前台运行的程序(挂起状态) |
Ctrl+d | 退出,相当于exit |
Ctrl+l | 清屏,相当于clean |
Ctrl+a | 光标移动到命令行最前端 |
Ctrl+e | 光标移动到命令行最后端 |
Ctrl+u | 删除光标之前的所有内容 |
Ctrl+k | 删除光标之后的所有内容 |
Ctrl+r | 利用关键词搜索历史命令 |
三、命令历史
1、history命令
shell进程会在其会话中保存此前用户提交执行过的命令,我们可以使用 history 命令查看运行过的命令,这里的记录都是保存在内存中的,当我们退出时会自动保存到文件中。
2、定制history功能
可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史条数;
HISTFILE:持久保存命令历史的文件;
HISTFILESIZE:命令历史文件能保存的大小;超出则会删除相对旧的记录;
HISTCONTROL:控制命令历史记录方式。
其中可选的值有:
ignoredups:忽略重复的命令
ignorespace:忽略以空格开头的命令
ignoreboth:以上两者同时生效
修改方式:HISTCONTROL=‘VALUE’
多说一点实用的功能,就是给命令历史加上时间戳。
[root@localhost ~]vim /etc/profile //修改系统环境变量文件
...省略部分信息
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S" //添加此条信息
...省略部分信息
[root@localhost ~]# source /etc/profile //重载文件
[root@localhost /]# history 5 //时间戳添加成功
618 2020-05-14 10:31:31touch a
619 2020-05-14 10:31:34rm a
620 2020-05-14 10:31:41vim /etc/profile
621 2020-05-14 10:31:51source /etc/profile
622 2020-05-14 10:31:55history 5
3、history命令常用用法
选 项 | 解 释 |
---|---|
-c | 清空内存中的命令历史 |
-d n | 删除指定命令历史(文件中第n条记录) |
-r | 将文件的历史记录读入到历史列表中 .bash_history→内存 |
-w | 将历史列表的历史记录写入到历史文件中 内存→.bash_history |
history n | 显示最近n条记录 |
4、调用命令列表中(内存)的命令
命 令 | 解 释 |
---|---|
!n | 执行命令列表中第n条命令 |
!! | 执行上一条命令 |
!string | 执行命令列表中最近一个以string开头的命令 |
5、调用上条命令最后一个参数
- 可以使用 " !$ " 直接表示。
- 可以使用快捷键:Esc+.(点号) ,以上图为例,按下 “Esc+.” 终端中即可出现 “/” 。
四、命令别名
有的命令或路径可能输入起来比较麻烦(路径较长等等),这时别名就可以帮助到你。
1、列出目前所有的别名设置
# alias
2、设置别名(此处以打开网卡配置文件为例)
# alias name='value’
值得注意的是,这里的设置只是暂时的(重新登陆即消失),并且只对当前shell环境有效。
3、取消别名
# unalias name
4、设置永久别名
这里,需要我们修改别名映射文件来实现。
① /etc/bashrc 全局配置文件(对所有用户有效)
② ~/.bashrc 个人配置文件(对某一用户有效)
①、②修改完成后,分别使用source /etc/bashrc、source ~/.bashrc重载对应文件,使设置的别名生效。
5、小补充
如果别名和原命令重名,想使用原命令怎么办呢?
很简单,只需要在命令前加上 " \ " 就可以实现。可以看下面这个栗子!
[root@localhost ~]# alias rm='mv -t /tmp/backup' //将想删除的目录或文件移动到/tmp/backup目录下
[root@localhost ~]# touch test //创建test文件
[root@localhost ~]# rm test
[root@localhost ~]# ls /tmp/backup //很显然test文件并未删除,而是移动到了/tmp/backup目录下
test
[root@localhost ~]# \rm /tmp/backup/test //使用rm原命令
[root@localhost ~]# ls /tmp/backup/
[root@localhost ~]#
五、变量
在linux系统中变量分为本地变量、局部变量、环境变量。
- 本地变量:仅在当前shell进程中的某代码片段生效,通常指函数。
- 局部变量:仅在当前shell进程中生效。
- 环境变量:对当前shell进程及其子进程生效。
六、特殊符号
符 号 | 解 释 |
---|---|
# | 注释符号,#后面的内容不会被执行 |
| (管道符) | 将一个程序的输出当作另一个程序的输入 |
. (点号) | 表示当前目录 |
.. (双点号) | 表示上一级目录 |
; (分号) | 执行多条命令时可以使用分号将它们分开,顺序地独立执行各条命令,彼此之间不关心是否失败,所有命令都会执行 |
` ` (反单引号) | 命令替换,以命令的标准输出来取代整个反引号部分 |
’ ’ (单引号) | 强引用,其中的内容直接显示,不做替换 |
" " (双引号) | 弱引用,做变量或命令替换,以变量的值或命令的标准输出取代整个双引号部分 |
( )(小括号) | 指令群组(用括号将一串连续指令括起来),或用于初始化数组 |
[ ](中括号) | 常出现在流程控制中,扮演括住判断式的作用 |
{ } (大括号) | 对括号内的文件名做扩展,或构建代码块 |
*(星号) | 通配符,匹配任意长度的任意字符 |
七、I/O重定向
1、linux提供了三种I/O设备
标准输入(STDIN) - 0 默认接受来自键盘的输入
标准输出(STDOUT) - 1 默认输出到终端窗口
标准错误(STDERR) - 2 默认输出到终端窗口
2、输出重定向
一般命令的输出都会显示到终端,有时需要将一些执行结果保存到文件中从而进行一些统计分析,这时就需要使用到输出重定向。
- 正确输出(正确输出表示命令顺利执行的结果)
符 号 | 解 释 |
---|---|
命令 > 文件 | 覆盖输出,覆盖掉原先的文件内容 |
命令 >> 文件 | 追加输出,在原先的文件内容末尾继续添加 |
- 错误输出(错误输出表示一些命令执行后出现报错的内容)
符 号 | 解 释 |
---|---|
命令 2>文件 | 覆盖输出,覆盖掉原先的文件内容 |
命令 2>>文件 | 追加输出,在原先的文件内容末尾继续添加 |
tips:错误输出 “>” 或 “>>” 后没有空格哦。
3、输入重定向
“<” 可以实现输入重定向。输入重定向不经常使用,因为绝大多数的命令都以参数的形式在命令行上指定输入文件的文件名,因此这里不做过多解释。
4、正确错误混合输出
符 号 | 解 释 |
---|---|
命令 &> 文件 | 以覆盖的方式,正确和错误结果都输出到同一文件 |
命令 &>> 文件 | 以追加的方式,正确和错误结果都输出到同一文件 |
命令 > 文件 2>&1 | 以覆盖的方式,正确和错误结果都输出到同一文件 |
命令 >> 文件 2>&1 | 以追加的方式,正确和错误结果都输出到同一文件 |
命令 >文件a 2>文件b | 以覆盖的方式,正确结果输出到文件a,错误结果输出到文件b |
命令 >>文件a 2>>文件b | 以追加的方式,正确结果输出到文件a,错误结果输出到文件b |
其中虽然①③和②④执行结果相同,但是本质区别是 &> 是将标准输出和标准错误都重定向到文件中,而 2>&1 是将标准错误重定向到标准输出。
5、两个实用的"设备"
- /dev/zero,是一个输入设备,可以叫做“吐零机”。当你读取它时,会产生无穷无尽的0(二进制的零流),它可以用来覆盖信息(使用它提供的字符流),也可以产生一个特定大小的空白文件。
- /dev/null,是一个空设备,可以叫做“数据黑洞”。所有写入的数据都会被丢弃,如果不想让消息以标准输出写入文件,那么可以将它重定向到/dev/null中。
八、通配符
通配符 | 解 释 |
---|---|
* | 匹配任意长度的任意字符 |
? | 匹配任意单个字符 |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
下面我们对[]和[^]的使用进行简单介绍。
通配符 | 解 释 |
---|---|
[0-9] 或 [:digit:] | 所有数字 |
[a-z] 或 [:lower:] | 所有小写字母 |
[A-Z] 或 [:upper:] | 所有大写字母 |
[:alpha:] | 所有字母 |
[:alnum:] | 所有字母和数字 |
[:space:] | 所有空白字符 |
[:punct:] | 所有标点符号 |
[^0-9] 或 [^ [:digit:]] 即表示匹配 除数字之外任意单个字符。
更多推荐
所有评论(0)