Флаг удаления в командной истории centos как использовать

Вопрос или проблема

Когда я пытаюсь удалить определенную команду из истории на
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 [-hTr] [n]
history -S
|-L|-M [filename] (+)
history -c (+)

Первая форма печатает список событий истории.

Если указан n, печатаются или сохраняются только n самых последних событий.

С опцией -h список истории печатается без начальных номеров.

Если указана опция -T, также печатаются временные метки в виде комментариев. (Это можно использовать для создания файлов, подходящих для загрузки с ‘history -L’ или ‘source -h’.)

С опцией -r порядок печати идёт от самого последнего к самому раннему.


С опцией -S вторая форма сохраняет список истории в filename. Если первое слово переменной оболочки savehist установлено в определенное число, сохраняется не более этого количества линий. Если второе слово savehist установлено в ‘merge’, список истории объединяется с существующим файлом истории вместо
замены его (если он существует) и сортируется по временной метке.
(+) Объединение предназначено для окружений, таких как 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 оболочке отсутствует.

Альтернативные действия

  1. Переключение на bash: Если вам критично работать именно с удалением записей из истории, имеет смысл переключиться на bash, где такой функционал поддерживается. Это можно сделать с помощью команды:

    chsh -s /bin/bash
  2. Очистка истории: Полностью очистить историю можно через:

    history -c
  3. Редактирование файла истории: История команд сохраняется в файле (обычно ~/.history для csh). Можно отредактировать этот файл с помощью текстового редактора, удалив нежелательные команды.

SEO Оптимизация и Заключение

Важно учитывать особенности различных оболочек при выполнении таких операций, как управление историей команд. Используйте chsh, чтобы сменить оболочку на более предпочтительную для выполнения специфических задач. Это не только решит текущую проблему, но и предотвратит появление аналогичных в будущем. Настоятельно рекомендуется ознакомиться с документацией используемой оболочки, чтобы максимально эффективно пользоваться доступными инструментами.

Если данная информация оказалась для вас полезной, не забудьте сохранить её на будущее или поделиться с коллегами. Это поможет вам и вашему окружению более эффективно решать задачи администрирования и работы в различных средах Linux.

Оцените материал
Добавить комментарий

Капча загружается...