Shell基础之Bash的基本功能

一、历史命令与命令补全

1、历史命令

  • 命令语法:history [选项][历史命令保存文件]
  • 每个用户历史命令分开保存
  • 历史命令保存文件,需要每次登陆退出之后才会从内存里写到历史命令保存文件里,不过内存里是可以看到的,不是没存进去,用-w可以不用等退出,直接写入
  • 默认保存1000条,可以在配置文件/etc/profile中进行修改
  • 选项
选项 作用
-c 清空历史命令(连带内存和文件一般不推荐清空
-w 把缓存中的历史命令写入历史命令保存文件~/.bash_history

2、历史命令的调用

  • 使用上下箭头调用以前的历史命令
  • 使用“!n”重复执行第n条历史命令 在history里查看
  • 使用“!!”重复执行上一条命令
  • 使用“!字串”重复执行最后一条以该字串开头的命令

3、Tab键补全

  • 按一下如果只有一个会直接显示,如果有多个再按一下,会显示所有的命令/文件

二、命令别名与常用快捷键

1、命令别名

  • 给命令起一个小名
  • 设定命令别名
    • alias 别名=‘原命令’
  • 查询命令别名
    • alias
  • 命令执行时顺序
    • 第一顺位执行用绝对路径或相对路径执行的命令
    • 第二顺位执行别名
    • 第三顺位执行Bash的内部命令
    • 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
  • 让别名永久生效:写入相应的配置文件:vi /root/.bashrc
  • 删除别名:unalias 别名

2、快捷键

快捷键 作用
ctrl+A 把光标移动到命令行开头。
ctrl+E 把光标移动到命令行结尾
ctrl+C 强制终止当前的命令
ctrl+L 清屏,相当于clear命令
ctrl+U 删除或剪切之前的命令(打了一行很长的错误命令,可以用这个删除
ctrl+K 删除或剪切光标之后的内容
ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容
ctrl+R 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索
ctrl+D 退出当前终端
ctrl+Z 暂停,并放入后台。
ctrl+S 暂停屏幕输出
ctrl+Q 恢复屏幕输出

三、输入输出重定向

1、标准输入输出

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

2、输出重定向

类型 符号 作用
标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
命令>>文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
错误命令 2>> 文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中

正确输出和错误输出同时保存
更常用

命令 作用
命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 &>> 文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

3、输入重定向(用的很少

  • 命令语法:wc[选项][文件名]
  • 用法:wc < 文件名查看文件内的统计数
选项 作用
-c 统计字节数
-w 统计单词数
-l 统计行数

四、多命令顺序执行与管道符

1、多命令顺序执行

多命令执行符 格式 作用
; 命令1; 命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与,当命令1正确执行,命令2才会执行。当命令1执行不正确的时候,命令2不会执行

2、;前面命令错了,后面当命令还会执行`

3、管道符

  • 命令语法:命令1 | 命令2
  • 命令1的正确输出作为命令2的操作对象

五、通配符与其他特殊符号

1、通配符

通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符( [abc]代表一定匹配一个字符,或者a或者b或者c
[-] 匹配中括号中任意一个字符,-代表一个范围,[a-z]代表一个小写字母
[ ^ ] 逻辑非,表示匹配不是中括号中的一个字符,[^0-9 ]代表匹配一个不是数字的字符

2、其他特殊符号

符号 作用
‘ ’ 单引号。在单引号中所有的特殊符号,都没有特殊含义
“ “ 双引号。
`` 反引号。反引号括起来的内容是系统命令,bash中会限制性它,和$()作用一样
$() 和反引号作用一样,用来引用系统命令
# 在Shell脚本中,#开头的行代表注释
$ 用于调用变量的值,如果需要调用name的值,就符号加name
\ 转义符,\后的特殊符号将失去特殊含义、$就是输出后面的字符

双引号中的特殊符号都没有特殊含义,但是$:调用变量的值,`引用命令,:转义符,是例外,仍有特殊含义

发布了74 篇原创文章 · 获赞 3 · 访问量 4379

猜你喜欢

转载自blog.csdn.net/qq_40672635/article/details/105204849