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所取代
zchLinux中最庞大的Shell,内部命令84个 使用较为复杂,很少使用该Shell
bashCentOS系统默认使用的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等待指定的进程完成,并返回退出状态码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值