Большинство пользователей Linux используют команду history для получения списка ранее использованных команд, но это не единственный способ.
Вы можете использовать команду hash, которая работает быстрее, чем команда history, и показывает полный путь команды (где она хранится).
Поэтому в этом руководстве мы расскажем вам, как использовать команду hash.
Но перед этим давайте посмотрим, чем она отличается от команды history.
Разница между историей и хэшем
Цели использования команд hash и history различны.
Когда вы выполняете команду hash, она показывает список ранее выполненных команд, но ограничена текущим сеансом оболочки, поскольку хранит данные в хэш-таблице.
С другой стороны, команда history не имеет таких ограничений, так как она хранит ранее выполненные команды в файле bash_history.
Основным преимуществом использования команды hash является извлечение данных из хэш-таблицы, что в итоге сокращает время отклика по сравнению с командой history.
Большим недостатком использования команды hash является то, что она не включает встроенные команды bash, такие как echo, cd и т. д., поэтому вы не получите полный список предыдущих команд.
В то время как команда history будет включать все команды, функции и исполняемые файлы в списке.
В связи с этим возникает вопрос. Стоит ли использовать эту команду?
Если вы имеете дело с несколькими сеансами оболочки и хотите обрабатывать их независимо друг от друга, а время отклика также имеет большое значение, то команда hash – отличный вариант для вас.
Как использовать команду hash
Чтобы научиться использовать любую команду, неплохо сначала узнать ее синтаксис, и именно поэтому мы начнем c него:
Где,
- [options] используется для изменения поведения команды хеширования по умолчанию, например, для очистки хеш-таблицы.
- [command] – это место, где вы вводите имя команды, которую вы хотите хэшировать или не хэшировать. Проще говоря, имя команды, которую вы хотите добавить/удалить из хэш-таблицы.
Теперь давайте рассмотрим примеры использования команды hash по очереди.
1. Доступ к списку хэшей
Чтобы получить доступ к хэш-списку, достаточно выполнить команду hash без каких-либо опций, как показано здесь:
Если вы использовали несколько команд в текущей оболочке, она покажет список предыдущих команд:
Вы увидите 2 столбца: hits и command. Здесь столбец hits показывает количество раз, когда команда была использована, а столбец command – путь к команде.
Но если вы выполните команду hash в свежем сеансе оболочки, вы увидите:
hash: hash table is empty
Вы также можете проверить команду по отдельности, хэширована она или нет, используя команду type.
Если команда не хэширована, то вывод будет таким:
2. Добавление команд в хэш-таблицу (без выполнения)
Чтобы добавить одну или несколько команд в хэш-таблицу, достаточно добавить имена команд к хэш-команде, как показано далее:
Например, здесь мы добавили 3 команды в хэш-лист:
Наверняка вы задаетесь вопросом, почему нули в столбце hits.
Если вы помните, столбец hits показывает, сколько раз была выполнена команда.
Но поскольку я добавлял команды, не выполняя их, здесь отображается 0.
3. Удаление записей из хэш-таблицы
Если вы хотите удалить запись о команде из хэш-таблицы, достаточно использовать флаг -d, за которым следует одно или несколько имен команд, как показано далее:
Если я захочу удалить команды xargs и grep из хэш-таблицы, то я использую следующее:
4. Сброс хэш-таблицы
Чтобы сбросить хэш-таблицу, достаточно использовать флаг -r в команде hash:
см. также: