1、显示当前使用的shell
[17:20:38 root@Centos8-1 ~]#echo ${SHELL}
/bin/bash
2、显示当前系统使用的所有shell
[17:23:25 root@Centos8-1 ~]#cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
3、命令执行过程
输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交内核分配资源将其运行起来
4、内部命令和外部命令
- 内部命令:由shell自带的,通过命令形式提供,用户登录后自动加载并常驻内存中
- 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时从磁盘加载至内存中,执行完毕后从内存总删除
判断是内部命令还是外部命令
[12:08:26 root@Centos8-2 ~]#type -a echo
echo is a shell builtin //内部命令
echo is /usr/bin/echo //外部命令
5、内部命令
help 内部命令列表
enable 管理内部命令
- enable 命令 启用内部命令
- enable -n 命令 禁用内部命令
- enable -n 查看所有禁用内部命令
6、外部命令
查看外部命令路径
[14:26:42 root@Centos8-2 ~]#whereis yum
yum: /usr/bin/yum /etc/yum /etc/yum.conf /usr/share/man/man8/yum.8.gz
hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行,如果不存在,会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
hash命令常见用法
- hash 显示hash缓存
- hash -l 显示hash缓存,可以作为输入使用
- hash -p path name 将命令全路径path起别名为name
- hash -t name 打印缓存中name的路径
- hash -d name 清除name缓存
- hash -r 清除缓存
7、命令别名
显示当前可用别名
[14:44:13 root@Centos8-2 ~]#alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
定义别名NAME,相当于执行命令VALUE
alias NAME='VALUE'
删除别名:unalias
unalias [-a] name [name...]
unalias -a #取消所有别名
在命令行中定义别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中,配置完成后重新加载配置文件
- 仅对当前用户有效:~/.bashrc
- 对所有用户有效:/etc/bashrc
如果别名与原命令同名,要执行原命令,可使用
\命令
"命令"
'命令'
command 命令
/path/命令 只适用于外部命令
8、命令行扩展:“ ” ’ ’
{}和$()
[18:41:26 root@Rocky8 ~]#echo "echo $HOSTNAME"
echo Rocky8.6-1
[18:43:41 root@Rocky8 ~]#echo 'echo $HOSTNAME'
echo $HOSTNAME
[18:43:52 root@Rocky8 ~]#echo `echo $HOSTNAME`
Rocky8.6-1
单引号:强引用,变量和命令都不识别,都当成普通的字符串
双引号:弱引用,不能识别命令,可以识别变量
反向单引号:里面的内容必须是可以执行的命令并且有输出信息,变量和命令都可以识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续执行
关闭和启用{}
#查询是否启用
echo $-
#关闭{}功能
set +B
#启用{}功能
set -B