标签: bash-history

查看在终端中运行的命令的历史记录

有没有办法保存我输入的所有终端命令并像在日志中查看历史记录一样查看它?

history bash-history

113
推荐指数
4
解决办法
44万
查看次数

关闭终端后未保存 Bash 历史记录

我最近用 Ubuntu Gnome(随 Gnome DE 提供)替换了我的 Ubuntu 14.04 安装。但我注意到,一旦终端会话关闭,bash 历史记录就不会保存。一旦我关闭一个终端会话并打开一个新的会话,并运行该命令history,除了history命令本身之外,它不会显示任何内容。有没有办法解决这个问题?

谢谢

bash history ubuntu-gnome bash-history

45
推荐指数
2
解决办法
5万
查看次数

如何重新运行倒数第二个命令?

我使用的是 Ubuntu 21.10。如果我搞砸了,我可以使用 重新运行最后一个命令!!。这是一个例子:

$ apt update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
$ sudo !!
sudo apt update
[sudo] password for [me]:
...
Fetched 336 kB in 2s (206 kB/s)
Reading package lists... Done
Building dependency tree
Reading state …
Run Code Online (Sandbox Code Playgroud)

command-line bash bash-history

20
推荐指数
4
解决办法
5447
查看次数

在 Bash 中按向上键后如何返回到历史记录的底部?

如果我向上滚动或使用Ctrlr搜索并在历史记录中向上移动,如何向下返回到清晰的行?我知道我可以用Ctrle,清除Crtlu,但这会修改​​它们。Ctrlc除了重置外壳之外还有官方方法吗?

command-line bash bash-history

15
推荐指数
1
解决办法
1813
查看次数

为什么“!!” 快捷方式无法执行之前运行的命令?

最近我在我的终端打字

username:~$ !!
Run Code Online (Sandbox Code Playgroud)

并从bash得到错误:

bash: !!: command not found
Run Code Online (Sandbox Code Playgroud)

同时,它在超级用户下完成时成功。

我调查了我用户的 PATH 内容,没有发现任何可疑之处:

/home/username/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Run Code Online (Sandbox Code Playgroud)

这是输出:

username:~$ history | tail
1993  date
1994  cal
1995  vcal
1996  uptime
1997  uname
1998  uptime
1999  uname
2000  uptime
2001  uname
2002  history | tail
Run Code Online (Sandbox Code Playgroud)

其他:

username:~$ echo foo
foo
username:~$ !!
bash: !!: command not found
Run Code Online (Sandbox Code Playgroud)

command-line bash bash-history

14
推荐指数
1
解决办法
654
查看次数

在 shell 历史记录中查找旧命令

如何找到我在终端中运行的旧命令?

我使用了一个 appengine 命令,并希望在我的本地命令历史记录中找到它,而无需再次在线研究它。

command-line bash history bash-history

14
推荐指数
2
解决办法
5万
查看次数

如何删除 bash 历史记录中的最后 5 行?

如何删除 bash 历史记录中的最后 5 行?所以当我重新加载 Ubuntu 服务器或重新启动它时,它们根本就不存在?

history -c 只从当前会话中删除它,但是当我重新登录时,我再次看到命令,我想清除最后 5 个。

我跑了:

history
Run Code Online (Sandbox Code Playgroud)

然后我会看到命令的编号,例如:

  489  cd ..
  490  cd .zshrc
  491  cat .zshrc
Run Code Online (Sandbox Code Playgroud)

然后我运行例如:

history -d 489
history -c 
Run Code Online (Sandbox Code Playgroud)

然后我关闭终端并重新打开它,我仍然看到第 489 行它只在当前会话中被删除,我如何从所有会话中永久删除它?

请指教。

command-line bash 14.04 bash-history

14
推荐指数
3
解决办法
3万
查看次数

在 bash 历史记录中隐藏“history -d”

如果我不小心在 bash 中输入了我的密码或任何其他敏感内容,我可以使用 轻松删除该行history -d ROW#,但我总是留下history -d ROW#历史记录中的命令,向所有人显示有人纠正了错误。

我可以在命令中附加一些内容以防止它出现在 bash 历史记录中吗?

command-line bash bash-history

14
推荐指数
3
解决办法
3210
查看次数

终端更换!后跟一个带有命令的数字

我对我的 ubuntu 终端会话感到非常困惑,它似乎!用看似随机的命令替换了命令中以数字开头的部分。它通过!87将其替换为screen -l!88并替换为ls.

任何想法为什么会发生这种情况将不胜感激。

command-line bash history bash-history

12
推荐指数
1
解决办法
448
查看次数

将 bash 历史记录中的多行命令块分成多行

在 Bash(以及 WSL 中的 Bash)中,多行编写的命令可以使用向上/向下箭头正确回调,内置history命令也可以正确报告它们(直到我仍然登录 bash)。

但是在退出bash并按下向上/向下箭头后,多行命令每个都显示为单独的条目,这是因为cat ~/.bash_history已将命令放在多个单独的条目上并在此处写入问题;该history命令的结果搞砸了。

我已经设置了这些选项 ~/.bashrc

shopt -s cmdhist lithist
HISTTIMEFORMAT='%F %T '
Run Code Online (Sandbox Code Playgroud)

现在写入问题已修复,history命令仍以多行和单独的条目报告(现在读取问题)。

Bash 版本是 4.3,在 v4.4 上有同样的问题

多年来一直有这个错误报告,但还没有解决方案。

更新:

还要提到的是,即使在退出 Bash 之后,以下多行命令作为示例也能正确显示:

for i in {1..10}
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)

但这失败了:

awk '
{ print $1}' <<<'first last'
Run Code Online (Sandbox Code Playgroud)

更新 2:

上面提到的问题在 Bash v5.0.0+ 中得到修复,该问题已更改为将“时间戳作为分隔符”之间的条目识别为命令的单个条目(必须设置HISTTIMEFORMATcmdhistlithist)。

bash history bash-history

11
推荐指数
1
解决办法
1264
查看次数

标签 统计

bash-history ×10

bash ×9

command-line ×7

history ×5

14.04 ×1

ubuntu-gnome ×1