Вопрос или проблема
Когда я пытаюсь удалить определенную команду из истории на
centos Linux 3.10.0-693.21.1.e17.x86_64 #SMP
,
используя
history -d 34
я получаю ошибку с сообщением
Usage: history [-chrSLMT] [# number of events]
.
При использовании команды history
в оболочке tcsh некоторые аргументы недоступны по сравнению с использованием в оболочке bash.
Судя по подсказке об использовании, вы можете запускать команду в csh (C shell). Встроенная команда history
отличается по аргументам в зависимости от оболочки; вот ее спецификация для csh (взятая с страницы man):
history -S|-L|-M [filename] (+)
Если указан n, печатаются или сохраняются только n самых последних событий.
С опцией -h список истории печатается без начальных номеров.
Если указана опция -T, также печатаются временные метки в виде комментариев. (Это можно использовать для создания файлов, подходящих для загрузки с ‘history -L’ или ‘source -h’.)
С опцией -r порядок печати идёт от самого последнего к самому раннему.
замены его (если он существует) и сортируется по временной метке.
(+) Объединение предназначено для окружений, таких как X Window System, с несколькими оболочками, работающими одновременно. В настоящее время оно выполняется успешно только при корректном завершении работы одной оболочки за другой.
С опцией -L оболочка добавляет filename, который, предположительно, является списком истории, сохраненным с помощью опции -S или механизма savehist, в список истории.
-M аналогичен -L, но содержимое filename объединяется в список истории и сортируется по временной метке. В любом случае, используется histfile, если filename не указан, и ~/.history, если histfile не задан. ‘history -L’ аналогичен ‘source -h’, за исключением того, что имя файла не требуется.
Заметим, что оболочки при входе эквивалентны ‘history -L’ в момент запуска и, если savehist установлен, ‘history -S’ перед выходом. Поскольку только
~/.tcshrc обычно подключается перед ~/.history, histfile следует установить в ~/.tcshrc, а не в ~/.login.
Если histlit установлен, первая и вторая формы печатают и сохраняют буквальную (неразвернутую) форму списка истории.
Последняя форма очищает список истории.
.
Ответ или решение
На базе Linux CentOS, когда возникает необходимость удалить определенную команду из истории командной оболочки, может возникнуть неясность, связанная с различиями между оболочками (shells), такими как bash и tcsh.
Если вы используете машине с CentOS Linux и сталкиваетесь с ошибкой при выполнении команды history -d 34
, это может быть связано с тем, что вы работаете в tcsh или csh оболочке, а не в bash.
Давайте разберёмся с этой проблемой более подробно.
Проблема
Вы пытаетесь удалить конкретную запись из истории команд с помощью:
history -d 34
Эта команда корректно работает в bash оболочке и предназначена для удаления заданной записи под номером 34 из истории. Однако, в оболочке tcsh или csh данная команда не поддерживается.
Решение
В csh или tcsh у команды history
совершенно иные параметры и синтаксис. В частности, для csh доступны следующие опции согласно ее справочному руководству:
-h
: вывод истории без номеров-T
: вывод с временной меткой-r
: вывод от самых последних к более ранним
Команда удаления конкретной записи прямо из истории в csh оболочке отсутствует.
Альтернативные действия
-
Переключение на bash: Если вам критично работать именно с удалением записей из истории, имеет смысл переключиться на bash, где такой функционал поддерживается. Это можно сделать с помощью команды:
chsh -s /bin/bash
-
Очистка истории: Полностью очистить историю можно через:
history -c
-
Редактирование файла истории: История команд сохраняется в файле (обычно
~/.history
для csh). Можно отредактировать этот файл с помощью текстового редактора, удалив нежелательные команды.
SEO Оптимизация и Заключение
Важно учитывать особенности различных оболочек при выполнении таких операций, как управление историей команд. Используйте chsh
, чтобы сменить оболочку на более предпочтительную для выполнения специфических задач. Это не только решит текущую проблему, но и предотвратит появление аналогичных в будущем. Настоятельно рекомендуется ознакомиться с документацией используемой оболочки, чтобы максимально эффективно пользоваться доступными инструментами.
Если данная информация оказалась для вас полезной, не забудьте сохранить её на будущее или поделиться с коллегами. Это поможет вам и вашему окружению более эффективно решать задачи администрирования и работы в различных средах Linux.