首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Bash终端从第一个到第10个循环历史记录命令

使用Bash终端从第一个到第10个循环历史记录命令
EN

Stack Overflow用户
提问于 2022-10-27 14:03:12
回答 2查看 22关注 0票数 0

我应该使用until循环逐行从历史记录中获取前10个命令。

尝试过这样的方法:

代码语言:javascript
运行
复制
counter=0

until [ $counter -gt 10 ]
do
  echo !$counter
  ((counter++))
done

但是输出是docounter的十倍。

主要问题是如何从历史中获取循环中的特定行。

EN

回答 2

Stack Overflow用户

发布于 2022-10-27 14:15:21

Csh风格的历史扩展是一个交互的特性,它不能在脚本中工作。

看起来你只是在找history $HISTSIZE | head -n 10

票数 0
EN

Stack Overflow用户

发布于 2022-10-27 14:31:09

有几种简单的方法。试试这个-

代码语言:javascript
运行
复制
 while read -r cmd; do if ((ctr++ < 10)); then echo "$cmd"; fi; done < "$HISTFILE"

代码语言:javascript
运行
复制
history|head -10|mapfile -t h && for c in {0..9}; do echo "${h[c]}"; done

编辑

你在图托利亚点使用的终端有点烂。

试着这样做,并注意为什么它重要。

代码语言:javascript
运行
复制
history | while read -r cmd; do if ((ctr++ < 10)); then echo "$cmd"; fi; done

具体来说,bash: /tmp/.bash_history: Permission denied

他们显然只允许通过history程序访问历史文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74223390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档