Shell_00_初识Shell
@
Shell基础
CLI(Command Line Interface):命令行界面
1)CLI仅接受文本输入,并仅输出文本和基本图形;
2)Linux系统启动后,在系统内存中默认创建5~6个CLI终端会话运行
//可通过Ctrl+Alt+(F2~F7)进行切换,F1为图形界面
Shell:用户与Linux内核交互的程序(基于C语言编写)
| Shell种类 | 说明 |
|---|---|
| csh (C Shell) | 语法类似C语言,内部命令52个 目前使用已不多,已经被/bin/tcsh所取代 |
| Ksh (Korn Shell) | 语法类似Bourne Shell,内部命令42个 具备csh易用特点,相对于bash有一点的限制性 |
| tcsh | 属于csh的增强版,与csh完全兼容 |
| sh | 属于快捷方式 已被/bin/bash所取代 |
| zch | Linux中最庞大的Shell,内部命令84个 使用较为复杂,很少使用该Shell |
| bash | CentOS系统默认使用的Shell |
1)bash的路径为:/bin/bash;
2)在/etc/passwd每一行的最后一个字段为用户的默认shell
Bash Shell
Bash(GNU Bourne-Again Shell):众多Linux发行版中默认的Shell解释器
1)以下内容由Shell名称代替Bash Shell名称;
2)Bash Shell本质是一个程序(当运行时,就成为了一个进程)
Shell功能
(1)记录历史命令(history)
1)“~/.bash_histroy”记录登录执行的所有命令(默认1000个);
2)登录执行的命令存在内存中,注销系统后由内存记录到~/.bash_history文件;
3)记录命令数可通过修改HISTFILESIZE来增加/减少
history命令:操作Shell中的历史命令
指令格式1:histroy n
1)N为数字,显示最近N条历史命令
2)若没有N,则默认显示所有历史命令
指令格式2:history 选项 //对历史命令进行操作
| 选项 | 含义 |
|---|---|
| -c | 将当前Shell中的所有history内容清除 |
| -a | 将新增的history缓存写入到~/.bash_history文件中 |
| -r | 将~/.bash_history文件的内容读到history缓存中 |
| -w | 将目前的history缓存写入到~/.bash_history文件中 |
!命令:执行执行第N个历史命令
指令格式:!N
//!!是执行上一个命令
(2)命令/文件补全功能(Tab)
1)仅打出命令/文件名称的前缀,通过Tab键可自动补全;
2)若有多个命令/文件名称的前缀相同时,则列出全部具体名称
(3)命令别名设置(alias)
1)配置“~/.bashrc”文件实现命令别名
alias命令:设置别名命令(临时设置)
指令格式:alias 别名命令=‘命令 选项’
1)直接输入alias则显示所有的别名命令
unalias命令:取消命令别名
指令格式:unalias 别名命令
(4)程序化脚本(shell scripts)
(5)任务管理、前台、后台控制(job control、foreground、background)
(6)通配符(Wilecard)
父/子Shell
父Shell:登录CLI或GUI中运行终端仿真器时,默认启动的交互Shell
子Shell:在父Shell的环境下,通过调用命令创建的新Shell程序
1)子Shell仅能继承父Shell的全局环境变量;
bash命令:创建/调用子Shell
指令格式:bash 选项
| 选项 | 含义 |
|---|---|
| -c 命令 | 调用子Shell执行指定命令后,并返回至父Shell |
| -i | 创建子Shell,并进入子Shell |
| -l | 以login shell形式创建子Shell,并进入子Shell |
| -r | 创建子Shell,并进入子Shell 但子Shell不能切换目录 |
exit命令:退出Shell
指令格式:exit
1)若Shell本身为子Shell,则会返回至相对于子Shell的父Shell;
2)若Shell本身为最高层Shell,则会关闭Shell;
如:调用子Shell执行指定命令

如:创建子Shell,并进入子Shell后退回至父Shell

如:创建受限的子Shell

内建命令
外部命令(文件系统命令):Bash Shell之外的程序
1)通常位于/bin、/usr/bin、/sbin或/usr/sbin中;
3)调用外部命令,需指定外部命令的绝对路径;
2)调用外部命令时,默认通过创建子Shell运行外部命令;
which命令:根据命令名称查询命令的完整路径
指令格式:which 选项 命令名称
| 选项 | 含义 |
|---|---|
| -a | 将所有由PATH目录中可找到的命令列出 |
| -v | 显示命令的版本信息 |
1)本质就是根据环境变量(PATH)所规范的路径,去查询文件名
2)没有选项,则默认显示找到的第一个完整路径
如:查询ls命令的完整路径

内键命令:Bash Shell的组成部分(编译成一体)
1)内键命令默认在父Shell中运行;
type命令:查询命令是否为Bash shell内置命令
命令格式:type 选项 命令名
| 选项 | 含义 |
|---|---|
| -a | 将PATH变量定义的路径中 所有含该命令名文件路径都列出(包括alias) |
| -p | 命令为外部命令,才会显示完整文件路径 若不是外部命令,则不显示任何数据 |
| -t | 以特殊字段表示命令属性 |
1)type命令本质类似which命令:找出执行文件
2)特殊字段为:file(外部命令)、alias(命令别名)、builtin(内键命令)
常见的内键命令如下:
| 命令 | 功能 |
|---|---|
| : | 扩展参数列表,执行重定向操作 |
| . | 读取并执行指定文件中的命令 |
| alias | 指定命令定义别名 |
| bg | 将任务以后台方式运行 |
| bind | 将键盘序列绑定到一个readline函数或宏 |
| break | 退出循环 |
| builtin | 执行指定的Shell内建命令 |
| caller | 返回活动子函数调用的上下文 |
| cd | 切换目录 |
| command | 执行指定命令,不进行Shell查找 |
| compgen | 指定单词生成可能的补全匹配 |
| complete | 显示指定的单词补全过程 |
| compopt | 修改指定单词的补全选项 |
| continue | 跳过本次循环,进行下一次循环 |
| declare | 声明变量或变量类型 |
| dirs | 列出当前存储目录的列表 |
| disown | 删除任务列中指定的任务 |
| echo | 输出指定文本到stdout |
| enable | 启用/禁用指定的内建命令 |
| eval | 将指定的参数拼接成一个命令,并执行 |
| exec | 指定命令替换Shell进程 |
| exit | 强制Shell以指定的退出状态码退出 |
| export | 指定变量为环境变量 |
| fc | 从历史记录中选择命令 |
| fg | 将任务调到前台运行 |
| getopts | 分析指定的位置参数 |
| hash | 查询并记录指定命令的全路径名 |
| help | 列出帮助文档 |
| history | 显示命令的历史记录 |
| jobs | 列出任务列表 |
| kill | 向指定的PID进程发出信号 |
| let | 计算一个数学表达式中的每个参数 |
| local | 在函数中创建一个作用域受限的变量 |
| logout | 退出Shell |
| mapfile | 从stdin读取数据行,并加入索引数据组 |
| popd | 从目录栈中删除记录 |
| printf | 使用格式化字符串显示文本 |
| pushd | 向目录栈中添加一个目录 |
| pwd | 显示当前工作目录的路径 |
| read | 从stdin读取一行数据,并将其赋给指定变量 |
| readarray | 从stdin读取数据行,并将其放入索引数据组 |
| readonly | 从stdin读取一行数据,并将其赋给只读变量 |
| return | 强制函数以指定值退出 |
| set | 设置并显示环境变量的值和Shell属性 |
| shift | 依次移动位置参数 |
| shopt | 打开/关闭控制Shell可选行为的变量值 |
| source | 读取并执行指定文件中的命令 |
| suspend | 暂停Shell的执行,直到收到SIGCONT信号 |
| test | 基于指定条件返回退出状态码0或1 |
| times | 显示累计的用户和系统时间 |
| trap | 若收到指定的系统信号,则执行指定命令 |
| type | 检测是否为内建命令 |
| typeset | 声明变量或变量类型 |
| ulimit | 为系统用户设置指定的资源上限 |
| umask | 指定文档权限的默认掩码 |
| unalias | 删除指定的别名 |
| unset | 删除指定的环境变量或Shell属性 |
| wait | 等待指定的进程完成,并返回退出状态码 |

浙公网安备 33010602011771号