Есть ли сочетание клавиш для повторного запуска команды с аргументами из последней команды (не cd, ls или echo)

Есть ли сочетание клавиш для повторного запуска команды с аргументами из последней команды (не cd, ls или echo)

Поиск в переданном файле журнала с помощью чего-то вроде этого:

кот/путь/к/файлу/журнала | grep -iEw 'какой-то-ip-адрес|соответствующий-mac-адрес'

Это дает мне все пройденные строки журнала до сих пор, так что я могу видеть, что было. Теперь я также хочу видеть, что происходит, поэтому мне нужно обменять catс, tail -fчто дает мне это:

хвост -ф/путь/к/файлу/журнала | grep -iEw 'какой-то-ip-адрес|соответствующий-mac-адрес'

решение1

Вы можете использовать его !!:*для ссылки на все слова, кроме нулевого в последней командной строке.

!!относится к предыдущей команде, :отделяет спецификацию события от обозначения слова, *относится ко всем словам, кроме нулевого.

Это из HISTORY EXPANSIONраздела bash(1).

wieland@host in ~» cat foo | grep bar
bar
wieland@host in ~» tail -f !!:*
tail -f foo | grep bar
bar

Вы также можете использовать быструю замену, где ^string1^string2^повторяется последняя команда, заменяя ее string1на string2:

wieland@host in ~» cat foo | grep bar
bar
wieland@host in ~» ^cat^tail -f
tail -f foo | grep bar
bar

решение2

  1. Нажмите Upили Ctrl+ P, чтобы вызвать предыдущую строку. Повторите, если хотите предыдущую строку и т. д.
  2. Нажмите Homeили Ctrl+ A, чтобы перейти к началу строки.
  3. Нажмите Alt+ D, чтобы удалить слово под курсором, т. е. команду, которую вы хотите заменить.
  4. Введите команду, которую вы хотите выполнить сейчас.
  5. Нажмите Enter, чтобы выполнить команду.

Связанный контент