【发布时间】:2016-08-15 18:22:43
【问题描述】:
我最近从 tcsh 切换到了 bash,而一直困扰我的一件事是 bash 如何处理历史记录。我经常调出以前的历史命令并开始编辑它,但我意识到我需要先运行一个不同的命令。在 bash 中,这会编辑原始命令,我看不到我最初键入的内容。在 tcsh 中,当我使用向上和向下箭头时,已编辑的命令位于堆栈底部,并在我准备好时准备继续编辑或运行。
我找到了this question,其中有几个答案有助于理解 bash 在重新运行和编辑历史记录方面的工作原理,但我仍然不知道改变这种行为的方法(如果存在这种情况)。是否可以防止 bash 编辑已经运行的命令?
例如,如果我运行
abcd
efgh
ijkl
然后使用向上箭头和退格 efgh 到 efg,然后按下并键入不同的命令“mnop”,我希望我的历史看起来像:
abcd
efgh
ijkl
mnop
目前看起来像:
abcd
* efg
ijkl
mnop
这似乎是一个微不足道的问题,但是当运行具有多个需要反复试验的管道的长命令时,会造成一些重大的工作损失。
【问题讨论】:
-
不要向下击,按Ctrl+c。
-
谢谢 - 很高兴知道。有时我可能会忘记这一点,但在这和 chepner 的回答之间,我的状态应该会好得多。
-
是的,这是一个非常严重的麻烦。历史在概念上和根据定义应该是不可变的。
标签: linux bash shell edit history