对于一个操作系统来说,shell相当于内核kernel外的一层外壳,作为用户接口。

一般来说,操作系统的接口分为两类:
CLI:command line interface命令行接口
常见的有:sh  csh  ksh  zsh bash tcsh
GUI:graphical user interface 图形化用户接口
常见的有:Gnome  KDE  Xfce

bash及其特性:

1、bash实质上是一个可执行程序,一个用户的工作环境。

2、在每一个shell下可以再打开一个shell,新打开的shell可以称为子shell,每一个shell之间
是相互独立的。

3、可以使用pstree命令查看当前shell下的子shell个数。

使用:

命令行编辑:
    光标跳转:
        Ctrl + a:跳到命令行行首
        Ctrl + e:跳到命令行行位
        Ctrl + d:删除光标所在字符
        Ctrl + u:删除光标到命令行首的所有字符
        Ctrl + k:删除光标到命令行尾的所有字符
        Ctrl + l:清屏
        在使用模拟终端时,使用Ctrl加左右箭头,可以一次跳过一个单词

命令历史:
    bash会自动记录过去执行的命令,并缓存进内存。
    
    查看命令历史:history
    -c:清空命令历史
    -d + 偏移量n m:删除从第n个命令开始的m个字符,m默认为1
    -w:保存命令历史到历史文件

当用户正常退出,内存中的命令历史会被保存到用户家目录中的bash history文件中
这是一个隐藏文件,bash history保存的历史命令数量是有限的,默认为1000

HISTSIZE:一个环境变量,表示命令历史缓冲区大小
      
命令历史的使用技巧:
    !n:显示并执行的第n条命令
    !-n:执行命令历史中的倒数第n条命令
    !!:执行上一次执行的命令
    ! + “”:执行命令历史中的最近一个以指定字符串开头的命令
    !$:引用上一个命令的最后一个参数

命令补全
    在命令路径下,在给出的字符串可以唯一表示该命令,按一下Tab键,会自动将命令补全
    如果不能唯一表示,则按两下Tab键,可以将以给出字符串开头的所有命令全部列出。

路径补全和命令补全类似   

命令别名:
alias:设置命令别名
alias NAME = COMMAND [option],相当于变量赋值。
只能在当前shell声明周期中有效

alias:查看已经定义的命令别名

ualias:取消已经定义的命令别名

如果加一个命令别名与一个命令的名称相同,则使用时shell下运行的是该别名表示的命令,如
果想要使用原命令,则使用/COMMAND表示命令本身

命令替换:
将命令中的某个子命令替换为它的执行结果。
表示形式:
COMMAND $(子命令)
COMMAND `字命令`  注意,此处是反引号而不是单引号。

bash支持的引号:
“ 反引号,用于命令替换
“” 双引号,弱引用,可以实现变量替换
\’\’ 单引号,强引用,不能实现变量替换

文件通配:globbing
*  用于表示任意长度的任意字符串,任意长度包括0
?  用于表示任意单个字符
[] 匹配任意指定范围内的任意单个字符串
[:space:]表示空白符号
[:punct:]表示标点符号
[:lower:]表示小写字母
[:upper:]表示大写字母
[:alpha:]表示所有大小写字母
[:digit:]表示数字
[:alnum:]表示数字和字母

[^] 表示匹配任意指定范围外的单个字符

版权声明:本文为S-ong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/S-ong/p/9249076.html