Как запустить команду в zsh, не нажимая ее на историю текущего сеанса? [Дубликат]

    

У этого вопроса уже есть ответ:

    

Оба bash и zsh поддерживают стенографию не размещения команды в истории, если вы добавили ее в пробел. Это отлично работает в сеансах (если у вас есть setopt histignorespace). Однако команда все еще находится в истории текущего сеанса.

Как я могу избежать размещения команды в истории текущей сессии (или удалить, если после ее выполнения)?

28 голосов | спросил Nevir 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 16 Sep 2012 03:07:37 +0400 2012, 03:07:37

2 ответа


38

С помощью setopt histignorespace команда удалена из текущей истории сеансов. Если вы протестировали, нажав Вверх и увидев, что в командной строке все еще есть, это функция.

  

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

Если вы набрали команду, которая не начиналась с пробела или не была включена опция histignorespace, тогда нет способа удалить команду из истории текущего сеанса (вы можете редактировать файл истории извне) .

ответил Gilles 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 16 Sep 2012 03:52:20 +0400 2012, 03:52:20
2

Если вы использовали bash вместо zsh, вы можете использовать эти методы для удаления команды из истории:

Нажмите стрелку вверх, чтобы перейти к строке, затем нажмите Ctrl-U, чтобы удалить ее. Не нажимайте ENTER, вместо этого нажмите стрелку вверх или вниз, чтобы перейти к другой строке истории.

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

например, вместо нажатия ^ U, чтобы очистить линию, вместо этого замените что-то. НЕ ХИТ ВВОД , так как это создаст новую запись истории. Нажимайте вверх или вниз стрелку. Строка теперь постоянно изменяется в истории, как вы можете видеть, используя стрелку вверх /вниз, чтобы вернуть ее в поле зрения.

Постояв, я имею в виду, что после нажатия клавиш со стрелками вверх /вниз строка будет изменяться, даже если вы нажмете enter на новую /отредактированную команду. Только отредактированная строка останется в истории, заменяя оригинал, и будет сохранена в вашем $ HISTFILE, как обычно, при выходе из этой оболочки.

Вы можете нажать ^ C, чтобы прервать редактирование или стирание U, чтобы остановить его влияние на историю.

Другим методом является использование history -d, если вы знаете номер строки истории. Например:

$ history | История grep | хвост
[... неуместно, удалено ...]
10113 История помощи
10114 история | История grep | хвост

$ history -d 10113

$ history | История grep | хвост
[... неуместно, удалено ...]
10113 история -d 10113
10114 история | История grep | хвост

Строка help history была удалена с помощью history -d 10114

ответил cas 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 16 Sep 2012 14:45:21 +0400 2012, 14:45:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132