首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使历史记录here-document及其输入?

如何使历史记录here-document及其输入?
EN

Stack Overflow用户
提问于 2011-11-21 14:55:48
回答 2查看 407关注 0票数 2

当我使用命令行时,我可以使用C-P或向上箭头来调用历史记录。但是,当尝试调用对here-document的输入时,这不起作用。

代码语言:javascript
复制
# cat <<!
> a
> b
> c
> !
a
b
c
# cat <<! # C-p to get here, expected to see ! as last input. C-c to break out
# history 2
2053  cat <<!
2054  history 2

我使用的是rxvt。

备注:在emacs中使用shell时,此功能可以正常工作

EN

回答 2

Stack Overflow用户

发布于 2011-12-04 22:15:49

代码语言:javascript
复制
shopt -s cmdhist

cat <<!
a
b
c
!

history | tail ...
8580  cat <<!
a
b
c
!

cmdhist shell选项,如果启用,则会导致shell尝试将多行命令的每一行保存在同一历史记录条目中,并在必要时添加分号以保持语法正确。

shell的lithist选项会导致shell使用嵌入的换行符而不是分号来保存命令。

来自man bash

票数 2
EN

Stack Overflow用户

发布于 2013-08-08 20:59:38

我也有同样的问题。Bash 3.2.49(1)-release

代码语言:javascript
复制
psql <<EOF
SELECT * FROM blah;
EOF

我的历史只保留了第一行。我已经设置了cmdhist (和lithist),它们可以很好地用于其他多行命令,但不适用于heredocs。真是悲剧。

一种解决方法是:

代码语言:javascript
复制
echo "
SELECT *
FROM blah
" | psql
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8208264

复制
相关文章

相似问题

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