Використання стрілки вгору для запуску попередньої команди


11

Які установки мені потрібно використовувати стрілку вгору для запуску попередньої команди? У Mac я можу використовувати стрілку вгору, щоб повторити команду, яку я просто запускаю, але, схоже, це не працює з моєю базовою оболонкою.

Я використовую 8.04 (я не можу використовувати найновіший дистрибутив через деякі проблеми з версією компілятора).

ДОБАВЛЕНО

Я нічого не змінив, оскільки це свіжа установка з VMWare Fusion на Mac.


3
У конфігурації за замовчуванням стрілка вгору працює ідеально: ви змінили щось?
enzotib

як @enzotib каже, що bash зробить це за замовчуванням, але деякі інші, наприклад, sh не будуть!
Rory Alsop

Відповіді:


10

Переконайтеся, що ваша історія включена. Ви можете перевірити поточний стан, запустивши:

set -o

Вихід повинен містити (зверніть увагу на history onрядок):

histexpand      on
history         on
ignoreeof       off

Якщо це не ввімкнено, потрібно запустити set -o history. Щоб зробити цю зміну стійкою, потрібно додати її до ~/.bashrc:

set -o history

Якщо ви хочете виконати попередню команду, ви також можете виконати наступну команду:

!!

З сторінки керівництва Bash :

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Якщо ви використовуєте Bash, ви також можете використовувати ярлики за замовчуванням для навігації по історії:

  • Ctrl+ P: Попередня команда
  • Ctrl+ N: Наступна команда

    Команди для маніпулювання попередньою історією історії (Cp) Вилучення попередньої команди зі списку історії, повернення до списку. next-history (Cn) Отримайте наступну команду зі списку історії, рухаючись вперед у списку.


1
Я перевірив правильність налаштування, але клавіша зі стрілкою вгору не працює. Однак я можу використовувати Ctrl-P / N для отримання того ж результату. Спасибі.
prosseek

@prosseek У цьому випадку ви змінилися /etc/inputrcчи ~/.inputrc? Крім того, яку послідовність втечі створює стрілка вгору та вниз у терміналі, який ви використовуєте? Щоб перевірити, запустіть cat, потім по порожній рядку натисніть на стрілку вгору і вниз, потім Ctrl + C, щоб вийти з кота. Тут воно виробляє ^[[A^[[B.
geirha

@geirha: У мене немає файлу ~ / .inputrc, і я нічого не змінив / etc / inputrc. А за послідовністю втечі я нічого не бачив на екрані.
prosseek

@prosseek Тоді це здається, що клавіші зі стрілками взагалі ніколи не дістаються до терміналу. Можливо, інтерфейс VMWare фільтрує їх чи щось.
geirha

14

Переконайтеся, що ви фактично використовуєте bash. Звичайна проблема - це створення нового користувача із застосуванням useraddзамість adduserабо користувачем та групами (GUI). Для першого встановлений стандартний набір оболонок /bin/sh. Запустіть chsh( ch ange sh ell), щоб переконатися, що це налаштовано /bin/bash.


1

У терміналі введіть:

gedit  ~/.inputrc

Потім скопіюйте пасту і збережіть:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

Відтепер у терміналі ви можете здійснювати поступовий пошук. Все, що вам потрібно зробити, щоб знайти попередню команду - це ввести, сказати, перші два-три букви, і стрілка вгору перенесе вас туди швидко.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.