Гид по технологиям

Быстро заменить первое слово в bash-команде

4 min read Командная строка Обновлено 23 Nov 2025
Быстро заменить первое слово в bash
Быстро заменить первое слово в bash

Ввод команды в терминале — иллюстрация

Быстрые ссылки

  • Вопрос

  • Ответ

Если в рабочем процессе много однообразных действий, полезно упростить последовательности команд. Ниже — перевод и адаптация обсуждения из SuperUser (часть Stack Exchange) о том, как быстро заменить первое слово в команде bash.

Вопрос

Читатель SuperUser coin спросил, как быстро заменить первое слово в команде bash. Он знал способ: нажать Ctrl+a (переместиться в начало строки), затем Del, но хотел найти более быстрый приём, особенно когда нужно повторно выполнить ту же последовательность аргументов с другим исполняемым файлом (например, заменить git на bash или наоборот).

Ответ

Ниже — выжимка ответов, упрощённая и структурированная.

История расширения (history expansion)

  • !* — разворачивается в все слова предыдущей команды, кроме нулевого (т.е. без самого имени команды). Это идеально подходит, если нужно взять все аргументы предыдущей команды и подставить их после нового имени команды.

    Пример:

    git commit -m "Initial commit"
    hg !*
    # Разворачивается в: hg commit -m "Initial commit"
  • !$ — разворачивает только последнее слово предыдущей команды. Подходит, когда нужно повторить только последний аргумент.

    Пример:

    echo /some/long/path
    ls !$
    # Разворачивается в: ls /some/long/path

Важно: см. раздел “Когда это может не сработать” ниже.

Быстрое редактирование строки с помощью readline

  • Ctrl+a — перейти в начало строки.
  • Alt+d (или Meta+d) — удалить следующее слово (в терминалах Linux Meta обычно сопоставлен с Alt). Если на вашей платформе Alt не работает как Meta, можно нажать Esc перед d.

Последовательность:

  1. Нажмите Ctrl+a.
  2. Нажмите Alt+d.

Это удалит первое слово в текущей строке, оставив аргументы, которые можно дополнить другим именем команды.

Предупреждение по безопасности и надёжности

Важно: история расширения может подставлять неожиданные фрагменты, если предыдущие команды содержали спецсимволы, кавычки или если вы ввели команду с пробелом в начале (в зависимости от настроек истории). Поэтому перед выполнением команд с расширением истории полезно проверить, что именно будет подставлено:

echo !*
# или
printf '%q ' !*

Если результат ожидаем — нажмите Enter с вашей новой командой.

Когда это может не сработать (контрпримеры)

  • Если аргументы содержат пробелы и кавычки, история может интерпретировать их иначе.
  • Если предыдущая команда была выполнена в другом контексте (например, с ведущим пробелом и с опцией shell, исключающей сохранение в историю), расширение может ссылаться на другое место в истории.
  • Расширение истории не проходит через повторную проверку синтаксиса в некоторых случаях: лучше предварительно вывести результат echo !*.

Альтернативные подходы

  • Использовать readline-редактирование (Ctrl+a, Alt+d или Esc+d) — безопасно и не зависит от истории.
  • Создать небольшую функцию-обёртку в ~/.bashrc, если вы часто повторяете определённую трансформацию:
# пример: заменить git на hg и выполнить с теми же аргументами
gg() {
  hg "$@"
}
  • Использовать fc или экспортировать/редактировать команду из истории для сложных исправлений.

Шпаргалка: сочетания клавиш и расширения

ДействиеКоманда/сочетание
Повторить все аргументы предыдущей команды (без имени)!*
Повторить только последнее слово предыдущей команды!$
Перейти в начало строкиCtrl+a
Удалить следующее словоAlt+d или Esc затем d
Предпросмотр подстановки историиecho !*

Ролевые чек-листы

  • Разработчик:

    • Используйте !*, чтобы быстро переключать исполняемые файлы для тех же аргументов.
    • Всегда проверяйте подстановку через echo при работе с кавычками.
  • Системный администратор:

    • Предпочитайте клавиатурные приёмы (Ctrl+a, Alt+d) при работе с привилегированными командами.
    • Не полагайтесь на историю для команд, содержащих пароли или секреты.
  • Новичок в bash:

    • Попрактикуйтесь с echo !* — это безопасный способ увидеть подстановку.
    • Запомните: Alt на Linux часто выполняет роль Meta; если не работает, пробуйте Esc.

Мини-методология: как быстро и безопасно заменить первое слово

  1. Оцените: требуется ли повторить все аргументы предыдущей команды или только последнее слово.
  2. Для всех аргументов используйте newcmd !*.
  3. Для одного аргумента используйте newcmd !$.
  4. При сомнении предварительно выполните echo !*.
  5. Если не хотите рисковать с историей — выполните Ctrl+a, Alt+d, введите новое имя команды.

Краткое содержание

  • !* — лучший способ подставить все аргументы предыдущей команды, кроме команды.
  • Alt+d (или Esc+d) удалит первое слово в строке.
  • Всегда полезно предварительно выводить подстановку через echo и быть осторожным с кавычками и спецсимволами в истории.

Если хотите — добавьте свои примеры и замечания в комментариях к обсуждению на SuperUser. Хотите посмотреть полный тред — найдёте его на странице SuperUser.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправить ошибку «Oops! Something went wrong» в YouTube
Техподдержка

Исправить ошибку «Oops! Something went wrong» в YouTube

Экран входа macOS — настройки и советы
macOS

Экран входа macOS — настройки и советы

Удалить историю Google Bard и отключить её
Конфиденциальность

Удалить историю Google Bard и отключить её

TinyLetter для блогеров: быстро и просто
Email-маркетинг

TinyLetter для блогеров: быстро и просто

Как включить и отключить блокировщик всплывающих окон IE11
браузер

Как включить и отключить блокировщик всплывающих окон IE11

Применение патчей при перемещённых файлах в Git
GIT

Применение патчей при перемещённых файлах в Git