Как я повторяю последнюю команду, не используя клавиши со стрелками?

Это прослушивало меня также, и я ответил на Ваш вопрос как на катализатор для исследования немного меня. По-видимому, Вы не.

Существует подобный вопрос на stackoverflow, который имеет только использование gdb как принятое решение. Другие ответы предлагают (и я соглашаюсь, заботитесь ли Вы), что переменные изменяющей среды после gui запуск имеют мало бесцельно. Тем более, что изменение среды процесса НЕ ВЛИЯЕТ на среду своих детей.

121
01.08.2014, 04:40
14 ответов
awk 'NR == FNR {t=($4 $5 $(NF-1));
  $1=$2=$3=$4=$5=X;
  $0=$0; $1=$1;
  sub(/].*$/, "]");
  a[t] = $0; next}
  ($3 $2 $5) in a {$4 = ($4 " " a[$3 $2 $5])}1' file2 file1
-121--217849-

С помощью csh или любой оболочки, реализующей csh -подмещение истории ( tcsh , bash , zsh ):

!!

Затем введите .


Или либо :

!-1

Затем введите .


Или Ctrl + P , Введите


Магическое пространство

Также обратите внимание, что !! и ! -1 не будут автоматически расширяться до тех пор, пока они не будут выполнены (когда может быть слишком поздно).

При использовании bash можно поместить bind Космоса: magic-space в ~/.bashrc , затем нажать Пространства после того, как команда автоматически развернет их в линию, позволяя проверять их перед выполнением. Это особенно полезно для расширения истории из команды, выполняемой некоторое время назад, например, ! echo будет извлекать последнюю команду, начиная с echo . С помощью магического пространства можно предварительно просмотреть команду перед ее выполнением.

Это эквивалент выполнения bindkey '' magic-space в tcsh или zsh .

170
27.01.2020, 19:29

Я считаю, что мне нужно часто повторять команды как суперпользователь, поэтому

sudo !!

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

6
27.01.2020, 19:29

При использовании любого POSIX-оболочки, реализующего опцию User Portability (включая ksh, zsh, bash, yash), вы также можете использовать команду fc:

fc -e : -1

См. пример:

$ echo "hello"
hello

$ fc -e : -1
echo "hello"
hello

Больше информации в Выполните ряд команд из истории ответа Джонатана Леффлера.

9
27.01.2020, 19:29

С помощью csh или любой оболочки, реализующей csh-подобную подстановку истории (tcsh, bash, zsh), вы также можете использовать ! <начало команды> для вызова последней команды, начинающейся с <начало команды>.

например, если вы запустили

$ tail file.txt
$ less otherfile.txt
$ !ta

!ta выполнит tail file.txt

2
27.01.2020, 19:29

Конечно! Так как вы привыкли vi keybindings, почему бы не настроить оболочку так, чтобы она отвечала на них? Для bash поместите его в файл ~/.inputrc :

set editing-mode vi

Запущенные экземпляры bash не будут повторно читать файл, поэтому выйдите из системы и вернитесь обратно.

zsh даже обнаружит это для вас: если ни один из ваших сценариев запуска не заставит режим редактирования один путь или другой с помощью bindkey и , если ваша переменная среды $ EDITOR не будет содержать vi , то она автоматически включит vi keybindings. Если необходимо принудительно ввести это значение в ~/.zshrc :

bindkey -v

После этого используйте ESC , как обычно, для ввода командной строки и k и j для перемещения вверх и вниз.

ТАКЖЕ : Привязки оболочки по умолчанию в большинстве оболочек являются привязками emacs, поэтому фактически Crtl-P и Ctrl-N должны работать без необходимости ничего менять.

16
27.01.2020, 19:29

Мой любимый - CTRL + P, затем CTRL + O

Это работает по умолчанию, дополнительная конфигурация не требуется. ^P позволяет переключиться на последнюю команду, а ^O позволяет выполнить текущую строку

Обратите внимание, что CTRL + O можно использовать столько раз, сколько захотите

.
30
27.01.2020, 19:29

Для всех пользователей Mac iterm2:

Вы можете привязать + R к 0x0C 0x10 0x0d . Это очистит терминал и запустит последнюю команду.

iterm 2 key preferences

6
27.01.2020, 19:29

Большинство оболочек, которые имеют возможность редактирования из командной строки. поддерживать крепления для ключей Emacs. (крошечное подмножество)

Up     Ctrl+P
Down   Ctrl+N
Left   Ctrl+B
Right  Ctrl+F
Home   Ctrl+A
End    Ctrl+E
Delete Ctrl+D

В качестве альтернативы, вы можете настроить вашу оболочку на использование режима редактирования команд vi, добавив set -o vi в ваш стартовый файл оболочки (например, ~/.bashrc).  Тогда, например, вы можете

  • использовать EsckEnter. для повторного выполнения предыдущей команды (как и !!! ).  Клавиша минус - также работает как команда "двигаться вверх".
  • Use EsckkkkkkkkkkkkEnter or Esc12kEnter для повторного выполнения 12-й предыдущей команды (как и !-12).
  • Используйте Esc и команду движения. (т.е. k, уместно повторить), а затем отредактируйте найденную там командную строку bash.  Помните, что Вы все еще будете в режиме команд vi, поэтому вам нужно будет использовать команду редактирования vi. (например, I, A, C, R, или один из их низкопробных аналогов) чтобы добавить к команде из истории.
    Так, например, EsckisudoSpaceEnter эквивалентен sudo !!! .
  • Для опытных пользователей: вы даже можете скопировать (yank) текст из одной строки. и вставьте (put) на другой, чтобы можно было достичь результатов, сравнимых с !-2:- !$.  (К сожалению, похоже, что он не поддерживает именованные буферы.)
52
27.01.2020, 19:29

Когда я использую хороший эмулятор xterm, например putty, мой любимый способ продолжить - выбрать команду, включая перевод строки, скопировать ее в буфер обмена, а затем щелкнуть правой кнопкой мыши, чтобы вставить ее. Это повторяет команду одним щелчком мыши. Это также отлично работает для последовательности команд, разделенных точкой с запятой.

0
27.01.2020, 19:29

puede usar !npara ejecutar el comando n en la terminal. donde 'n' es el número de línea del comando history.

0
27.01.2020, 19:29

tl;dr !!просто добавляет последнюю команду к вашей текущей команде. <backtick>!!<backtick>выполняет последнюю команду и добавляет вывод к вашей текущей команде.

На самом деле есть 2 варианта:

  1. Сама последняя команда
  2. Результат последней команды

Позвольте мне показать вам 2 примера:

Пример 1

$ mkdir /test
mkdir: /test: Permission denied

$ sudo !!
sudo mkdir /test
Password:

Как вы видите выше, я выполняю команду и, по сути, просто добавляю последнюю команду.

Другой вариант

Пример 2

$ find ~/Documents "test.txt"
/Users/<user>/Documents/test.txt

$ vi `!!`
# Opens test.txt. But if you do
$ vi !!
vi find ~/Documents -name "test.txt"
VIM - Vi IMproved 8.1 (2018 May 18, compiled Oct 29 2018 06:55:58)
Unknown option argument: "-name"
More info with: "vim -h"
1
27.01.2020, 19:29
  • Введите История и запишите номер перед командой, которую вы хотите выполнить и использовать!number

  • Вы также можете использовать! -1(1 — это последняя команда, которую вы выполняете, замените это с номером счета, который вы получаете, когда делаете это снизу сохранение последнего выполненного как 1)

  • ! -2(предпоследний и так далее)
0
27.01.2020, 19:29

Есть несколько слоев, в которых вы можете запросить последнюю команду.

Редактор строки

Строковый редактор (, в котором вы вводите свои команды ), предоставляется непосредственно ksh, библиотекой readline в bash и библиотекой zle в zsh. Другие оболочки, такие как dash, могут не иметь библиотеки редактирования для понимания этих клавиш (, если они не скомпилированы с включенной опцией --with-libedit).

Эта работа в ksh, bash, zsh:

Ctrl-P#Режим Emacs (предыдущий)
Ctrl-N#Режим Emacs (далее)
ESC-k#режим vi ESC для перехода в командный режим и k для перехода вверх
ESC-j#режим vi ESC для перехода в командный режим и j для перехода вниз

история

Система истории, предоставляемая многими оболочками, позволяет расширять некоторые ярлыки:

!!    # bash and zsh, may be provided by `alias \!\!='fc -e -'` in ksh.
!-1   # bash and zsh only

команды

Есть некоторые команды, которые могут извлекать команды из истории.

Подобно довольно подробной команде (, только для печати):

history 2 | head -n-1

или старая и поэтому обычно более переносимая fcкоманда (непосредственно повторно -выполняется):

fc -e - -1

Или проще fc -s -1, но zsh не принимает такой вариант для fc.

Если вы хотите только напечатать команду, используйте:fc -nl -1 -1.

Для редактирования установите FCEDITтекстовый редактор (ex, ed, emacs, vi и т. д. )и используйте fc напрямую:fc -1.

1
27.01.2020, 19:29

На клавиатуре счастливого хакера есть клавиши со стрелками, но не специальные клавиши со стрелками. Их можно использовать с:

  • Fn и [ для Вверх
  • Fn и ; для Слева
  • Fn и ' для Справа и
  • Fn и / для Вниз .

На это указывают напечатанные спереди -надписи на соответствующих клавишах, как показано в этом блоге .

1
27.10.2021, 18:00

Теги

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