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 等待指定的进程完成,并返回退出状态码
posted @ 2022-02-06 12:31  爱和可乐的w  阅读(57)  评论(0编辑  收藏  举报