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


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.