shell两类命令&Hash缓存表&命令行历史
一、Shell中两类命令
- 内部命令:由shell自带,用户登录后自动加载并常驻内存中
- 外部命令:外部命令是外部的应用程序,一个命令就对应一个应用程序。运行外部命令要开启一个新的进程,所以效率上比内置命令差很多(可以自定义)
用户输入一个命令后,Shell 先检测该命令是不是内置命令,如果是就执行,如果不是就检测有没有对应的外部程序:有的话就转而执行外部程序,执行结束后再回到 Shell;没有的话就报错,告诉用户该命令不存在。
用type命令查看是内部还是外部命令
type command
enable cmd #启用内部命令
enable -n cmd #禁用内部命令
enable -n #查看所有禁用的内部命令
- 所以有些命令无法执行可以查看一下enable
二 、Hash缓存表
- 执行外部命令时,将会找到记录到hash表中,当再次使用命令时先从Hash表查找,提高命令调用速率。看他干了啥东西可能是重要的
hash -l #显示hash缓存
hash -d name #删除特定名称的缓存
hash -r #清除缓存
- 查看管理员使用相关命令
常用命令
#查看CPU
lscpu
cat /proc/ cpuinfo
#查看内存
free -h
cat /proc/meminfo
#磁盘分区情况*
lsblk
cat /proc/partitions
#查看系统架构*
arch
#查看内核版本*
uname -r
uname -ar
#查看发行版本*
cat /etc/ redhat-release
cat /etc/os-release
cat /etc/issue
三、命令行历史(history)
- 在终端操作后,系统默认会在内存记录执行的命令,当用户退出时会将内存命令记录在~/.bash_history
history -c 清空历史命令
history-d 指定删除命令.
history n 显示最近的n条历史
history -w 保存历史列表到指定文件
#命令历史记录条数
echo $HISTSIZE
#命令历史文件记录历史条数
echo $HISTFILESIZE
- 不使用history -c清除记录,通过编辑.bash_history删除自己相关执行的文件,或者执行时忽略以空白开头的命令
- History在渗透、溯源中起到了非常重要的作用!! !(不留痕迹的走掉)
调用命令行历史+快捷键
```shell
#重复前一个命令
! !
#执行history对应的命令
!n
#执行以什么开头的命令
!string
#清屏
Ctrl +l
#挂起命令
ctrl+z
#光标行首
Ctrl+a
#光标行尾
Ctrl+e
#光标右移一个字符
ctrl+f
#光标左移一个字符
Ctrl+b
#光标前后移动
ctr +xx
#清屏
Ctrl +l
#挂起命令
ctrl+z
#光标行首
Ctrl+a
#光标行尾
Ctrl+e
#光标右移一个字符
ctrl+f
#光标左移一个字符
Ctrl+b
#光标前后移动
ctr +xx