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

Если вы используете какой-либо брандмауэр, единственный способ разрешить подключения - открыть этот порт. Если ваше приложение позволяет это, вы можете изменить порт, который он использует. Там действительно нет проблем с открытым портом, технически. Поскольку это порт по умолчанию для службы, злоумышленник может проводить массовые проверки хостов, чтобы проверить, открыт ли этот порт, но это только проблема, если известна уязвимость в самой службе. В любом случае, если вы используете порт по умолчанию или пользовательский, вам придется открыть этот порт в вашем брандмауэре (UFW).

0
задан 31 March 2018 в 09:45

2 ответа

То, что вы описали теперь, является поведением по умолчанию в Bash и большинством, если не всех, других оболочек. Я полагаюсь на это поведение ежедневно, с Bash и другими оболочками, на нескольких машинах, работающих под управлением Ubuntu и других ОС. Мне никогда не приходилось делать какие-либо изменения в конфигурации, чтобы добиться этого. Я могу заверить вас, что поведение Bash по умолчанию заключается в том, чтобы не пропускать записи в истории только потому, что они не удались.

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

В комментарии вы пояснили:

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

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

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

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

Точно так же команда может not , т. е. нормально завершать и возвращать код выхода 0, но все же фактически не выполняет то, что вы имели в виду для этого.

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

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

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

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

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

3
ответ дан 17 July 2018 в 17:45

То, что вы описали теперь, является поведением по умолчанию в Bash и большинством, если не всех, других оболочек. Я полагаюсь на это поведение ежедневно, с Bash и другими оболочками, на нескольких машинах, работающих под управлением Ubuntu и других ОС. Мне никогда не приходилось делать какие-либо изменения в конфигурации, чтобы добиться этого. Я могу заверить вас, что поведение Bash по умолчанию заключается в том, чтобы не пропускать записи в истории только потому, что они не удались.

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

В комментарии вы пояснили:

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

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

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

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

Точно так же команда может not , т. е. нормально завершать и возвращать код выхода 0, но все же фактически не выполняет то, что вы имели в виду для этого.

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

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

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

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

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

3
ответ дан 23 July 2018 в 18:37
  • 1
    « Я полагаю, что возможно, что вы были ранее затронуты странной ошибкой ... & quot; или просто ложная память, происходит все время! – pomsky 1 April 2018 в 16:10

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

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