`

Linux中history历史命令使用方法详解

阅读更多

当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升。事实上,一旦你掌握了我在下面给出的15个有关Linux history历史命令的例子,你就会发现使用history历史命令行将更有乐趣。

1、使用HISTTIMEFORMAT在历史中显示TIMESTAMP

通常情况下,当你在命令行中键入history时,终端中将显示你刚输入的命令及其编号。如果出于审查命令的目的,和命令一起显示时间戳将会很有帮助,如下所示。

# export HISTTIMEFORMAT='%F %T ' 
# history | more 
1 2008-08-05 19:02:39 service network restart 
2 2008-08-05 19:02:39 exit 
3 2008-08-05 19:02:39 id 
4 2008-08-05 19:02:39 cat /etc/redhat-release
[注:你也可以设置alias语句来查看最近的历史命令] 
alias h1='history 10' 
alias h2='history 20' 
alias h3='history 30'

2、用Ctrl + R搜索历史命令

我非常确信这应该是你最常使用的history特性,当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl +R然后输入关键字。 在以下示例中,我搜索“red”,则显示以前的命令中含有”red”的命令“cat/etc/redhat-release”。

[注:在命令行提示符下按下Ctrl+R,终端将显示如下提示―reverse-i-search‖]
 (reverse-i-search)`red`: cat/etc/redhat-release 
[注:当看到你要的命令后按回车键,就可以重新执行这条命令了] 
#cat /etc/redhat-release 
Fedora release 9 (Sulphur)

而有的时候你需要在执行一条历史命令之前编辑它.比如,你可以像下面那样搜索“httpd”,终端显示历史命令“service httpd stop”,选择它把“stop”改为“start”然后执行它

[注: 在命令提示符下按 Ctrl+R , 将会显示提示符‖reverse-i-search‖]
 (reverse-i-search)`httpd`: service httpdstop
[注: 看到你想要的命令后按下左键或者右键,就可以在执行这条命令之前编辑它了] 
# service httpd start

3、四种不同的方法快速执行之前的命令

有时出于某些原因你需要执行之前的命令,下面的四种方法可以用来重复最后执行的命令:

1.用向上键(up arrow )查看上条命令,按回车执行。 
2.在命令行中输入!!并按回车。 
3.在命令行中输入!-1并按回车。 
4.按Ctrl+P显示上条命令,按回车执行。

4、执行历史命令中的特定命令

在下面的例子中,如果你想再次执行第四条命令,执行!4即可

#history | more 
1 service network restart 
2 exit 
3 id 
4 cat /etc/redhat-release 
# !4 cat /etc/redhat-release 
Fedora release 9 (Sulphur)

5、执行以特定字开头的历史命令

输入!和你要重新执行的命令的前几个字母。在下面的例子中,输入!ps,回车,执行历史命令中以“ps”开头的“psaux | grep yp”

#!ps 
psaux | grep yp 
root 16947 0.0 0.0 36516 1264 ? Sl 13:10 0:00 ypbind 
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

6、用HISTSIZE控制历史命令的总数

把下面的两行添加到.bash_profile然后重新登录bash(译者注:用source .bash_profile即可)查看有什么变化,在这个例子中,bash命令历史记录中只能储存450条命令。

#vi ~/.bash_profile 
HISTSIZE=450
HISTFLESIZE=450

7、使用HISTFILE改变历史文件名

默认情况下,命令历史被储存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新登录shell,则.commandline_warrior文件将取代.bash_history文件用来储存历史命令。你可以使用这个命令来追踪不同终端中执行的命令,届时只需要将不同终端中所执行的命令保存在不同的历史文件中即可。

#vi ~/.bash_profile 
HISTFILE=/root/.commandline_warrior

8、使用HISTCONTROL来消除命令历史中的连续重复条目

在下面的例子中pwd被输入了三次,当你使用history的时候,你会看到这三条命令连续出现。设置HISTCONTROL为ignoredups,来消除重复命令:

#pwd 
# pwd 
# pwd 
# history | tail -4 
44 pwd 
45 pwd 
46 pwd 
47 history | tail -4 
[注: 上面pwd被执行了三次之后,历史中有三条pwd命令]
# export HISTCONTROL=ignoredups 
# pwd 
# pwd 
# pwd 
# history | tail -3 
56 export HISTCONTROL=ignoredups 
57 pwd 58 history | tail -4 
[注:即使上面pwd被执行了三次,历史中也只有一条pwd命令]

9、使用HISTCONTROL在整个历史中去除重复命令

上面的ignoredups去除连续重复的命令,要消除整个命令历史中的重复命令,把HISTCONTROL设置成erasedups

#export HISTCONTROL=erasedups 
# pwd 
# service httpd stop
#history | tail -3 
38 pwd 
39 service httpd stop 
40 history | tail -3 
# ls -ltr 
# service httpd stop 
# history | tail -6 
35 export HISTCONTROL=erasedups 
36 pwd 
37 history | tail -3 
38 ls –ltr 
39 service httpd stop 
40 history | tail -6 
[注: 之前在pwd后面的servicehttpd stop命令被除去了]

10、使用HISTCONTROL强制history忽略某条特定命令

在执行一条命令时,你可以将HISTCONTROL设置为ignorespace并在该命令前加上一个空格来指示history忽略这条命令。可以预见的是,很多初级系统管理员将为他们能从history中成功隐藏某条命令而振奋。

了解ignorespace的工作方式是很好。不过,实践中最好不要从history中去掩盖任何命令。

#export HISTCONTROL=ignorespace 
# ls –ltr 
# pwd 
# service httpd stop 
[注: 在service的前面加上一个空格,以便在命令历史中忽略它]
# history | tail -3 
67 ls –ltr 
68 pwd 
69 history | tail -3

11、使用c选项清除所有的历史命令

有时候你或许想要清除之前的历史命令。而你又想让history继续工作:

#history –c

12、替换命令历史中的内容

当你搜索历史命令时,你可能希望执行一个与刚刚查找到的历史命令具有相同的参数的命令。 在本例中,vi之后的"!!:$" 可以将前一个命令的参数做为当前命令的参数。

#ls anaconda-ks.cfg 
anaconda-ks.cfg 
# vi !!:$ 
vi anaconda-ks.cfg

在下面的例子中,紧跟在vi后的参数“!^”把上一个命令的第一个参数传递给当前命令。

#cp anaconda-ks.cfg anaconda-ks.cfg.bak 
anaconda-ks.cfg 
# vi !^ 
vi anaconda-ks.cfg

13、替换特定命令的特定参数

在下例中,!cp:2 在命令历史中查找以cp开头的命令,并将其第二个参数做为当前命令(ls -l)的参数。

#cp ~/longname.txt /really/a/very/long/path/long-filename.txt 
# ls -l !cp:2 
ls -l /really/a/very/long/path/long-filename.txt

在下面的例子中“!cp:$”寻找先前以cp为开头的命令,并把该条指令的最后一个参数(在这个例子中依旧是第二个参数)替换到“ls –l”中。

#ls -l !cp:$ 
ls -l /really/a/very/long/path/long-filename.txt

14、用HISTSIZE禁用history

如果你想禁用history,又不让bashshell记录你的命令,像下面那样把HISTSIZE设为0即可。

#export HISTSIZE=0 
# history 
# [注: 执行history后没有显示任何信息]

15、用HISTIGNORE让history在存储时忽略某些指令

有时你不想在记录里看到诸如“pwd”,“ls”之类的基本指令,可以用HISTIGNORE忽略这些指令。

注意在HISTIGNORE中添加“ls”,只忽略“ls”不忽略“ls –l”。一定要准确的写出要忽略的的指令。

#export HISTIGNORE=“pwd:ls:ls –ltr: ”
#pwd 
# ls 
# ls –ltr 
# service httpd stop 
# history | tail -3 
79 export HISTIGNORE=“pwd:ls:ls -ltr: ” 
80 service httpd stop 
81 history 
[注: history命令不显示pwd和ls]

分享到:
评论

相关推荐

    Linux基础课件Linux系统历史命令history命令

    在提供的压缩包文件“Linux基础课件Linux系统历史命令history命令共10页.pdf.zip”中,很可能包含了对`history`命令的详细讲解,包括其工作原理、使用方法以及相关的实践案例。通过深入学习这些课件,用户可以全面...

    linux下history(历史)命令用法详解.docx

    Linux 下 history(历史)命令用法详解 Linux 中的 history 命令是命令行中非常实用的工具,可以帮助用户快速地执行以前的命令,提高工作效率。下面将详细介绍 history 命令的 15 个用法。 1. 使用 HISTTIMEFORMAT...

    linux 之history命令用法

    最简单的使用方法就是直接在命令行中输入`history`命令,它会列出你之前执行过的所有命令,按照它们被执行的时间顺序排列。 ##### 2. 设置显示时间戳 默认情况下,`history`命令显示的命令历史并不包含时间信息。...

    原来 Linux history 命令这么强大!1

    【Linux history命令详解】 在Linux操作系统中,`history`命令是一个非常实用的工具,它能够帮助用户管理和回顾之前执行过的命令历史,从而提高工作效率。本文将深入探讨`history`命令的基本原理、使用方法以及一些...

    linux中less命令使用详解.docx

    Linux 中 less 命令使用详解 less 命令是 Linux 中一个功能强大的文件浏览工具,相比于 more 命令,它更具灵活性和实用性。less 命令可以用来浏览文件、搜索文件、翻页浏览文件等。 1. 命令格式:less [参数] 文件...

    Linux调整命令历史方法详解

    `$HISTSIZE`的值决定了在终端会话中可查看的历史命令数量。例如,如果你看到`$HISTSIZE`的值为500,这意味着最多可以查看500条历史记录。如果你想要增加或减少这个数量,可以在终端中运行相应的命令,如`export ...

    linux命令集详解

    14. `history`:显示历史命令。用于回顾和重复之前输入过的命令。 15. `管道` (`|`):连接命令。将一个命令的输出作为另一个命令的输入,如`ls | grep ".txt"`会显示所有.txt文件。 16. `tar`:文件打包和压缩工具...

    Linux 最新系统命令大全及其使用详解

    这篇文档"Linux系统命令大全及其使用详解"涵盖了许多重要的命令,旨在帮助用户深入理解和熟练运用这些工具。以下是对其中一些关键命令的详细说明: 1. **ls**:列出目录内容。通过`ls -l`可以查看详细信息,包括...

    linux下常用命令及其使用详解

    本教程将详细讲解Linux下的常用命令及其使用方法,帮助你深入理解这个强大的操作系统。 1. **ls**:用于列出目录中的文件和子目录。你可以使用`ls -l`来查看详细信息,`ls -a`来显示隐藏文件,`ls -R`来递归列出...

    Linux 系统命令及其使用详解

    本文将深入讲解一些常用的Linux系统命令及其使用方法。 1. **ls**:列出目录内容。例如,`ls -l`将显示当前目录下的所有文件和目录的详细信息,包括权限、所有者、大小等。 2. **cd**:改变工作目录。如`cd /home/...

    Linux系统命令及其使用详解

    在Debian/Ubuntu系统中使用`apt-get`安装、更新或卸载软件,RHEL/CentOS系统中使用`yum`。 14. **vi/vim**:文本编辑器。`vi`或`vim`是Linux下常用的文字编辑工具,可用于创建、编辑和查看文本文件。 15. **...

    linux常用命令使用详解

    以下是一些主要的Linux命令详解: 1. 文件管理: - `cat`:用于查看文件内容,也可以合并多个文件。例如,`cat -n file.txt`会显示`file.txt`的每一行并添加行号。 - `cd`:改变当前工作目录。如`cd /home/user`...

    linux命令详解

    ### Linux命令详解:History与LS命令深度解析 #### 一、History命令详解 **1.1 基本介绍** `history`命令是Linux Shell的一个内置命令,它可以帮助用户查看和管理之前执行过的命令历史记录。这对于快速重复执行...

    Linux 系统命令及其使用详解(大全)

    以上只是Linux系统命令的一部分,实际使用中还有许多其他命令,如`sudo`用于以管理员权限执行命令,`history`查看历史命令,`alias`创建命令别名等。熟练掌握这些命令,不仅能提高你在Linux环境下的工作效率,还能...

    linux常用命令练习

    - **历史命令**:自动记录用户输入的命令,可通过`history`命令查看,便于重复执行或修改之前的命令。 - **别名**:允许用户自定义命令别名,提高命令输入效率。 - **输入/输出重定向**:改变命令的输入或输出流,如...

    第四章:linux下常用命令及其使用详解.rar

    本章将详细介绍一些常用的Linux命令及其使用方法。 1. **ls**:列出目录内容 `ls` 命令用于查看当前目录中的文件和子目录。通过添加参数,如 `-l`(长格式显示)、`-a`(显示所有文件,包括隐藏文件)和 `-h`(以...

    Linux基本的命令详解

    ### Linux基本命令详解 #### Linux目录结构解析 在深入探讨具体的Linux命令之前,先了解Linux系统中的关键目录及其作用非常重要。 1. **/etc/default/useradd**:此文件用于存储添加用户时的默认配置信息。 2. **...

Global site tag (gtag.js) - Google Analytics