3.Linux入门之命令认识

1.shell的认识


shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。
它接收用户输入的命令,并把命令送到内核执行
shell也称为Linux系统的命令解释器
centos系统默认使用/bin/bash解释器
echo $SHELL 查看使用哪个shell
这里写图片描述

2.命令分类


命令分为:内部命令和外部命令,内部命令执行所需要的时间一般要比外部命令快。
使用type命令可用判断是内部还是外部命令

[root@Centos7 09:20:45 ~]#type help
help is a shell builtin    

help命令是一个 shell builtin,说明是内部命令

[root@Centos7 09:22:15 ~]#type -a df
df is /usr/bin/df

这样显示一个文件路径,说明df命令是个外部命令

3.内部命令


在用户登陆系统的的时候,系统就已经把/bin/bash命令解释器加载到内存中,/bin/bash程序中集成了很多命令,这些命令就是属于内部命令。
不同的shell对应的内部命令有所不同,用命令#echo $SHELL可以查看系统运用哪种shell,centos系统默认用/bin/bash。
查看内部命令

#enable

统计有多少个内部命令

#enable | wc -l

禁用某个内部命令

#enable -n 命令

如何查看有哪些命令被禁用了,可用使用

#enable -a | grep "\-n"

恢复禁用

 #enable 命令

查看内部命令帮助

 #help command

4.外部命令


而外部命令就是本身存在磁盘中,要使用外部命令的时候,需要寻找外部命令的文件加载到内存中。如何寻找命令呢?
系统是通过PATH来查询外部命令,而PATH包含了一些路径:

[root@Centos7 09:04:43 ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

系统会通过上面的路径,从左到右依次查询是否有我们要执行的命令,若是没有会提示”command not found …”
而外部命令只要执行过一次,就会把这个命令路径存在hash缓存中,使用hash命令查看

[root@Centos7 09:13:31 ~]#hash
hits    command
   2    /usr/bin/hostname
   1    /usr/bin/lscpu
   5    /usr/bin/df
   1    /usr/bin/lsblk

以上就是表示执行过的外部命令,前面的数字代表执行次数。当我们重新登陆用户的时候,内存就会清空。

 #hash -d hostname  可以删掉内存中hontname命令的记录
 #hash -r 清除全部的hash缓存

查看外部命令路径:

[root@Centos7 11:52:52 ~]#which cat
/usr/bin/cat

外部命令的执行过程:首先从hash缓存查找是否存在,存在就直接执行,若不存在,就根据PATH路径查找是否存在该命令。优先处理hash中的缓存命令路径,提高命令执行速度。

5.命令别名


应用:对于复杂而已常用到的命令,我们可以起个简单的别名,以方面操作。
例如:cd /etc/sysconfig/network-scripts/ 常常使用这个命令,现在我们来对这个命令起个别名,别名为cdnet
这里写图片描述
不过,以上的操作别名,重新登陆,cdnet就失去效果了。
要永久让别名生效,把alias cdnet=”cd /etc/sysconfig/network-scripts/” 添加到用户的家目录下的隐藏文件.bashrc ,然后source 一下这个文件

 #source /root/.bashrc  我当前用户是root

因为是在当前用户的家目录的.bashrc添加的,所以别名只对当前用户有效。
若是想对所以用户都有效:/etc/bashrc
删除别名

 #unalias cdnet

6.命令帮助


首先type判断是内部命令还是外部命令
type command
若是内部命令,使用help command方式

 #help command

若是外部命令

 #command --help    
 #whatis command
 #man command

猜你喜欢

转载自blog.csdn.net/chen2499152/article/details/81143065