
Резюме
- Современные оболочки поддерживают редактирование командной строки для эффективного вызова и исправления команд.
- Редактирование с помощью командной строки более эффективно, чем использование механизма истории оболочки.
- Такие оболочки, как KornShell, Bash, Zsh и Fish, предлагают редактирование в командной строке; рекомендуется редактирование в стиле Emacs.
Вы когда-нибудь использовали терминал Linux и хотели бы иметь возможность вернуться к предыдущим командам, не перепечатывая все заново? Современные оболочки позволяют вам сделать именно это с помощью редактирования командной строки.
Что такое редактирование в командной строке?
Редактирование командной строки — это способ вызова и исправления команд с помощью команд редактирования текста в оболочке. Это похоже на использование команд в текстовом редакторе. Поскольку текстовые редакторы обычно используются в терминале вместе с оболочкой, многие современные оболочки предоставляют сочетания клавиш, похожие на сочетания основных текстовых редакторов, как Emacs, так и Vi. Они будут рассмотрены далее в этой статье.
Вы можете перемещаться по командной строке или вызывать предыдущие записи так же, как перемещаетесь по текстовому файлу в редакторе.
Зачем использовать редактирование в командной строке?

Основная причина использования редактирования командной строки заключается в том, что это намного эффективнее, чем использование механизма истории оболочки. Хотя команды истории оболочки, представленные в оболочке BSD C, приветствовались, когда они были разработаны в 1980-х годах, как и многие конструкции оболочки, их может быть трудно запомнить.
Когда был создан Unix, история оболочки была свитком бумаги, потому что оригинальные терминалы были телепринтерами, также известными под торговой маркой Teletype. Механизм истории оболочки, изобретенный для оболочки BSD C, был также разработан для этих терминалов, поскольку они все еще были распространены в середине-конце 1970-х годов. Более поздние видеотерминалы позволили редактировать и стирать символы, и у некоторых программистов возникла блестящая идея, что вы должны иметь возможность просматривать историю команд и редактировать ее по своему желанию.

Команды истории оболочки символичны и неинтуитивны. Механизмы редактирования командной строки зависят от сочетаний клавиш, которые вы, возможно, уже знаете, например, Emacs или Vi/Vim.
Кроме того, благодаря возможностям редактирования командной строки вы можете с большей легкостью перемещаться по командной строке, чем обычно.
Если вы видите, что ранее в командной строке вы допустили ошибку, вы можете перейти к началу, чтобы исправить ее. Если вы пытаетесь вспомнить команду, которую вы запускали, вы можете выполнить поиск, чтобы найти ее. Вы можете перейти к предыдущей записи, а затем изменить ее.
Если вы хотите изменить команду, вы можете просто перейти вверх и изменить команды или имена файлов, которые вы хотите использовать, а затем выполнить команду.
Представьте себе использование редактирования командной строки как перемещение по истории команд оболочки, как если бы это был текстовый файл.
Какие оболочки поддерживают редактирование в командной строке?
Многие из современных оболочек, доступных в системах Linux, поддерживают редактирование командной строки. Оболочкой, которая популяризировала эту концепцию, была KornShell, изначально написанная в 1980-х годах в Bell Labs. Эта оболочка, названная в честь ее создателя Дэвида Корна, предлагала пользователям возможность запускать команды, похожие на те, что использовались в редакторах Emacs и Vi. Этот шаблон широко используется сегодня в других оболочках.
Bash также изначально предлагал редактирование командной строки, как и Zsh. С Bash, наиболее распространенной оболочкой по умолчанию в дистрибутивах Linux, большинство дистрибутивов Linux предлагают ее из коробки. Другие оболочки, такие как fish, также предлагают ее. tcsh, вдохновленная оболочкой C, также предлагает функции Vi и Emacs. Это означает, что изучение методов редактирования командной строки окупится независимо от того, какую оболочку вы используете.
Выбор используемого режима редактора обычно задается в переменной среды или команде конфигурации оболочки.
Редактирование стиля Emacs
Самый простой способ начать редактирование в командной строке — использовать режим Emacs, даже если вы используете другой редактор. Это также стиль по умолчанию в большинстве оболочек. Причина в том, что это кажется более естественным режимом, поскольку Emacs не различает режимы команд и вставки, как это делают Vi и Vim. Хотя моим любимым редактором является Vim, я просто думаю, что его набор команд лучше подходит для редактирования в этой программе, и он не так хорошо работает в оболочке. Я продемонстрирую редактирование в командной строке в Zsh, которая является моей любимой оболочкой, но они также должны работать в других оболочках, таких как Bash.
Чтобы настроить редактирование в стиле Emacs, вам нужно будет использовать одну из двух команд, в зависимости от вашей оболочки.
В Bash введите:
набор -o emacs
Или в Зш:
ключ привязки -e
В большинстве современных оболочек редактирование в стиле Emacs в любом случае является режимом по умолчанию.
Первые команды, которые вам следует освоить, — это перемещение вперед и назад по истории оболочки. Вы можете использовать клавиши со стрелками вверх и вниз. Вы также можете использовать Ctrl+p и Ctrl+n для перемещения вперед и назад по истории. Вы можете запомнить их мнемонически, поскольку «p» означает «предыдущий», а «n» означает «следующий».
Используйте строчные буквы, поскольку заглавные символы имеют значение в оболочке и везде в Linux.
Вы также можете использовать клавиши со стрелками для перемещения вперед и назад в командной строке. Ctrl+f и Ctrl+b перемещают вперед и назад. Опять же, вы можете запомнить их с помощью мнемоник «вперед» для «f» и «назад» для «b». Лучше попробовать их несколько раз, чтобы развить мышечную память, особенно для вещей, которые вы делаете часто. Использование клавиш со стрелками или комбинаций Ctrl+буква — дело вкуса и удобства.

Вы можете перемещаться вперед и назад по своей истории, но что полезно, так это возможность поиска. Чтобы выполнить поиск назад по своей истории, нажмите Ctrl+r. Затем вы можете начать вводить то, что вы хотите найти, и результаты появятся в реальном времени, содержащие строку поиска. Строка поиска будет выделена. Нажмите Ctrl+r, чтобы повторить обратный поиск. Прямой поиск — Ctrl+f, и он работает так же. Когда вы дойдете до предыдущей команды, вы можете нажать Enter, чтобы выполнить ее снова, или вы можете отредактировать ее. Вы можете сделать это, если хотите использовать другую команду или имя файла.

Вы можете удалить предыдущие символы с помощью клавиши backspace, но вы также можете удалить следующий, нажав Ctrl+d. Чтобы удалить слово, нажмите Meta+d. Чтобы удалить целую строку, нажмите Ctrl+k.
Один из приемов, который я часто использую, — это переход в начало и конец строки. Чтобы перейти в начало строки, нажмите Ctrl+a. Чтобы перейти в конец, нажмите Ctrl+e. Эти команды удобны, когда я понимаю, что хочу что-то изменить в строке, над которой работаю, но курсор находится ближе к одному из концов строки.
Вы также можете перемещаться по границам слов, а не только отдельными перемещениями курсора. Вы можете использовать клавишу Meta, которая является либо клавишей Alt, либо клавишей Escape. Клавиша Meta изменяет предыдущие команды. Например, чтобы перейти вперед на одно слово, нажмите Meta+f, а чтобы вернуться назад, нажмите Meta+b.
Редактирование стиля VI
Вы можете использовать сочетания клавиш в стиле Vi в оболочках, которые поддерживают редактирование командной строки, но даже несмотря на то, что я пользователь Vim, я бы посоветовал рассмотреть команды Emacs. Основная причина в том, что, в отличие от Vim, нет визуального индикатора, показывающего, находитесь ли вы в режиме вставки или команды. Я считаю, что команды в стиле Vi не работают так же хорошо в оболочке. Emacs, похоже, лучше подходит для редактирования командной строки, и использование команд в стиле Emacs по умолчанию кажется оправданным.

Тем не менее, если вы хотите использовать команды в стиле Vi, вы можете настроить их одним из двух способов:
набор -о ви
ключ привязки -v
В режиме Vi вы начнете в «режиме вставки», где вы вводите команды оболочки. Чтобы выйти в командный режим, в котором вы перемещаетесь, нажмите Escape. Чтобы вернуться назад, нажмите h. Чтобы двигаться вперед, нажмите l. Чтобы перейти вверх по предыдущим записям истории, нажмите h. Чтобы перейти вниз, нажмите j.

В режиме ввода можно перемещаться по словам вперед с помощью клавиши w и назад с помощью клавиши e.
Вы можете осуществлять поиск назад с помощью клавиши ? в командном режиме и прямой поиск с помощью клавиши /, аналогично командам прямого и обратного поиска.

Чтобы удалить текст в командном режиме, поместите на него курсор и нажмите клавишу d. Чтобы удалить слово, нажмите dw. Чтобы удалить целую строку, используйте «dd», дважды нажав клавишу d.
Эти команды — лишь некоторые из доступных для редактирования командной строки в современных оболочках Linux. При достаточной практике и тренировке пальцев вы сможете пробежаться по истории команд и повторно запускать и редактировать команды по своему желанию. Вы значительно ускорите использование терминала Linux.