Поиск по сайту:

Используйте команду hash в Linux


Команда hash в Linux позволяет быстро получить список команд, которые вы выполнили в текущем сеансе.

Большинство пользователей Linux используют команду истории, чтобы получить список ранее использованных команд, но это не единственный способ.

Вы можете использовать команду hash, которая работает намного быстрее, чем команда истории, и показывает полный путь к команде (где команда хранится).

Итак, в этом уроке я расскажу вам, как использовать команду hash.

Но перед этим давайте посмотрим, насколько она отличается от команды истории.

Разница между историей и хешем

Вся цель использования команд hash и History другая.

Когда вы выполняете команду хеширования, она отображает список ранее выполненных команд, но ограничена текущим сеансом оболочки, поскольку данные сохраняются в хеш-таблице.

С другой стороны, у вас нет такого ограничения на команду истории, поскольку она сохраняет ранее выполненные команды в файле bash_history.

Основное преимущество использования команды hash заключается в том, что она извлекает данные из хеш-таблицы, что в конечном итоге сокращает время ответа по сравнению с командой истории.

Большим недостатком использования команды hash является то, что она не включает встроенные команды bash, такие как echo, cd и т. д., поэтому вы не получите полный список предыдущих команд.

Тогда как команда истории будет включать в себя все команды, функции и исполняемые файлы в списке.

Что вызывает вопрос. Стоит ли вам его использовать? Что ж, если вы имеете дело с несколькими сеансами оболочки и хотите обрабатывать их независимо, и время ответа также имеет большое значение, то команда hash — отличный вариант для вас.

Как использовать команду хэша

Чтобы научиться использовать любую команду, сначала рекомендуется изучить синтаксис команды, и именно поэтому я начинаю с синтаксиса хеша:

hash [options] [command]

Здесь,

  • [options] используется для изменения поведения команды хэша по умолчанию по вашему вкусу, например, очистки хеш-таблицы.

  • [command] — здесь вы вводите имя команды, которую вы хотите хешировать или нехешировать. Проще говоря, имя команды, которую вы хотите добавить/удалить из хеш-таблицы.

Теперь давайте рассмотрим примеры использования команды hash один за другим.

1. Доступ к списку хешей

Чтобы получить доступ к списку хешей, все, что вам нужно сделать, это выполнить команду hash без каких-либо параметров, как показано здесь:

hash

Если вы использовали несколько команд в текущей оболочке, будет показан список предыдущих команд:

Вы увидите 2 столбца: попадания и команда. Здесь в столбце «Хиты» будет показано количество использований команды, а в столбце «Команды» указан путь к команде.

Но если вы выполните команду hash в новом сеансе оболочки, она отобразит следующую команду:

Вы также можете проверить команду индивидуально, хеширована она или нет, используя команду типа:

type <command>

Например, здесь я проверил команду whoami, хеширована она или нет:

type whoami

Если команда не хеширована, она покажет другой вывод:

2. Добавить команды в хеш-таблицу (без выполнения)

Чтобы добавить одну или несколько команд в хеш-таблицу, все, что вам нужно сделать, это добавить имена команд к хеш-команде, как показано:

hash command1 command2 command3 commandN

Например, здесь я добавил в хэш-список 3 команды:

hash neofetch apt topgrade

Я уверен, вам должно быть интересно, почему нули на изображении выше выделены. Если вы помните, столбец «Хиты» показывает, сколько раз была выполнена команда.

Но поскольку я добавил команды, не выполняя их, здесь отображается 0.

3. Удалить записи из хеш-таблицы.

Если вы хотите удалить запись команды из хеш-таблицы, все, что вам нужно сделать, это использовать флаг -d, за которым следует одно или несколько имен команд, как показано:

hash -d command_1 command_2 command_3

Если я хочу удалить команды xargs и grep из хеш-таблицы, я буду использовать следующее:

hash -d xargs grep

4. Сбросить хеш-таблицу

Чтобы сбросить хэш-таблицу, все, что вам нужно сделать, это использовать флаг -r с командой hash:

hash -r

5. Настройка пути для переименования команд (типа)

🚧
Это будет эффективно только для текущего сеанса оболочки.

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

Используя команду hash, вы можете указать путь к команде и использовать другое имя для запуска команды.

Позволь мне привести пример.

Вы используете команду date, чтобы узнать текущую дату, но если вы выполните d вместо date, это выдаст ошибку:

Поэтому я хочу, чтобы команда даты выполнялась с помощью d.

Во-первых, вам необходимо знать путь к команде, которую вы хотите переименовать или создать замену:

type <command_name>

Как только вы узнаете путь, используйте его с командой hash, как показано:

hash -p /path/to/command <renamed-command>

Поскольку я хотел выполнить команду даты при выполнении d, я использовал следующее:

hash -p /usr/bin/date d

Вот и все!

Мой взгляд на историю и хеш

Лично я использую команду истории, поскольку могу поставить под угрозу небольшую скорость (что даже незаметно), а также она может хранить встроенные команды, а также выполнение сценариев.

Команда истории также настраивается, поскольку вы можете решить, сколько команд вы можете сохранить, а также можете легко выполнять ранее использованные команды.

Дайте мне знать, что вы думаете об этом.

Если у вас все еще есть какие-либо вопросы, не стесняйтесь оставлять комментарии.

Статьи по данной тематике: