iPython Как история команд для оболочки

Для тех из вас, кто не выполняет программирование на python на ubuntu, ipython - оболочка python на стероидах, но у него есть эта удивительная функция, которая не только автозаполняется на основе известных имен (то есть так же, как bash делает, когда вы нажимаете ), но если вы начнете вводить команду и нажимаете вверх, она не просматривает всю историю (например, bash), а только через последние команды, которые начинаются с той же строки leters.

Итак, если вы сделали длинную команду, например scp -r -P 8000 -l user server.com:~/dir/to/copy ./, а затем несколько других команд. Если вы набрали scp и нажали, bash отобразило бы команду, показанную ранее, а не просто прокрутку всей истории.

Есть ли расширение, подобное этому для bash? или есть какая-нибудь оболочка, которая предлагает такую ​​функцию?

22
задан 10 November 2010 в 02:04

21 ответ

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~/.inputrc:

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

Вместо этого я привязываю его к Ctrl + вверх / вниз:

"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward

edit: Чтобы сохранить Ctrl и ctrl + right для перемещения назад и вперед целыми словами, также включите эти строки в файл ~/.inputrc:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
23
ответ дан 26 May 2018 в 00:30
  • 1
    Используя этот совет, теперь я не могу использовать Ctrl + left / right в терминале, чтобы перейти к следующему / предыдущему слову, что разрушает для меня целую цель. Может быть, обходной путь? – zetah 24 January 2012 в 01:10
  • 2
    @zetah Я отредактировал в ответ мое обходное решение для перемещения слов – wim 12 April 2013 в 07:19

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~/.inputrc:

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

Вместо этого я привязываю его к Ctrl + вверх / вниз:

"\e[1;5A": history-search-backward "\e[1;5B": history-search-forward

edit: Чтобы сохранить Ctrl и ctrl + right для перемещения назад и вперед целыми словами, также включите эти строки в файл ~/.inputrc:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving "\e[1;5C": forward-word "\e[1;5D": backward-word "\e[5C": forward-word "\e[5D": backward-word "\e\e[C": forward-word "\e\e[D": backward-word
23
ответ дан 25 July 2018 в 22:54

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~/.inputrc:

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

Вместо этого я привязываю его к Ctrl + вверх / вниз:

"\e[1;5A": history-search-backward "\e[1;5B": history-search-forward

edit: Чтобы сохранить Ctrl и ctrl + right для перемещения назад и вперед целыми словами, также включите эти строки в файл ~/.inputrc:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving "\e[1;5C": forward-word "\e[1;5D": backward-word "\e[5C": forward-word "\e[5D": backward-word "\e\e[C": forward-word "\e\e[D": backward-word
23
ответ дан 2 August 2018 в 04:18

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~ / .inputrc :

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

Я предпочитаю привязывать его к Ctrl + вверх / вниз:

 " \ e [1; 5A  ": history-search-backward" \ e [1; 5B ": history-search-forward  

edit: сохранение ctrl + left и ctrl + right для перемещения назад и вперед в целых словах, также включают эти строки в файле ~ / .inputrc :

  # сопоставления для Ctrl-left-arrow и Ctrl-right-arrow для перемещения слов  "\ e [1; 5C": forward-word "\ e [1; 5D": backward-word "\ e [5C": forward-word "\ e [5D": backward-word "\ e \ e [  C ": форвард-слово" \ e \ e [D ": обратное слово  
23
ответ дан 6 August 2018 в 04:22

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~ / .inputrc :

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

Я предпочитаю привязывать его к Ctrl + вверх / вниз:

 " \ e [1; 5A  ": history-search-backward" \ e [1; 5B ": history-search-forward  

edit: сохранение ctrl + left и ctrl + right для перемещения назад и вперед в целых словах, также включают эти строки в файле ~ / .inputrc :

  # сопоставления для Ctrl-left-arrow и Ctrl-right-arrow для перемещения слов  "\ e [1; 5C": forward-word "\ e [1; 5D": backward-word "\ e [5C": forward-word "\ e [5D": backward-word "\ e \ e [  C ": форвард-слово" \ e \ e [D ": обратное слово  
23
ответ дан 7 August 2018 в 22:29

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~ / .inputrc :

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

Я предпочитаю привязывать его к Ctrl + вверх / вниз:

 " \ e [1; 5A  ": history-search-backward" \ e [1; 5B ": history-search-forward  

edit: сохранение ctrl + left и ctrl + right для перемещения назад и вперед в целых словах, также включают эти строки в файле ~ / .inputrc :

  # сопоставления для Ctrl-left-arrow и Ctrl-right-arrow для перемещения слов  "\ e [1; 5C": forward-word "\ e [1; 5D": backward-word "\ e [5C": forward-word "\ e [5D": backward-word "\ e \ e [  C ": форвард-слово" \ e \ e [D ": обратное слово  
23
ответ дан 10 August 2018 в 10:37

У Bash тоже есть эта функция, но по умолчанию она не включена. Вы можете привязать его к курсору вверх / вниз, вставив его в ~ / .inputrc :

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

Я предпочитаю привязывать его к Ctrl + up / down вместо:

 " \ e [1; 5A  ": history-search-backward" \ e [1; 5B ": history-search-forward  

edit: сохранение ctrl + left и ctrl + right для перемещения назад и вперед в целых словах, также включают эти строки в файле ~ / .inputrc :

  # сопоставления для Ctrl-left-arrow и Ctrl-right-arrow для перемещения слов  "\ e [1; 5C": forward-word "\ e [1; 5D": backward-word "\ e [5C": forward-word "\ e [5D": backward-word "\ e \ e [  C ": форвард-слово" \ e \ e [D ": обратное слово  
23
ответ дан 13 August 2018 в 17:09
  • 1
    Используя этот совет, теперь я не могу использовать Ctrl + left / right в терминале, чтобы перейти к следующему / предыдущему слову, что разрушает для меня целую цель. Может быть, обходной путь? – zetah 24 January 2012 в 01:10
  • 2
    @zetah Я отредактировал в ответ мое обходное решение для перемещения слов – wim 12 April 2013 в 07:19
  • 3
    – Tulio Casagrande 5 September 2018 в 20:34

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 26 May 2018 в 00:30

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые отрывки из man-страницы, если вы не наложили татуировку на руку (или запомнили их).

   Event Designators  
       An event designator is a reference to a command line entry in the  his‐
       tory 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 trail‐
              ing ? may be omitted if string is followed immediately by a new‐
              line.
       ^string1^string2^
              Quick  substitution.  Repeat the last command, replacing string1
              with string2.  Equivalent to ``!!:s/string1/string2/'' (see Mod‐
              ifiers below).
       !#     The entire command line typed so far.

Я часто использую способность ссылаться на последнее «слово» предыдущей команды. Например,

mkdir /foo/shmoo/adir.horribilus.foo
cp file1 file2 file3 file4 !$ 
ls -l !$

В обоих случаях здесь !$ соответствует /foo/shmoo/adir.horribilus.foo.

1 .. которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, страница bash говорит

   The shell supports a history expansion feature that is similar  to  the
   history  expansion in csh.  

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh. Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash.

6
ответ дан 26 May 2018 в 00:30

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые отрывки из man-страницы, если вы не наложили татуировку на руку (или запомнили их).

Event Designators An event designator is a reference to a command line entry in the his‐ tory 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 trail‐ ing ? may be omitted if string is followed immediately by a new‐ line. ^string1^string2^ Quick substitution. Repeat the last command, replacing string1 with string2. Equivalent to ``!!:s/string1/string2/'' (see Mod‐ ifiers below). !# The entire command line typed so far.

Я часто использую способность ссылаться на последнее «слово» предыдущей команды. Например,

mkdir /foo/shmoo/adir.horribilus.foo cp file1 file2 file3 file4 !$ ls -l !$

В обоих случаях здесь !$ соответствует /foo/shmoo/adir.horribilus.foo.

1 .. которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, страница bash говорит

The shell supports a history expansion feature that is similar to the history expansion in csh.

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh. Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash.

6
ответ дан 25 July 2018 в 22:54

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 25 July 2018 в 22:54

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые отрывки из man-страницы, если вы не наложили татуировку на руку (или запомнили их).

Event Designators An event designator is a reference to a command line entry in the his‐ tory 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 trail‐ ing ? may be omitted if string is followed immediately by a new‐ line. ^string1^string2^ Quick substitution. Repeat the last command, replacing string1 with string2. Equivalent to ``!!:s/string1/string2/'' (see Mod‐ ifiers below). !# The entire command line typed so far.

Я часто использую способность ссылаться на последнее «слово» предыдущей команды. Например,

mkdir /foo/shmoo/adir.horribilus.foo cp file1 file2 file3 file4 !$ ls -l !$

В обоих случаях здесь !$ соответствует /foo/shmoo/adir.horribilus.foo.

1 .. которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, страница bash говорит

The shell supports a history expansion feature that is similar to the history expansion in csh.

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh. Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash.

6
ответ дан 2 August 2018 в 04:18

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 2 August 2018 в 04:18

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые выдержки из справочной страницы, если вы не наложили татуировку на руку (или запомнили их).

  Обозначения событий Обозначение события - это ссылка на запись в командной строке в историческом списке.  !  Запустите замену истории, за исключением случаев, когда за ней следует пробел, новая строка, возврат каретки, = или ((когда опция оболочки extglob включена с использованием встроенного магазина).! N Обратитесь к командной строке n.! -N См. Текущую команду  line минус n.! См. предыдущую команду. Это синоним строки `! -1 '.!. См. самую последнюю команду, начинающуюся со строки.!? string [?] Обратитесь к самой последней команде, содержащей строку.  Прослеживание? Может быть опущено, если строка сразу следует новой строкой. ^ String1 ^ string2 ^ Быстрая подстановка. Повторите последнюю команду, заменив string1 на строку 2. Эквивалент `` !!: s / string1 / string2 /  '' (см. ниже).! # Вся введенная в командной строке команда.  

Я часто использую способность ссылаться на последнее слово «предыдущей» команды. ,

  mkdir /foo/shmoo/adir.horribilus.foo cp file1 file2 file3 file4! $ ls -l! $  

В обоих случаях здесь, ! $ соответствует /foo/shmoo/adir.horr ibilus.foo .


1 ... которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, на странице bash man

  Оболочка поддерживает функцию расширения истории, которая похожа на расширение истории в csh.   

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh . Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash .

6
ответ дан 6 August 2018 в 04:22

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 6 August 2018 в 04:22

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые выдержки из справочной страницы, если вы не наложили татуировку на руку (или запомнили их).

  Обозначения событий Обозначение события - это ссылка на запись в командной строке в историческом списке.  !  Запустите замену истории, за исключением случаев, когда за ней следует пробел, новая строка, возврат каретки, = или ((когда опция оболочки extglob включена с использованием встроенного магазина).! N Обратитесь к командной строке n.! -N См. Текущую команду  line минус n.! См. предыдущую команду. Это синоним строки `! -1 '.!. См. самую последнюю команду, начинающуюся со строки.!? string [?] Обратитесь к самой последней команде, содержащей строку.  Прослеживание? Может быть опущено, если строка сразу следует новой строкой. ^ String1 ^ string2 ^ Быстрая подстановка. Повторите последнюю команду, заменив string1 на строку 2. Эквивалент `` !!: s / string1 / string2 /  '' (см. ниже).! # Вся введенная в командной строке команда.  

Я часто использую способность ссылаться на последнее слово «предыдущей» команды. ,

  mkdir /foo/shmoo/adir.horribilus.foo cp file1 file2 file3 file4! $ ls -l! $  

В обоих случаях здесь, ! $ соответствует /foo/shmoo/adir.horr ibilus.foo .


1 ... которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, на странице bash man

  Оболочка поддерживает функцию расширения истории, которая похожа на расширение истории в csh.   

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh . Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash .

6
ответ дан 7 August 2018 в 22:29

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 7 August 2018 в 22:29

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые выдержки из справочной страницы, если вы не наложили татуировку на руку (или запомнили их).

  Обозначения событий Обозначение события - это ссылка на запись в командной строке в историческом списке.  !  Запустите замену истории, за исключением случаев, когда за ней следует пробел, новая строка, возврат каретки, = или ((когда опция оболочки extglob включена с использованием встроенного магазина).! N Обратитесь к командной строке n.! -N См. Текущую команду  line минус n.! См. предыдущую команду. Это синоним строки `! -1 '.!. См. самую последнюю команду, начинающуюся со строки.!? string [?] Обратитесь к самой последней команде, содержащей строку.  Прослеживание? Может быть опущено, если строка сразу следует новой строкой. ^ String1 ^ string2 ^ Быстрая подстановка. Повторите последнюю команду, заменив string1 на строку 2. Эквивалент `` !!: s / string1 / string2 /  '' (см. ниже).! # Вся введенная в командной строке команда.  

Я часто использую способность ссылаться на последнее слово «предыдущей» команды. ,

  mkdir /foo/shmoo/adir.horribilus.foo cp file1 file2 file3 file4! $ ls -l! $  

В обоих случаях здесь, ! $ соответствует /foo/shmoo/adir.horr ibilus.foo .


1 ... которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, на странице bash man

  Оболочка поддерживает функцию расширения истории, которая похожа на расширение истории в csh.   

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh . Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash .

6
ответ дан 10 August 2018 в 10:37

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 10 August 2018 в 10:37

И не забывайте, что в bash есть яркие ярлыки расширения истории. 1

Я размещаю некоторые выдержки из справочной страницы, если вы не наложили татуировку на руку (или запомнили их).

  Обозначения событий Обозначение события - это ссылка на запись в командной строке в историческом списке.  !  Запустите замену истории, за исключением случаев, когда за ней следует пробел, новая строка, возврат каретки, = или ((когда опция оболочки extglob включена с использованием встроенного магазина).! N Обратитесь к командной строке n.! -N См. Текущую команду  line минус n.! См. предыдущую команду. Это синоним строки `! -1 '.!. См. самую последнюю команду, начинающуюся со строки.!? string [?] Обратитесь к самой последней команде, содержащей строку.  Прослеживание? Может быть опущено, если строка сразу следует новой строкой. ^ String1 ^ string2 ^ Быстрая подстановка. Повторите последнюю команду, заменив string1 на строку 2. Эквивалент `` !!: s / string1 / string2 /  '' (см. ниже).! # Вся введенная в командной строке команда.  

Я часто использую способность ссылаться на последнее слово «предыдущей» команды. ,

  mkdir /foo/shmoo/adir.horribilus.foo cp file1 file2 file3 file4! $ ls -l! $  

В обоих случаях здесь, ! $ соответствует /foo/shmoo/adir.horr ibilus.foo .


1 ... которые были взяты из csh. Чтобы уменьшить масштаб кражи функции bash, на странице bash man

  Оболочка поддерживает функцию расширения истории, которая похожа на расширение истории в csh.   

Итак, это «похоже». Любое из этого может сломаться в csh или tcsh . Или независимо от того, какой из потомков csh вы не используете из-за того, что это не так замечательно, как bash .

6
ответ дан 13 August 2018 в 17:09

Попробуйте нажать Ctrl + R и набрав несколько букв. Он работает в обратном порядке.

7
ответ дан 13 August 2018 в 17:09

Другие вопросы по тегам:

Похожие вопросы: