输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
ll /bin/bash
ll /usr/bin/who
区别指定的命令是内部或外部命令
type COMMAND
范例:查看是否存在对应内部和外部命令
[root@centos8 ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo
内部命令相关
help 内部命令列表
外部命令的读取方式
外部命令是从磁盘中读取,那么系统在执行外部命令的时候是通过$PATH变量找到命令,而不是全局搜索,那样的效率就会太慢
[23:44:33 root@servera ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
[23:44:31 root@servera ~]# hash
hits command
1 /usr/bin/hostnamectl
1 /usr/bin/hostname
1 /usr/bin/who
对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行显示当前shell进程所有可用的命令别名
alias
定义别名NAME,其实相当于执行命令VALUE
alias NAME='VALUE'
范例:
[root@centos8 ~]# alias free='free -h'"
撤消别名:unalias
unalias [-a] name [name ...]
unalias -a #取消所有别名
注意:在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
[root@centos8 ~]# echo "alias free='free -h'" >> .bashrc
如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令
COMMAND [选项] [参数]
选项:用于启用或关闭命令的某个或某些功能
参数:命令的作用对象,比如:文件名,用户名等
范例:
[root@centos8 ~]# ls -a
[root@centos8 ~]# ls --all
[root@centos8 ~]# free -h
[root@centos8 ~]# free --human
[root@centos8 ~]# ps a
;:当第一条命令执行完成后(不管是否执行成功),执行第二条命令,此为顺序执行
||:只有当第一条命令执行失败的时候,才会去执行第二条命令
&&:只有当你第一条命令执行成功的时候,才会去执行第二条命令
范例:
[root@servera ~]# cd /tmp;mkdir test1;ls
[root@servera tmp]# cd /tmp;cat xxx || mkdir test2;ls
cat: xxx: No such file or directory
[root@servera tmp]# cd /tmp;cat xxx && mkdir test3;ls
cat: xxx: No such file or directory
[root@servera tmp]# cd /tmp && mkdir test3;ls
注意:
把一个命令的输出打印给另一个命令的参数
$(COMMAND) 或 `COMMAND`
#COMMAND必须是一个有标出信息的命令
范例:比较 “ ” ,‘ ’, ``三者区别
[root@centos8 ~]# echo "echo $HOSTNAME"
echo centos8.localdomain
[root@centos8 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos8 ~]# echo `echo $HOSTNAME`
centos8.localdomain
#结论:
# 单引号:六亲不认,变量和命令都不识别,都当成了普通的字符串
# 反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续
# 双引号:不能识别命令,可以识别变量
tab 键可以实现命令及路径等补全,提高输入效率,避免出错
最小化安装默认没有子命令补全,需要安装bash-completion
注意:用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表
范例:
[root@centos8 ~]# nmcli connection #按2TAB
add delete edit help load monitor show
clone down export import modify reload up
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表
当执行命令后,系统默认会在内存记录执行过的命令
当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是~/.bash_history
登录shell时,会读取命令历史文件中记录下的命令加载到内存中
登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中
利用命令历史。可以用它来重复执行命令,提高输入效率
命令:history
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
!n 执行history命令输出对应序号n的命令
history:默认记录1000条记录
课本介绍:
扩展:
范例:xshell中启动 alt 键
阅读量:2005
点赞量:0
收藏量:0