乱七八糟想到什么记什么6
执行命令
- runlevel
用来显示run在那层
用 init 0 3 5 6来切换 0关机 6 重启 - reboot
重启计算机 - lscpu
查看cpu详情 - exit推出 logout注销
-echo
显示PS1 显示SHELL类型
程序执行的逻辑:
输入字符串->提交给shell->shell首先判断是不是bash中自带的程序
ls /bin/bash
系统启动的时候已经加载到内存中了
- 内部命令:bash中集成了很多内部命令,随着shell放在内存里了。-
- 外部命令:不属于shell的独立的程序文件,并不集成在bash中,属于外部命令
bin下一大堆外部命令
用type判断是内部命令还是外部命令
[07:53:49 2u@u20[ /]$type echo
echo is a shell builtin ##内部命令builtin
[07:57:18 2u@u20[ /]$type ls
ls is aliased to `ls --color=auto' ##别名
[07:57:27 2u@u20[ /]$type init
init is /usr/sbin/init ##显示路径的是外部命令
外部命令存放规则
外部命令的存放是有规范的,并不是任何一个磁盘文件都可以成为外部命令。
[07:57:50 2u@u20[ /]$echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
存放外部命令文件夹搜索次序,如果找到了,就将其加载到内存中运行。命令为二进制可执行文件。
如果找不到,就提示错误。
内部命令优先执行,效率更高
哈希
为了加速访问,Linux中有个逻辑,第一次执行之后,就会将执行路径记录到内存里边,成为哈希。
hash
曾经执行过的外部命令的路径
[08:01:39 2u@u20[ /]$hash
hits command
1 /usr/bin/lscpu
1 /usr/bin/hostname
1 /usr/sbin/runlevel
5 /usr/bin/who
1 /usr/bin/whoami
1 /usr/bin/tty
1 /usr/bin/sudo
2 /usr/bin/file
1 /usr/bin/free
3 /usr/bin/ls
6 /usr/bin/cat
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 清除缓存
help
用来显示内部命令的帮助,同时也显示了所有的内部命令
enable
列出所有可用的内部命令
enable COMMD
enable -n 禁用内部命令
. source
让我们写的配置文件生效
env.sh
env是英文单词环境的简写
[14:18:52 root@C8[ ~]#cat /etc/profile.d/env.sh
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\
[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
改文件不会立即生效,重启或重新登录,才会重新读取配置文件。
. /etc/profile.d/env.sh 系统重新读取新内容让他生效
如果外部命令和内部命令重名,优先执行内部命令
在内部命令失效的情况下,可以执行外部命令。
which
显示出外部命令的路径
which -a |--skip-alias 跳过别名
whereis
显示的内容更多,不但显示出外部命令的路径还能显示出外部命令帮助文档的路径
* * *
胖并快乐着的死肥宅
* * *