Как мне включить историю, чтобы записать здесь документ и его ввод? - PullRequest
2 голосов
/ 21 ноября 2011

Когда я использую командную строку, я могу вспомнить историю, используя C-P или стрелку вверх. Однако это не работает при попытке вызвать входные данные в следующем документе.

# 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.

P.S. Эта функция работает правильно при использовании shell в emacs

Ответы [ 2 ]

2 голосов
/ 08 августа 2013

У меня такая же проблема. Bash 3.2.49 (1) -релиз

psql <<EOF
SELECT * FROM blah;
EOF

Моя история сохраняет только первую строку. У меня есть cmdhist lithist ), и они отлично работают для других многострочных команд, но не для heredocs. Трагическая.

Обходной путь:

echo "
SELECT *
FROM blah
" | psql
2 голосов
/ 04 декабря 2011
shopt -s cmdhist

cat <<!
a
b
c
!

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

Параметр оболочки cmdhist , если он включен, вызывает попытку оболочки сохранить каждую строку многострочной команды в одной истории запись, добавляя точки с запятой, где это необходимо для сохранения синтаксического правильность.

Параметр оболочки lithist заставляет оболочку сохранять команду со встроенными символами новой строки вместо точек с запятой.

От человека Баш

...