15个例子掌握Linux命令行历史

15个例子掌握Linux命令行历史

当你经常使用Linux命令行时,有效地使用历史可以提高生产力。事实上,一旦你掌握以下15个例子,你会发现使用命令行更有意思更有趣。

1.使用HISTTIMEFORMAT显示时间戳

通常,当你从命令行键入历史记录时,它会显示#和命令。出于审计目的,将timestamp与命令一起显示是很有帮助的,如下所示。

# export HISTTIMEFORMAT=‘%F %T ‘
# history | more
1  2018-08-05 19:02:39 service network restart
2  2018-08-05 19:02:39 exit
3  2018-08-05 19:02:39 id
4  2018-08-05 19:02:39 cat /etc/redhat-release

2.使用Ctrl+R搜索历史记录

这可能是最常用的历史特征。当你执行了很长的命令,你只需使用关键词搜索历史记录并重新执行相同命令即可,而无需完全键入命令。按Ctrl+R并键入关键字。在下面的示例中,我搜索了“red”,命令历史会显示前一个包含“red”的命令“cat /etc/redhat-release

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red‘: cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
CentOS release 6.5 (Final)

有时希望在执行命令之前能够从命令历史中编辑命令。例如,你可以搜索httpd,它显示命令历史中的service httpd stop ,选择此命令将stop改为start,如下所示。

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd‘: service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3.使用4种不同的方法快速执行上一条命令。

有时你会因为各种原因重复执行以前的命令。以下是4种不同的方法去重复执行上次执行的命令。

  1. 使用up arrow查看上以前的命令,然后按Enter键执行
  2. 键入!!并在命令中按Enter键执行
  3. 键入!-1并在命令中按Enter键执行
  4. Control + P将显示以前的命令,然后按enter键执行

4.从命令历史中执行特定的命令

如下所示,如果你想重复执行命令#4,你可以键入!4执行。

# history | more
1  service network restart
2  exit
3  id
4  cat /etc/redhat-release

# !4
cat /etc/redhat-release
CentOS release 6.5 (Final)

5.执行上一条以特定关键字开头的命令

输入! 然后是您想要重新执行的命令的起始几个字母。在下面的示例中,键入 !ps 并输入,执行上一个以ps开头的命令,即‘ps aux | grep yp‘。

# !ps
ps aux | grep yp
root     16947  0.0  0.1  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 shell以查看更改。在此示例中,只有450个命令将存储在bash历史记录中。

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

7.使用HISTFILE更改历史文件名

默认情况下,历史记录存储在~/.bash_history文件中。将以下行添加到.bash_profile并重新登录到bash shell,以将历史命令存储在.commandline_warrior文件中,而不是.bash_history文件中。我还没有找到实际用途。当您想要使用不同的历史文件名跟踪从不同终端执行的命令时,这时候就派上用场了。

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

8.使用HISTCONTROL消除历史记录的连续重复输入

在下面的示例中,pwd被键入三次,当您执行历史记录时,您可以看到它的全部记录连续3次出现。要消除重复,请将HISTCONTROL设置为ignoredups,如下所示。

# pwd
# pwd
# pwd
# history | tail -4
44  pwd
45  pwd
46  pwd [Note that there are three pwd commands in history, after
executing pwd 3 times as shown above]
47  history | tail -4

# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56  export HISTCONTROL=ignoredups
57  pwd [Note that there is only one pwd command in the history, even after
executing pwd 3 times as shown above]
58  history | tail -4

注意:相同的命令必须是满足连续这个条件

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
[Note that the previous service httpd stop after pwd got erased]
40  history | tail -6

10.使用HISTCONTROL强制历史记录不要记住特定命令

执行命令时,可以通过将HISTCONTROL设置为忽略空间并在命令前面键入空格来指示历史记录忽略该命令,如下所示。我可以看到许多初级系统管理员对此感到兴奋,因为他们可以隐藏历史命令。很好理解ignorespace是如何工作的。但是,作为一种最佳实践,不要有目的地隐藏历史中的任何东西。

# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
#  service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]
# history | tail -3
67  ls -ltr
68  pwd
69  history | tail -3

11.使用选项-c清除以前所有历史命令记录

# history -c

12.从历史命令中获取参数

在搜索历史记录时,您可能希望执行不同的命令,但使用您刚刚搜索过的命令中的相同参数。

在下面的示例中,vi命令旁边的!!:$获取上一个命令的参数到当前命令。

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

在下面的示例中,vi命令旁边的!^从前一个命令(即cp命令)获取第一个参数到当前命令(即vi命令)。

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

13.替换特定命令的特定参数。

在下面的示例中,!cp:2搜索历史记录中以cp开头的上一个命令,并获取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开头的历史记录中的上一个命令,并获取cp的最后一个参数(在这种情况下,也是上面显示的第二个参数)并将其替换为ls -l命令如下图所示。

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

14.使用HISTSIZE禁用历史记录

如果想要禁用历史记录并且不希望bash shell记住您键入的命令,请将HISTSIZE设置为0,如下所示。

# export HISTSIZE=0
# history
# [Note that history did not display anything]

15.使用HISTIGNORE忽略历史记录中的特定命令

有时你可能不希望使用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
[Note that history did not record pwd, ls and ls -ltr]

原文地址:https://www.cnblogs.com/dnote/p/9461813.html

时间: 2024-10-22 08:50:23

15个例子掌握Linux命令行历史的相关文章

教你隐藏Linux的命令行历史

如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中.原因可能很多,例如,你在公司担任某个职位,你有一些不希望被其它人滥用的特权.亦或者有些特别重要的命令,你不希望在你浏览历史列表时误执行. 然而,有方法可以控制哪些命令进入历史列表,哪些不进入吗?或者换句话说,我们在 Linux 终端中可以开启像浏览器一样的无痕模式吗?答案是肯定的,而且根据你想要的具体目标,有很多实现方法.在这篇文章中,兄弟连教育www.lampbrother.net 将和大家讨论一些行之有效

如何隐藏你的 Linux 的命令行历史

如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中.原因可能很多,例如,你在公司担任某个职位,你有一些不希望被其它人滥用的特权.亦或者有些特别重要的命令,你不希望在你浏览历史列表时误执行. 然而,有方法可以控制哪些命令进入历史列表,哪些不进入吗?或者换句话说,我们在 Linux 终端中可以开启像浏览器一样的无痕模式吗?答案是肯定的,而且根据你想要的具体目标,有很多实现方法.在这篇文章中,我们将讨论一些行之有效的方法. 注意:文中出现的所有命令都在 Ubuntu

Linux 命令行下的好东西

  列举你可能没注意过的好用的 Linux 命令行命令 现在做网站做移动应用最讲究的就是推广了,推广做的好那就成功了一大半,相对的没曝光产品再好也很难做下去.就这个角度而言绝大多数 Linux 命令行的推广简直是烂透了.繁多 Linux 有用极了的命令行工具就静静的躺在你发行版默认安装的包裹里,很多时候只有当你碰到什么问题的时候网上搜一圈才能知道.更蛋疼的是这里面很多东西你一旦知道了就会想我靠原来没这个到底是怎么过的下去.所以这里我会列出一些我用过的一些,大部分发行版默认就有,或者能用包裹管理工

在Linux命令行下令人惊叹的惊叹号(!)

'!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能在别的Shell中运行.这里我们介绍下Linux命令行中符号'!'那惊人和奇妙的用法. 1. 使用数字从历史命令列表中找一条命令来执行 您也许没有意识到您可以从历史命令列表(之前已经执行的命令集)中找出一条来运行.首先,通过"history"命令查找之前命令的序号. $ history 使

<<linux命令行与shell脚本编程大全>>学习笔记(1)

一章初识linux shell 一.什么是linux 1.linux系统可大致划分为四部分: l Linux内核 l GNU工具组件 l 图形化桌面环境 l 应用软件 在linux系统里,这四部分中的每一部分都扮演着一个特别的角色,但如果将他们分开,每一部分都没太大的作用. 1)探究linux内核 Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,必要时分配硬件,有时需要执行软件. 内核基本负责以下四项主要功能: l 系统内存管理 l 软件程序管理 l 硬件设备管理 l 文件系

给新手的 10 个有用 Linux 命令行技巧

我记得我第一次使用 Linux 的时候,我还习惯于 Windows 的图形界面,我真的很讨厌 Linux 终端.那时候我觉得命令难以记忆,不能正确使用它们.随着时间推移,我意识到了 Linux 终端的优美.灵活和可用性,说实话,我没有一天不使用它.今天,我很高兴和刚开始接触 Linux 的人一起来分享一些有用的技巧和提示,希望能帮助他们更好的向 Linux 过渡,并帮助他们学到一些新的东西(希望如此). 5 个有趣的 Linux 命令行技巧 这篇文章希望向你展示一些不需要很高的技术就可以像一个高

linux命令行重要快捷键

学习命令行,你需要掌握几个十分有用,必需掌握的小技巧 1.[Tab] 使用Tab键来进行命令补全,这个技巧给你带来的最大的好处就是当你忘记某个命令的全称时你可以只输入它的开头的一部分然后按下Tab键就可以得到提示或者帮助完成.当然不止补全命令,补全目录,补全命令参数都是没问题的 2.[Ctrl+c] 想想你有没有遇到这种情况,当你在Linux命令行中无意输入了一个不知道的命令,或者错误的使用了一个命令,导致在终端里出现了你无法预料的情 况,比如,只有光标在闪烁无法继续输入命令,或者不停地在输出一

在 Linux 命令行中使用和执行 PHP 代码

PHP是一个开源服务器端脚本语言,最初这三个字母代表的是“Personal Home Page”,而现在则代表的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写.它是一个跨平台脚本语言,深受C.C++和Java的影响. 在 Linux 命令行中运行 PHP 代码 PHP的语法和C.Java以及带有一些PHP特性的Perl变成语言中的语法十分相似,它当下大约正被2.6亿个网站所使用,当前最新的稳定版本是PHP版本5.6.10. PHP是HTML的嵌入脚本,它便于开发

linux命令行命令

1 Linux命令行编辑快捷键: 2 3 history 显示命令历史列表 4 5 ↑(Ctrl+p) 显示上一条命令 6 7 ↓(Ctrl+n) 显示下一条命令 8 9 !num 执行命令历史列表的第num条命令 10 11 !! 执行上一条命令 12 13 !?string? 执行含有string字符串的最新命令 14 15 Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 16 17 Ctrl+s 与Ctrl+r类似,只是正向检索 18