这些技巧让 Bash 命令历史更加有用
创始人
2024-03-02 05:19:59
0

告诉 Bash 你想要它记住什么,甚至删除不需要的记录重写历史。

运行 Bash 的 Linux 终端有内置的历史记录,你可以用来跟踪最近的操作。要查看你的 Bash 会话的历史记录,请使用内置命令 history

$ echo "foo"
foo
$ echo "bar"
bar
$ history
  1  echo "foo"
  2  echo "bar"
  3  history

与大多数命令不一样,history 命令不是文件系统上的可执行文件,而是 Bash 的功能。你可以使用 type 命令来验证:

$ type history
history is a shell builtin

历史控制

shell 历史记录的行数上限由 HISTSIZE 变量定义。你可以在 .bashrc 文件中设置此变量。以下将你的历史记录设置为 3,000 行,之后将最早的行删除以为最新命令腾出空间,该命令位于列表的底部:

export HISTSIZE=3000

还有其他与历史相关的变量。 HISTCONTROL 变量控制哪些历史被记录。你可以在 .bashrc 中写入下面的行来强制 Bash 排除以空格开头的命令:

export HISTCONTROL=$HISTCONTROL:ignorespace

现在,如果你输入以空格开头的命令,那么它将不会记录在历史记录中:

$ echo "hello"
$     mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
  1  echo "hello"
  2  echo "world"
  3  history

你也可以避免重复的条目:

export HISTCONTROL=$HISTCONTROL:ignoredups

现在,如果你一个接着一个输入两个命令,历史记录中只会显示一个:

$ ls
$ ls
$ ls
$ history
  1  ls
  2  history

如果你喜欢这两个忽略功能,那么可以使用 ignoreboth

export HISTCONTROL=$HISTCONTROL:ignoreboth

从历史记录中删除命令

有时你会犯一个错误,在 shell 中输入了一些敏感内容,或者你​​只是想清理历史记录,以便它更准确地表示让某件事正常工作所采取的步骤。如果要从 Bash 的历史记录中删除命令,请在要删除的项目的行号上使用 -d 选项:

$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
  535  echo "foo"
  536  echo "bar"
  537  history | tail
$ history -d 536
$ history | tail
  535  echo "foo"
  536  history | tail
  537  history -d 536
  538  history | tail

要停止添加 history 条目,只要在 HISTCONTROL 环境变量中有 ignorespace,就可以在命令前添加空格:

$  history | tail
  535  echo "foo"
  536  echo "bar"
$  history -d 536
$  history | tail
  535  echo "foo"

你可以使用 -c 选项清除所有会话历史记录:

$ history -c
$  history
$

history 命令的经验教训

操纵历史通常没有听起来那么危险,尤其是当你有目标地管理它时。例如,如果你要记录一个复杂的问题,通常最好使用会话历史来记录命令,因为通过将命令插入历史记录,你能运行它们并从而测试过程。很多时候,不执行历史命令会导致忽略小的步骤或写错小细节。

按需使用历史会话,并明智地控制历史记录。享受历史修改吧!


via: https://opensource.com/article/20/6/bash-history-control

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

如果张仲景活在今天,会拒绝...
原标题:如果张仲景活在今天……(金台随感) “张仲景如果活在今天,...
2026-07-15 13:50:29
研究人员揭露Linux K...
IT之家 7 月 7 日消息,研究人员 Hyunwoo Kim 发...
2026-07-14 13:35:28
驼铃古道 乐启新声 模式口...
近日,“驼铃古道 乐启新声”2026模式口AI原创音乐暨模式口AI...
2026-07-08 11:34:20
AI辅助Linux系统管理...
我并非所有场景都推崇使用AI。在创意类工作中,我坚持认为AI介入空...
2026-06-20 12:53:31
房山发布AI+AR红色研学...
戴上AR眼镜,革命歌曲的创作场景跃然眼前……日前,全国首个AI+A...
2026-05-26 14:55:31
ETF资金榜 | 食品ET...
2026年5月21日,食品ETF前海开源(560420.SH)收跌...
2026-05-22 14:56:57

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...