相关疑难解决方法(0)

Bash 历史记录:“ignoredups”和“erasedups”设置与会话中的共同历史记录冲突

首先,这不是 SE 上任何现有线程的重复。我已经阅读了关于更好的 bash 历史的这两个线程(第 1 个第 2 个),但没有一个答案有效 - 顺便说一下,我在 Fedora 15 上。

.bashrc在用户目录(/home/aahan/)中的文件中添加了以下内容,它不起作用。有人有线索吗?

HISTCONTROL=ignoredups:erasedups  # no duplicate entries
HISTSIZE=1000                     # custom history size
HISTFILESIZE=100000                 # custom history file size
shopt -s histappend                      # append to history, don't overwrite it
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  # Save and reload the history after each command finishes
Run Code Online (Sandbox Code Playgroud)

好的,这就是我想要的 bash 历史记录(优先级):

  • 不要存储重复项,删除任何现有的
  • 立即与所有打开的终端共享历史记录
  • 始终附加历史记录,而不是覆盖它
  • 将多行命令存储为单个命令(默认情况下是关闭的)
  • 默认的历史记录大小和历史记录文件大小是多少?

bash command-history

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

如何只获得唯一的结果而不必对数据进行排序?

$ cat data.txt 
aaaaaa
aaaaaa
cccccc
aaaaaa
aaaaaa
bbbbbb
$ cat data.txt | uniq
aaaaaa
cccccc
aaaaaa
bbbbbb
$ cat data.txt | sort | uniq
aaaaaa
bbbbbb
cccccc
$
Run Code Online (Sandbox Code Playgroud)

我需要的结果是显示原始文件中的所有行,删除所有重复项(不仅仅是连续的),同时保持文件中语句的原始顺序

在这里,在这个例子中,我实际上正在寻找的结果是

aaaaaa
cccccc
bbbbbb
Run Code Online (Sandbox Code Playgroud)

uniq一般如何执行此通用操作?

text-processing uniq

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

如何删除历史记录中匹配给定字符串的命令?

我需要删除历史记录中匹配字符串的所有命令。我试过了:

$ history | grep searchstring | cut -d" " -f2 | history -d
-bash: history: -d: option requires an argument

$ history | grep searchstring | cut -d" " -f2 | xargs history -d
xargs: history: No such file or directory

$ temparg() { while read i; do "$@" "$i"; done }
$ history | grep searchstring | cut -d" " -f2 | temparg history -d
(no error, but nothing is deleted)
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

bash command-history xargs text-processing

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

标签 统计

bash ×2

command-history ×2

text-processing ×2

uniq ×1

xargs ×1