Вопрос или проблема
Можно ли выполнить команду истории по номеру с помощью !###
, аналогично bash/zsh? Оболочка ash в Alpine не интерпретирует это:
$ history
1441 date
1442 history
$ !1141
-sh: !1141: не найдено
Ответ или решение
Вопрос о том, возможно ли выполнить команду из истории по номеру в Alpine Linux с использованием оболочки ash (BusyBox), поднимает важные аспекты работы с командной строкой. К сожалению, знаки восклицания, позволяющие обращаться к историческим командам (например, !###
), не поддерживаются в ash, в отличие от bash или zsh.
Что такое ash (BusyBox)?
Ash — это облегченная шелл-оболочка, являющаяся частью пакета BusyBox, широко используемого в системах на основе Linux, включая Alpine Linux. Она предназначена для экономии системных ресурсов, что делает ее идеальным выбором для встраиваемых систем и минималистичных сред.
Как работает история команд в ash?
В ash история команд реализована несколько иначе, чем в bash или zsh. Вы можете использовать следующие команды для работы с историей в ash:
- Просмотр истории: Для отображения ранее введенных команд используется команда
history
, но она может не сохраняться между сессиями по умолчанию. - Повторная команда: Для повторного выполнения последней команды можно использовать
!!
.
Как выполнить команду по номеру в ash?
К сожалению, вы не сможете выполнить команду прямо по номеру в ash, как это возможно в других оболочках. Однако есть альтернативные методы:
-
Использование
history
с прослушиванием текстового файла: Если вы хотите иметь возможность обращаться к командам из истории, вам нужно сохранить историю команд. Это можно сделать, перенаправив вывод командыhistory
в файл:history > ~/.ash_history
Затем вы можете просмотреть этот файл и выполнить нужные команды, просто скопировав и вставив их в командной строке.
-
Создание скрипта: Если вы часто используете определенные команды, рассмотрите возможность создания простого скрипта. Например:
#!/bin/sh # script.sh date
После создания файла скрипта вы можете его запускать, что упростит выполнение часто используемых команд.
-
Переключение на более мощную оболочку: Если требуется более утилитарный подход к управлению историей команд, вы можете рассмотреть возможность установки и использования bash или zsh в качестве вашей оболочки. Это позволит вам воспользоваться всеми преимуществами управления историей команд.
Заключение
Хотя !###
не поддерживается в ash, существуют способы видоизменить вашу работу с историями команд. Сохранение истории в файле и использование скриптов могут помочь поддерживать эффективность вашего рабочего процесса. Если же вы требуете более функциональных возможностей, подумайте о переходе на более мощные оболочки, такие как bash или zsh.