Есть ли удобное автозаполнение в unix для ранее введенных команд, как в MATLAB? - PullRequest
1 голос
/ 14 февраля 2011

Мне нравится, как вы можете автоматически завершать предыдущие команды в MATLAB, набрав несколько слов и нажав клавишу.То же самое работает в Python IDLE.Есть ли эквивалент этого в оболочках Unix?Если это поможет, я использую csh.

Ответы [ 5 ]

7 голосов
/ 14 февраля 2011

Я не знаю в csh, но в bash у вас есть несколько команд для манипулирования историей.В частности, CTRL-R может быть полезным.Подробнее в:

http://www.delorie.com/gnu/docs/bash/bashref_97.html

2 голосов
/ 14 февраля 2011

В csh вы можете получить доступ к предыдущим командам, используя подстановка истории (см. man csh).

Примеры:

% echo $history
% set history=20
% echo a
a
% pwd
/some/dir
% !e
echo a
a
% history
     9  echo a
    10  pwd
    11  echo a
    12  history
% !-3
pwd
/some/dir
% !e:s/a/wow/
echo wow
wow
%
1 голос
/ 14 февраля 2011

Вы можете установить псевдоним так:

alias prev 'history | grep \!^'

когда вы набираете prev foo, он ищет в вашей истории все вхождения foo и выдает список примерно так:

23 17:43 foo bar
47 19:29 foo fighters

где первый столбец - номер команды, второй - время выполнения, а последний - команда. Вы можете повторно выполнить предыдущую команду, набрав !<command number>

0 голосов
/ 13 марта 2013

То же, что и предыдущий ответ Иисуса, но с дополнительными пояснениями

Нажмите CTRL + R Начните печатать и вуаля! (Вы можете нажать CTRL+R больше раз, чтобы перейти к циклу матчей)

Двойной ответ, но если люди быстро читают, как я, они пропустят ответ, так как я прочитал слова «инструмент» и увидел ссылку, я предположил, что это сторонний инструмент, но он встроен.

0 голосов
/ 14 февраля 2011

rlwrap добавляет gnu readline-редактирование в любую консольную команду.

...