.png)
Как настроить Bash так, чтобы клавиши «вверх» и «вниз» были такими же, как в cmd?
Например
$echo command1
$echo command2
$echo command3
$echo command4
И в Bash, и в cmd нажатие ↑, ↑, ↑, ENTERзапустит echo command2
.
Однако последующее нажатие клавиши «вниз» в cmd перейдет сразу к следующей команде, т. е echo command3
. Нажатие клавиши «вниз» в Bash ничего не делает. cmd сохраняет историю на определенный момент времени (аналогично кнопкам «Назад» и «Вперед» в веб-браузере), а Bash — нет.
Аналогично с cmd, двойное нажатие клавиши вверх в cmd возвращает echo command1
, тогда как в Bash это же действие возвращает echo command3
.
Много раз мне хотелось бы извиниться за некоторые цепочки команд, которые я ранее ввел по порядку. В cmd очень удобно, что я могу прокрутить историю назад к первой из последовательности, а затем, ↓, ENTER, ↓, ENTER, ↓, ENTER...
Однако я не могу найти подобный способ сделать это в Bash. Возможно ли модифицировать ~/.inputrc
или какой-то другой файл каким-то образом, чтобы добиться этого?
решение1
Хотя лично я бы не хотел этого делать, поскольку привык к истории bash, но я понимаю, почему люди хотят этого. Я уже рассматривал это раньше, для коллеги на работе, который был новичком в *nix и хотел получить функциональность DOS в xterm, и тогда, как и сейчас, решения, похоже, не было.
Я только что провел еще один тщательный поиск и не нашел ничего очевидного, кроме:
- ДОСЭМУ, что не совсем то, что вам нужно, и;
- Заставьте командную строку Linux работать как DOS с помощью скриптов оболочки, но ссылка, похоже, несколько прерывистая, и, кроме того, это, вероятно, не то, что вам действительно нужно. Эта ссылка просто предоставляет способызаменяяКоманды Unix для команд DOS с использованием пользовательских скриптов.
Как ни странно, есть много способов сделать cmd более похожим на bash, например,Функция, похожая на историю Bash, для командной строки Windows, но к сожалениюА не наоборот.
Основная проблема заключается в том, что, если говорить (слишком) просто, функциональность клавиш курсора (и то, как она взаимодействует с историей) встроена в исходный код Bash, и скрипты, псевдонимы и функции оболочки не могут переопределить этот факт 1. Вам потребуетсяпереписаноbash, с различными [переключаемыми?] встроенными функциями клавиш курсора, своего рода «DOSBash», если можно так выразиться.
Возможно, есть возможность заполнить нишу на рынке, и кто-то в конечном итоге удовлетворит эту потребность, но я бы не стал на это надеяться.
1 Если я не прав и можно переопределить функциональность клавиш курсора простым изменением файла ресурсов, я был бы рад, если бы кто-нибудь мог меня поправить.
решение2
Прием, который я использую, заключается в том, чтобы просто повторять одно и то же количество раз ↑:
$ echo command1
$ echo command2
$ echo command3
$ echo command4
Если я хочу повторить последовательность от echo command 2
до echo command4
, я просто нажимаю ↑3 раза, чтобы перейти к echo command2
, затем еще 3 раза, чтобы перейти к , echo command3
и еще 3 раза, чтобы перейти к echo command4
.
Таким образом, если вы вернулись на N элементов в своей истории, нажав ↑N раз, повторное нажатие N раз будет каждый раз возвращать вас к следующей команде, поскольку была вставлена новая команда, которую вы выполнили.