Терминал сохраняет значения спама в истории

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

например, когда я ввожу следующий спам, он помнит спам в терминальной истории.

нажатая команда:
the pressed command

вывод:
output

при нажатии стрелки вверх:
when pressing  up arrow

0
задан 30 March 2018 в 23:45

1 ответ

Что Вы описали наблюдение, теперь поведение по умолчанию в Bash и большинстве, если не все, другие оболочки. Я ежедневно полагаюсь на это поведение, с Bash и другими оболочками, на нескольких машинах под управлением Ubuntu и другие Ose. Я никогда не должен был делать изменения конфигурации для достижения его. Я могу уверить Вас, что поведение по умолчанию Bash не состоит в том, чтобы опустить записывать команды в истории просто, потому что они перестали работать.

Таким образом, я симпатизирую, если Вы не находите этот ответ очень полезным. Но я попытаюсь описать и объяснить общую ситуацию, а также почему то поведение является значением по умолчанию и почему Вы, вероятно, действительно не хотите - и вероятно ранее не имели - точное поведение, которое Вы, кажется, просите.

В комментарии Вы разъяснились:

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

Трудно знать точно, чем предыдущее поведение состояло в том, что Вы настроили, но если бы Вам так или иначе удалось настроить Bash, чтобы сделать это, затем Вы, вероятно, были бы очень недовольны этим. Это не достигло бы того, что Вы, вероятно, думаете, что это достигло бы. Таким образом, если Вы не были довольно неудовлетворены способом, которым раньше работал Bash, он, скорее всего, не делал вполне, что Вы описали.

В первую очередь, много команд, выполненных намеченным способом, но возвратом с кодом выхода, представляющим отказ под некоторыми ситуациями. Каждый код выхода кроме 0, как полагают, указывает на отказ. Например:

  • find управляйте возвращает код выхода 1, когда тесты, которые Вы даете ему, не находят файлов. find главным образом делает это так, чтобы это было просто в использовании в сценариях, но это делает это, даже когда Вы выполняете его в интерактивном режиме. Если бы команды, которые перестали работать, были подавлены, то Вы загадочно потеряли бы команды, которые, с Вашей точки зрения (и тот из любого другого пользователя в Вашем положении), на самом деле успешно выполнились.
  • ls управляйте возвращает код выхода 2, если какие-либо из имен файлов, Вы передаете его, не существуют даже при передаче одних или нескольких других имен файлов, которые действительно существовали и чью информацию он успешно показал Вам.

Точно так же команда может следовать, т.е. обычно завершать и возвращать код выхода 0, но все еще на самом деле делать то, что Вы имели в виду, чтобы она сделала.

Второй из всех, когда команда перестала работать, который обычно не означает, Вы хотите, чтобы это было более трудно для Вас знать о том, что произошло. Когда вещи идут не так, как надо, большинство людей хочет смочь легко узнать то, что было сделано отказавший. В частности, Rene Saarsoo указал (как процитировано Ravexina), что распространено сделать ошибку во вводе команды, затем нажмите стрелку вверх, таким образом, можно отредактировать и повторить команду. Если к командам, которые перестали работать, нельзя было получить доступ в истории Вашей оболочки, Вы не сможете сделать это.

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

От примеров в Вашем вопросе кажется, что Вы конкретно обеспокоены тем, как новая команда, которую Вы выполнили, всегда хранится в Вашей истории. Но поскольку pomsky сказал, который является поведением по умолчанию. По умолчанию единственная ситуация, где команда не хранится в истории вообще, состоит в том, если она начинается с одних или нескольких пробелов (который является способом препятствовать тому, чтобы отдельные команды были зарегистрированы, при условии, что Вы знаете, когда Вы пишете им первоначально, что Вы не хотите, чтобы они появились).

Я предполагаю, что возможно, что Вы были ранее затронуты странной ошибкой, которая, оказалось, произвела определенное поведение, которое Вы на самом деле хотели. Если можно описать поведение, Вы хотите более подробно, то кто-то смог предоставлять инструкции относительно того, как достигнуть его. Например, возможно, Вы только хотите команды, опущенные от истории, если название команды - то есть, первая команда - не найдено. (В Bash это производит статус выхода 127; программы могут также возвратить это как свой код выхода, но к счастью большинство не делает.)

Но ответ на Ваш вопрос, поскольку Вы спросили это, то, что текущее поведение, которое Вы наблюдаете, является поведением по умолчанию и считается корректным.

3
ответ дан 30 October 2019 в 04:10

Другие вопросы по тегам:

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