CARLOS_CHIANG 阅读(24) 评论(0)

点击返回 自学Linux命令行与Shell脚本之路

5.2-shell内建命令history alias

外部命令:有时称为文件系统命令,是存在于bash shell之外的程序,通常位于/bin、/usr/bin 、/sbin 、/usr/sbin中
                  当外部命令执行时会创建一个子进程,叫做衍生,,此时就需要花费时间和精力设置新i进程的环境
                  ps就是一个外部命令,可以使用which、type命令找到它

内建命令: 不需要借用外部程序来运行。执行速度快效率高。
                    cd    exit 都是内建命令(有的命令既有内建命令也有外部命令,如echo、pwd)

内建命令history 

用于显示历史记录和执行过的指令命令
history命令读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。
该命令单独使用时,仅显示历史命令
在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2
                             !! 执行上一条历史命令
                             history num  查看历史命令后num条
                             !str 执行指定str开头的命令(最后一个)
                             !? 获得最后执行的状态码

history(选项)(参数)
  • -N: 显示历史记录中最近的N个记录;
  • -c:清空当前历史命令;
  • -a:将历史命令缓冲区中命令写入历史命令文件中;
  • -r:将历史命令文件中的命令读入当前历史命令缓冲区;
  • -w:将当前历史命令缓冲区命令写入历史命令文件中;
  • -d<offset>:删除历史记录中第offset个命令
  • -n<filename>:读取指定文件

history命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量 HISTSIZE进行控制。
默认是不显示命令的执行时间,命令的执行时间,history 已经记录,只是没有显示。

注:如想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查Home目录下的用户主目录下的“.bash_history”文件,该文件记录了用户所使用的命令和历史信息。

历史命令(环境变量)配置文件/etc/profile

  • 历史命令 默认保存1k条,可以在环境变量配置文件/etc/profile中修改 HISTSIZE=xxx
  • 历史命令 默认保存文件修改 HISTFILE=/path/FILENAME
  • 历史命令 剔除连续重复的条目 HISTCONTROL=ignoredups
  • 历史命令 忽略指定命令HISTIGNORE=”pwd:ls:cd:”
  • 历史命令 格式化输出HISTTIMEFORMAT=’%F %T ’ ,bt只能输出设置生效之后的

内建命令alias 

 alias命令用来设置指令的别名

  • -p:打印已经设置的命令别名。(可加可不加)
  • unalias 取消别名

此时设定的别名,重启设备后就失效,若想永久保存,需要在.bashrc 下填写别名保存。