Linux的命令执行过程和命令格式

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值