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

相关推荐

  • 文本处理三剑客之sed

    概述     经过上篇对正则表达式和grep相关内容的学习,我们对文本处理有了一个初步的认识,本篇将简要介绍一下文本处理三剑客之sed。具体分为以下几个部分:     1、sed原理概述     2、sed命令详解 第一部分 &n…

    Linux干货 2016-08-10
  • 推荐-Nginx专题: upstream模块和缓存的简单使用

    Nginx专题: upstream模块和缓存的简单使用 nginx 负载均衡 Nginx专题: upstream模块和缓存的简单使用 前言: 实验拓扑 实验环境 Nginx_Upstream模块介绍 upstream使用方法 upstream使用示例 Nginx_Cache介绍 缓存静态资源 总结 前言: 本文接着上篇Nginx专题: 从编译安装到…

    Linux干货 2016-04-07
  • Linux基础介绍

    1、Linux用户: Linux用户分为普通用户和管理员,普通用户的系统操作权限低,用户的误操作对系统数据的破坏程度有限,不会对系统造成灾难性的破坏。而管理员对系统具有绝对的权限,可以修改和设置系统的任何数据,如果误操作,及其容易对系统数据造成不可挽回的破坏,比如执行以下命令 rm  -rf  / 。因此,系统管理员在操作root用户时需…

    Linux干货 2016-07-26
  • LVM创建实例及相关注释

    LVM创建    pv—>vg—->lv—->快照 创建前准备了四块1g硬盘分别为:sdb  sdc sdd  sde,并分别给四块盘划分了1G的空间,并指定了分区系统类型为8e(即Linux LVM) [root@localhost ~]# fdisk /dev/…

    Linux干货 2015-06-08
  • 三剑客之Sed

    sed:stream editor(流编辑器) 工作特性:并不直接处理文本文件本身,处理机制为每当处理一个文件的时候,它会逐行读取,每次把一行读取到内存空间中去,而后在模式空间(pattern space)中完成编辑.并把编辑好的结果输出到屏幕上  功      能:数据替换、删除、增加、等,数据为关键字或者一整行, …

    Linux干货 2016-08-08
  • 用户、组及文件相关的一些命令

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1,因为是目录文件所以要有-r ls -ld /etc/skel chmod 000 -R /home/tuser1 ls -al /home/tuser1/ 2、编辑/…

    2017-07-23