Linux命令帮助及history命令的使用

1.Linux命令帮助的获取详解

在Linux中获取命令帮助时,内部命令和外部命令的获取方式是有区别的:

即

 (1)内部命令:#help COMMAND

?            #man bash

 (2)外部命令:<1> # COMMAND –help

                   # COMMAND -h


               <2>  使用手册(manual)

                   # man COMMAND

               <3> 信息页

                   # info COMMAND

                <4>  程序自身的帮助文档等

                       README

                       INSTALL

                       ChangeLog


内部命令本身一开机就会随bash加载到内存中

而外部命令只会运行后才会加载到内存中可以用hash命令看到

当前shell为bash如果想要查看bash帮助信息,可以通过man bash 来查看,同时我们知道bash提供了许多内部命令如cd ,l等,如果用man bash 来查看帮助信息实际看到的为bash的帮助信息,因此内部命令不通过man来查看。

[root@localhost ~]# echo $PATH

/usr/lib64/qt3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


 hash表的作用:大大提高命令的调用速率。

 hash的参数:

[root@redhat ~]# hash  //输入hash或hash -l 可以查看hash表的内容,我刚开机所以为空

hash: hash table empty

[root@redhat ~]# hash -l

hash: hash table empty

 

当我执行过2条命令后再看:

[root@redhat ~]# hash  //hash表会记录下执行该命令的次数,以及命令的绝对路径

hits command

   1 /bin/cat

   1 /bin/ls

[root@redhat ~]# hash -l  //加参数-l既可以看到hash表命令的路径,也可以看到它的名字,说不定会有别名

builtin hash -p /bin/cat cat

builtin hash -p /bin/ls ls

 

[root@redhat ~]# hash -p /bin/ls bb  //添加hash表,可以看到我把ls命令重新写了一遍,改名为bb

当前shell为bash如果想要查看bash帮助信息,可以通过man bash 来查看,同时我们知道bash提供了许多内部命令如cd ,l等,如果用man bash 来查看帮助信息实际看到的为bash的帮助信息,因此内部命令不通过man来查看。

[root@localhost ~]# echo $PATH

/usr/lib64/qt3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


 hash表的作用:大大提高命令的调用速率。

 hash的参数:

[root@redhat ~]# hash  //输入hash或hash -l 可以查看hash表的内容,我刚开机所以为空

hash: hash table empty

[root@redhat ~]# hash -l

hash: hash table empty

 

当我执行过2条命令后再看:

[root@redhat ~]# hash  //hash表会记录下执行该命令的次数,以及命令的绝对路径

hits command

   1 /bin/cat

   1 /bin/ls

[root@redhat ~]# hash -l  //加参数-l既可以看到hash表命令的路径,也可以看到它的名字,说不定会有别名哦

builtin hash -p /bin/cat cat

builtin hash -p /bin/ls ls

 

[root@redhat ~]# hash -p /bin/ls bb  //添加hash表,可以看到我把ls命令重新写了一遍,改名为bb

[root@redhat ~]# bb    //当我执行bb时就是执行ls

anaconda-ks.cfg        icmp_echo_ignore_aly~  pub.key

dead.letter        icmp_echo_ignore_alz~  rpmbuild

icmp_echo_ignore_all~  install.log       RPM-GPG-KEY-useradd

icmp_echo_ignore_alw~  install.log.syslog     RPM-GPG-KEY-westos

icmp_echo_ignore_alx~  passwd

 

[root@redhat ~]# hash -t ls  //-t参数可以查看hash表中命令的路径,要是hash表中没有怎么办?

/bin/ls

[root@redhat ~]# hash -t df  //我没使用过df,执行hash,就会提示找不到该命令

-bash: hash: df: not found

 

[root@redhat ~]# hash -r  //清楚hash表,清楚的是全部的

[root@redhat ~]# hash -l

hash: hash table empty

 

[root@redhat ~]# hash -l

builtin hash -p /bin/cat cat

builtin hash -p /bin/ls ls

[root@redhat ~]# hash -d cat   //清楚其中的某一条

[root@redhat ~]# hash -l

builtin hash -p /bin/ls ls


2.history命令

〈一〉history是管理命令历史,每次执行的命令都会纺织在内存缓存中,直到退出当前终端后保存在历史文件中。

root@linux ~]# history [n]
[root@linux ~]# history [-c]
[root@linux ~]# history [-raw] histfiles

参数:
n  
 :数字,意思是‘要列出最近的 n 笔命令列表’的意思!
-c 
 :将目前的 shell 中的所有 history 内容全部消除
-a 
 :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles ,
     
则预设写入 ~/.bash_history
-r 
 :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w 
 :将目前的 history 记忆内容写入 histfiles 中!
范例:
范例一:列出目前记忆体内的所有 history 记忆
[root@linux ~]# history
#
 前面省略
 1017  man bash
 1018  ll
 1019  history
 1020  history
#
 列出的资讯当中,共分两栏,第一栏为该指令在这个 shell 当中的代码,
#
 另一个则是指令本身的内容,至于会出几笔指令记录,则与 HISTSIZE 有关!

范例二:列出目前最近的 3 笔资料
[root@linux ~]# history 3
 1019  history
 1020  history
 1021  history 3

范例三:立刻将目前的资料写入 histfile 当中
[root@linux ~]# history -w
#
 在预设的情况下,会将历史纪录写入 ~/.bash_history 当中!
[root@linux ~]# echo $HISTSIZE
1000

在正常的情况下,当我们以 bash 登入 Linux 主机之后,系统会主动的由家目录的 ~/.bash_history 读取以前曾经下过的指令,那么 ~/.bash_history 会记录几笔资料呢?这就与你 bash 的 HISTSIZE 这个变数设定值有关了!在预设的 FC4 底下,是会记录 1000 笔资料的! 那么假设我这次登入主机后,共下达过 100 次指令,‘等我登出时, 系统就会将 101~1100 这总共 1000 笔历史命令更新到 ~/.bash_history 当中。’ 也就是说,历史命令在我登出时,会将最近的 HISTSIZE 笔记录到我的纪录档当中当然,也可以用 history -w 强制立刻写入的!那为何用‘更新’两个字呢? 因为 ~/.bash_history 记录的笔数永远都是 HISTSIZE 那么多,旧的讯息会被主动的拿掉!仅保留最新的

〈二〉简单常用的调用历史中的命令。

[root@linux ~]# !number
[root@linux ~]# !command
[root@linux ~]# !!
参数:
number  :执行第几笔指令的意思;
command
 :由最近的指令向前搜寻‘指令串开头为 command’的那个指令,并执行;
!!     
:就是执行上一个指令(相当于按↑按键后,按 Enter)
范例:
[root@linux ~]# history
   66  manrm
   67 alias
   68  manhistory
   69 history
[root@linux ~]# !66  <==
执行第66 笔指令
[root@linux ~]# !!  <==
执行上一个指令,本例中亦即 !66
[root@linux ~]# !al <==
执行最近以 al 为开头的指令(上头列出的第 67 个)

原创文章,作者:Zzuimeng,如若转载,请注明出处:http://www.178linux.com/28485

赞 (0)
ZzuimengZzuimeng
上一篇 2016-08-05 16:15
下一篇 2016-08-05 16:15

相关推荐

  • vsftpd相关应用解析

    FTP(File Transfer Protocol)文件传输协议 FTP 是 TCP/IP 协议组中的协议之一。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称…

    2017-06-06
  • Nginx浅谈(一)

    浅谈nginx(一) 此文主要介绍nginx的基础知识及其基本配置,一为巩固,二为记录 知识点: nginx的作用 nginx的基本配置框架 nginx一些常用模块介绍 1、什么是nginx     nginx是一款免费的,开源的,高性能的HTTP服务软件,它不仅能     够支…

    Linux干货 2017-01-15
  • 流编辑器Sed(Stream Edit)详解

    流编辑器Sed(Stream Edit)详解       Grep 、sed 和awk并称为文本三剑客。使用Grep就可以很好的实现文本查找的功能,而且简单有效。然而其却无法直接对其进行编辑,sed的出现便解决了这一问题。 Sed被称为流编辑器,它是一种新型的非交互式的文本编辑器,它逐行处理文件或输入,并将结…

    Linux干货 2016-08-22
  • Linux运维实战之6:挂载/卸载磁盘分区

    上次博文我们具体讨论了Linux系统中磁盘的分区及格式化( http://www.178linux.com/60811),本次博文我们具体来说说分区的挂载哈! 【问题引入】 已经格式化好的分区如何与系统现有的文件系统建立关联(如何使用新分区)? 新的磁盘分区创建完成并格式化之后需要挂载(或装入)到目录树上才能被使用。 何谓挂载/卸载? 【答】将某个…

    Linux干货 2016-12-04
  • shell编程数组及源码安装作业

    写一个脚本,定一个数组,数组中的元素是/var/log目录下所有以.log结尾的文件,要统计其下标为偶数的文件中的行数之和 [root@localhost sh.log]# cat declaresum.sh  #!/bin/bash #author:DYW #写一个脚本,定一个数组,数组中的元素是/var/log目录…

    Linux干货 2016-08-29
  • Linux基础知识之RAID

    1、什么是RAID?     多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供。2、RAID的优点?     提高IO 能力:         磁盘并行读写   &n…

    Linux干货 2016-09-01