Questions tagged «command-history»

撤回先前在Shell或其他实用程序中键入的命令

2
如何正确摆脱bash中的感叹号?
今天,我在尝试对Twitter的密码生成器进行编码时被捕。 import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9)) 90个字符。由于有很多可用空间,因此我决定提高标准并使之也可执行。 echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 139个字符。不错,除了在惊叹号上明显的b子声。 badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg bash: !/usr/bin/python\nimport: event not found 讨厌的感叹号。“让我们逃脱吧,”我想!我毕竟有一个备用角色。 echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 明显... badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print …


4
保留每个工作目录的历史记录(参见每个shell会话)
有没有一种方法可以使现代外壳的历史特征仅限于路径? 我的工作上下文被拆分为文件系统上的路径,并且shell活动的模式(例如重复发出的命令)对于每个“项目”而言都是不同的。如果我可以将历史记录功能的作用域范围限定为从当前路径(或子路径)发出的命令,那就太好了。

2
重击:“历史编号”与“命令编号”
在谷歌搜索如何通过PS1变量自定义我的shell提示时,我看到了可以使用的特殊字符表。特别是: \! the history number of this command \# the command number of this command “历史编号”似乎更常用,并且我知道如何使用命令!523来从历史中重做命令。但是我不知道“命令号”是否具有类似的功能。我尝试放入\#PS1变量,它似乎输出在特定会话中输入的命令数(与不同\!,它在注销/退出后仍然存在)。 有人知道如何以方便或有意义的方式使用“命令号”吗?

1
历史记录-仅列出成功运行的命令
我想知道是否有一种方法可以使用history命令,但仅列出成功运行的命令。同样,是否有办法列出产生错误的错误? 我知道每个命令的退出状态为: 0-成功执行命令 1-由于扩展或重定向期间出错,命令失败,退出状态大于零。 2-错误的命令用法 12-找到命令但无法执行 127-找不到命令 并可以通过以下命令检查执行命令echo $? : http : //www.linuxnix.com/2011/03/find-exit-status-script-command-command-linux.html 例: 运行以下4条命令后: ls help lss ls nonexistentfile 我尝试测试仅打印成功的命令(退出状态为0),该命令应该仅为“ ls”和“ help”: for j in `history | tail -5 | head -4 | cut -d ' ' -f5-`; do $j > cmd_out; if [[ `echo $?` != 0 ]]; …

1
Zsh:使向上箭头跳过相同的命令
在大多数Unix Shell中,向上箭头↑键替换历史记录中上一个命令正在编辑的命令。使用命令可以查看历史记录history。 ↑ 可以多次按下以爬上历史记录。 我的问题是: 我如何配置我的外壳程序,以便↑跳过所有与当前命令相同的命令? 确实,我经常make连续输入很多。当我想再次输入(或稍作修改)一个较旧的命令时,我不得不打↑很多次才能跳过所有make命令。 我知道,这↑绝不是提高外壳生产率的唯一秘诀。 奖金: 提供适用于Bash shell的配置。 保留历史记录(知道您连续多次键入命令会很有用)

3
zsh中的按目录历史记录
zsh从现在开始我一直很高兴使用,并且我对我的历史记录设置非常满意,这些设置是: # Write to history immediately setopt inc_append_history # History shared among terminals setopt share_history # Save extended info in history setopt extended_history # Ignore duplicates setopt hist_ignoredups 但是经常发生的是,我需要在某些特定目录中使用特定命令。例如,当我在时,~/my_project我通常调用make target1 && ./run1,但是当我在时,~/second_project我通常需要make target2 && cat foobar | ./run2。 那就是:不同的目录,但是相似的命令。 因此,我通常会cd ~/my_project键入make并在历史记录中向后搜索,直到找到所需的内容为止。但是,如果碰巧我在其中工作过second_project,那么在搜索历史记录时,我会发现一些我不需要的命令。 因此,我的问题是:zsh是否存在插件/设置/功能,以便在历史记录中搜索时,首先显示在当前目录中调用的命令? 理想情况下,所有其他匹配历史记录命令都将出现在这些命令之后,可以选择指定优先级元素的最大数量。 我会尝试自己编写类似的内容,但是我仍然不知道如何编写自定义zsh插件,如何处理历史记录等等。

2
有什么方法可以撤消bash历史记录的修改?
通过按下,我可以浏览以前输入的命令。不过,我注意到,如果我修改其中之一,则会更改历史记录。例如,如果我键入: echo a echo b echo c [up][up][backspace]d[ctrl+c] 历史现在显示,第二个命令echo d不是echo b。如何保持echo b历史第一? 例如,假设我运行了一个很长的命令,其中包含很多选项。然后我想再次运行它,但有一个小的更改,因此我回顾了历史以查找并进行更改,但是随后意识到实际上我不需要重新运行它,只是想到了另一个选择代替。然后,我想回去提醒自己我执行的命令是什么-但是,等等,历史记录现在显示了错误的内容! 这种情况很少出现,但是当我发现它确实很烦人时。有什么方法可以自动保存原始历史记录?

2
在bash脚本中运行时,“历史记录”停止工作
我正在编写一个简单的脚本来grep我的bash历史记录以查找特定的字符串。在命令行上,我可以执行以下操作,效果很好: history | grep git 但是,当我使用与上述相同的命令创建bash脚本时,突然不history返回任何内容: #!/bin/bash history | grep git 当我删除第一行时#!/bin/bash,我的脚本再次起作用。这是怎么回事 如何history在bash脚本中使用?

2
从多个Konsole保存bash历史记录无法正常工作
我使用多个Konsole终端。而且我希望我在每个终端中键入的所有命令都保存在命令历史记录中,以便我打开的下一个konsole拥有所有命令。为了防止每个终端覆盖另一个终端的命令历史记录,我在我的计算机中进行了以下设置.bashrc # avoid duplicates and commands starting with space export HISTCONTROL=ignoredups:erasedups:ignorespace # append history entries.. shopt -s histappend #My machine reboots without warning sometimes.Hence to save commands instantaneously. export PROMPT_COMMAND="history -a" export HISTSIZE=1000 PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1 我在最后一行给出了提示符,以查看命令号。命令号 从未超过600,但是我的一些旧命令仍然从历史中消失。有很多命令是重复给出的,但是正如从所期望的那样ignoredups,它永远不会在提示符后增加命令no。然而旧的命令仍在消失,历史上的命令数量始终保持在500多一点。 .bash_history尽管忽略了该文件,但该文件仍然包含许多重复项。 PS:echo $HISTSIZE和输出$HISTFILESIZE均为=1000 更新:我在上面的条目中发现了问题.bashrc。只需调用即可history -a,PROMPT_COMMAND只需将最后一个新命令附加到.bash_history。所以ignoredups和erasedups没有作用。 有什么办法,我仍然可以写.bash_history而不用从每个终端重复吗?我不想在每个命令提示符处加载整个历史记录,history -r然后再用再次写回history -w,因为我在一个终端中发出的命令也会出现在另一个并行运行的终端中。我希望组合的命令仅出现在新终端中。 我的历史为何被修整到500的难题已解决。我注意到每次我进入这台机器时,它都会发生。.bash_profile使用以下条目创建一个即可解决此问题。 if [ -f ~/.bashrc …

1
如何停止Bash附加历史记录
我想要用自己的方式设置Bash的终端历史记录时遇到很多麻烦。我希望没有重复的条目,如果输入命令,我希望将其保存,并将上面的重复项删除。 问题是该history命令向我显示了它按照我想要的方式运行,但是一旦我注销,重复项就会再次出现。我相信这只是将历史添加到现有的历史上。我的.bashrc文件中包含以下几行: HISTCONTROL=ignoreboth:erasedups shopt -u histappend 我什至尝试取消注释shopt,但是它仍然在注销时附加历史记录。在注销之前,如何获得历史记录?

1
脚本中是否禁用了历史记录扩展?
我了解以下错误是由于!用于历史记录扩展而导致的: $ echo "Hello!Tim" bash: !Tim: event not found 但是,如果将命令放入脚本中并运行该脚本,则不会出现问题: $ cat myscript echo "Hello!Tim" $ bash myscript Hello!Tim 这是为什么?bash手册中是否提到了原因?

3
如何将带有时间戳的命令历史连续输出到终端?
我使用一个简单的别名来启用一个或多个终端窗口中的命令“跟踪”: alias trackmi='export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"' 然后,我将tail -f我的.bash_history文件放在工作区的另一个终端中,以立即获得反馈。我刚刚启用了无限的历史记录, 并export HISTTIMEFORMAT="[%F %T] "在.bashrc中更新了我的历史记录格式()。当然,该history命令会显示时间戳。但是历史文件本身的格式为: #1401234303 alias #1401234486 cat ../.bashrc 我该如何转换Unix时间并像显示命令一样将整个命令显示在一行上history,包括编号: 578 [2014-05-27 19:45:03] alias 579 [2014-05-27 19:48:06] cat ../.bashrc ...然后遵循。还是找到一种将history命令输出连续输出到终端的方法?


2
搜索命令历史
我通过按以下方式搜索终端命令历史Ctrlr: This is an old command This is an | less -S older command 我按Ctrlr,然后键入“这是一个”,并且出现旧命令,但不是旧命令。如何搜索所有“这是”命令?是否可以将所有类似的命令传递给grep或其他东西? 如果是我set -o vi该如何撤消呢?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.