一、shell(外壳)→离用户最近的计算机程序,提供人机交互的功能 广义的shell: GUI(Graphical User Interface)
CLI(Command Line Interface):sh,csh(类似于C语言),ksh(功能更强大,付费使用),tcsh(增强的csh),zsh

bash:shell在用户登录后启动,大多数默认使用bash 二、bash(Bourne-Again Shell) 1、每个进程不知道别人的存在,在每个进程看来,当前主机上只存在内核和当前进程 2、系统靠进程号识别进程,进程是程序的副本,进程是程序执行的实例 例:两个用户登陆,只有一个shell程序执行,但是有2个进程,但是两个进程之间互不相干 shell是一个外部命令 用户工作环境 #管理员模式 $用户模式 支持用户自定义工作环境 shell 有父shenll 和子shell的概念 每个shell并不知道其他shell去运行,对子shell的设定不影响父shell,对父shell的设定不影响子shell 三、bash的功能 1、命令历史:上下翻使用 2、管道、重定向 3、命令别名 4、命令行编辑 5、命令行展开 6、文件名通配 7、变量 8、编程(将执行的命令通过各种逻辑组合起来,脚本) 四、bash特性 1、命令行编辑 光标跳转:ctrl+a:跳转到命令行行首 ctrl+e:跳转到命令行行尾 ctrl+⬅:按单词向左跳转 ctrl+➡:按单词向右跳转 命令删除:ctrl+u:删除光标至行首 ctrl+k:删除光标至行尾 清屏(clear):ctrl+L windows(cls) 2、命令历史 bash自动记录过去执行的命令,保存在内存的缓冲区上,进程结束命令将保存至某一个文件,当用户正常退出,文件保存于家目录下隐藏文件bash_history history:查看命令历史(属于内建命令) history -c(clear):清空命令历史 history -d(delete):清空指定命令历史 history -w:保存历史命令至历史文件中(覆盖之前保留的命令) 环境变量 PATH:命令搜索的路径 HISTSIZE:命令历史缓冲区大小,默认1000条命令 命令历史使用技巧 !n 执行命令历史中第n条命令 !-n 执行命令历史中倒数第n条 !! 执行刚刚执行的命令 !string 执行命令历史中最近一个以指定字符串开头的命令 !$:引用上一个命令中最后一个参数 ESC和"." Alt和"."
3、补齐(tab) 命令补齐(在命令搜索路径下补齐命令) 一次tab 命令自动补齐(写出的字符能够唯一标识命令) 两次tab 显示所有与字符有关的命令 路径补齐:和命令补齐类似(在所给打头目录下查找补齐目录或文件) 4、命令别名 alias CMDALIAS='CMMAND [option] [argument]' 在shell中定义的别名仅在当前shell生命周期有效:别名的有效范围仅为当前shell进程 alias 显示所有命令别名(内建命令) unalias CMDALIAS 撤销别名 在定义命令别名的情况下可以使用 \COMMAND 使用原命令 5、命令替换 把命令中某个子命令替换为其执行结果的过程 echo "the current directory is $(pwd)" $(pwd)=pwd touch file-$(date +%F-%H-%M-%S).txt ``:命令替换 "":弱引用,可以实现变量替换 '':强引用,不完成变量替换 6、文件名通配(globbing)

  • 任意长度的任意字符 ? 任意长度单个字符 [] 匹配指定范围内任意单个字符 [abc],[a-m],[a-z],][0-9],[A-Za-z] [^] 匹配指定范围外的任意字符 [[:space:]] 空白字符 [[:punct:]] 标点符号 [[:lower:]] 小写字母 [[:upper:]] 大写字母 [[:alpha:]] 大小写字母 [[:digiqt:]] 数字 [[:alnum:]] 数字和大小写字母 man 7 glob(查看文件名统配)