Мой терминал не будет ломать линию в первой строке

Ну, я закончил переустановку пакета bcmwl-kernel-source, как сказал мне chili555. Спасибо за его предложение.

[Side NOTE]: bcmwl-kernel-source был впервые установлен, потому что я использовал другой сетевой адаптер, который хорошо работал с ним на частотах 2,4 ГГц и 5 ГГц. Затем, когда я переключился на новый сетевой адаптер, я установил пакет firmware-b43-installer, как того требовала доступная документация. Позже я удалил bcmwl-kernel-source, чтобы избежать опускания соединений.

Причина, по которой установка пакета bcmwl-kernel-source позволит Ubuntu видеть Wi-Fi-интерфейс 5 ГГц.

Проблема в том, что при установке обоих пакетов bcmwl-kernel-source и firmware-b43-installer соединение Wi-Fi удаляется случайным образом (несколько раз в час в разы). Возможно, существует некоторая параллельная активность, состояние гонки между 2?

Следует отметить, что из этого справочного ответа требуется только firmware-b43-installer. так как идентификатор PCI:

$ lspci -nn -d 14e4:
05:00.0 Network controller [0280]: Broadcom Limited BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
$ 

Затем в WIRELESS TABLE BROADCOM (Обновлено 18 августа 2017 г.) я нашел эту запись:

14e4:4331           firmware-b43-installer            firmware-b43-installer

Предоставление пакета для установки в Xenial 16.04 LTS и 17.10+.

При удалении bcmwl-kernel-source произойдет остановка соединения, однако из моего опыта, если есть проблема с соединением, подобным DNS-серверу, вы можете потерять 5 ГГц, как показано в самом вопросе.

Жаль, что мы не получаем полностью работоспособного драйвера от Broadcom. Этот сетевой адаптер работает безупречно на частотах 2,4 ГГц и 5 ГГц в Windows и Mac OS X. Похоже, что рабочий пакет firmware-b43-installer достаточно старый, чтобы не поддерживать интерфейс 5 ГГц?

эта ссылка answer уже предложил удалить пакет bcmwl-kernel-source, чтобы избежать случайного удаления соединения. Однако, по крайней мере, один пользователь нашел это решение нецелесообразным.

В то же время я написал быстрый сценарий bash с именем check-for-wi-fi-up-and-runnig для восстановления соединения Wi-Fi, как только он отключился: 12]

#!/bin/bash
#

# Check if Wi-Fi is disabled e.g. 'out of range'
# If so quickly re-enable Wi-Fi
# Due to a problem with Broadcom proprietary driver in package firmware-b43-installer

# Script is part of Start-Up programs
# Stored in /usr/local/bin/
# Infinite loop checking every second if Wi-Fi is up and running

while true; do
  # https://askubuntu.com/questions/27954/how-can-i-check-internet-connectivity-in-a-console
  if [[ $(nmcli -f STATE -t g) != 'connected' ]]; then
    # Disable and Re-Enable Wi-Fi as the Wi-Fi is now 'out of range' (disconnected)
    nmcli radio wifi off
    sleep 3
    nmcli radio wifi on
    sleep 120
  fi
  sleep 1
done

Возможно, я смогу отключить sleep 3 до sleep 1, ожидая дальнейшего тестирования.

Итак, в настоящий момент это компромисс между отсутствием соединения, но с переустанавливать пакет драйверов порой или нестабильное соединение с несколькими каплями в час порой ...

3
задан 1 April 2018 в 08:22

3 ответа

Похоже, вы добавили это в конец файла .bashrc в вашем домашнем каталоге:

export PS1="\033[0;33m\h:\W \u\$ \e[m"

Вместо этого вы должны использовать это:

export PS1="\[\033[0;33m\]\h:\W \u\$ \[\e[m\]"

То есть окружные escape-последовательности, которые говорят терминалу, как отображать текст (в данном случае, выполняющий раскраску) с помощью \[ и \]. Это сообщает оболочке Bash, что они не должны учитываться при определении количества видимых символов, которые вы ввели. (См. Также этот вопрос и тот.)

На самом деле редко бывает полезно visible PS1, кстати. Каждая новая интерактивная оболочка Bash, которая должна использовать вашу подсказку, будет читать из .bashrc и установить для себя приглашение. Поэтому я рекомендую исключить export и просто использовать эту строку:

PS1="\[\033[0;33m\]\h:\W \u\$ \[\e[m\]"

Хотя это была единственная часть вашего .bashrc, где я заметил проблему, вы можете захотеть для сравнения файла с «оригиналом»:

diff /etc/skel/.bashrc ~/.bashrc

Показывает изменения по сравнению с файлом .bashrc, который будет создан для нового пользователя в вашей системе. должен , который показывает только ваши собственные изменения, но иногда /etc/skel/.bashrc изменяется между версиями Ubuntu, поэтому, если ваша учетная запись пользователя была создана до обновления, тогда могут быть и другие изменения. Обратите внимание, что не все это показывает ошибку! Но это те части, которые я рекомендую вам проверить.

(Вы можете включить вывод этой команды diff в свой вопрос, если вы не знаете, как ее интерпретировать или если какая-то измененная строка содержит что-либо это должно быть написано по-другому.)

Наконец, хотя я подозреваю, что это полностью решит вашу проблему, я должен упомянуть, что обычно поведение, когда вы нажимаете Enter, на самом деле не влияет на это. Чаще всего, опуская \[ и \] просто заставляет оболочку не завершать ваши строки, так что, если вы введете что-то длиннее ширины терминала, оно вернется к началу той же строки. [!d15 ]

3
ответ дан 22 May 2018 в 11:40

Похоже, вы добавили это в конец файла .bashrc в вашем домашнем каталоге:

export PS1="\033[0;33m\h:\W \u\$ \e[m"

Вместо этого вы должны использовать это:

export PS1="\[\033[0;33m\]\h:\W \u\$ \[\e[m\]"

То есть окружные escape-последовательности, которые говорят терминалу, как отображать текст (в данном случае, выполняющий раскраску) с помощью \[ и \]. Это сообщает оболочке Bash, что они не должны учитываться при определении количества видимых символов, которые вы ввели. (См. Также этот вопрос и тот.)

На самом деле редко бывает полезно visible PS1, кстати. Каждая новая интерактивная оболочка Bash, которая должна использовать вашу подсказку, будет читать из .bashrc и установить для себя приглашение. Поэтому я рекомендую исключить export и просто использовать эту строку:

PS1="\[\033[0;33m\]\h:\W \u\$ \[\e[m\]"

Хотя это была единственная часть вашего .bashrc, где я заметил проблему, вы можете захотеть для сравнения файла с «оригиналом»:

diff /etc/skel/.bashrc ~/.bashrc

Показывает изменения по сравнению с файлом .bashrc, который будет создан для нового пользователя в вашей системе. должен , который показывает только ваши собственные изменения, но иногда /etc/skel/.bashrc изменяется между версиями Ubuntu, поэтому, если ваша учетная запись пользователя была создана до обновления, тогда могут быть и другие изменения. Обратите внимание, что не все это показывает ошибку! Но это те части, которые я рекомендую вам проверить.

(Вы можете включить вывод этой команды diff в свой вопрос, если вы не знаете, как ее интерпретировать или если какая-то измененная строка содержит что-либо это должно быть написано по-другому.)

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

4
ответ дан 17 July 2018 в 17:41

Похоже, вы добавили это в конец файла .bashrc в вашем домашнем каталоге:

export PS1="\033[0;33m\h:\W \u\$ \e[m"

Вместо этого вы должны использовать это:

export PS1="\[\033[0;33m\]\h:\W \u\$ \[\e[m\]"

То есть окружные escape-последовательности, которые говорят терминалу, как отображать текст (в данном случае, выполняющий раскраску) с помощью \[ и \]. Это сообщает оболочке Bash, что они не должны учитываться при определении количества видимых символов, которые вы ввели. (См. Также этот вопрос и тот.)

На самом деле редко бывает полезно visible PS1, кстати. Каждая новая интерактивная оболочка Bash, которая должна использовать вашу подсказку, будет читать из .bashrc и установить для себя приглашение. Поэтому я рекомендую исключить export и просто использовать эту строку:

PS1="\[\033[0;33m\]\h:\W \u\$ \[\e[m\]"

Хотя это была единственная часть вашего .bashrc, где я заметил проблему, вы можете захотеть для сравнения файла с «оригиналом»:

diff /etc/skel/.bashrc ~/.bashrc

Показывает изменения по сравнению с файлом .bashrc, который будет создан для нового пользователя в вашей системе. должен , который показывает только ваши собственные изменения, но иногда /etc/skel/.bashrc изменяется между версиями Ubuntu, поэтому, если ваша учетная запись пользователя была создана до обновления, тогда могут быть и другие изменения. Обратите внимание, что не все это показывает ошибку! Но это те части, которые я рекомендую вам проверить.

(Вы можете включить вывод этой команды diff в свой вопрос, если вы не знаете, как ее интерпретировать или если какая-то измененная строка содержит что-либо это должно быть написано по-другому.)

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

4
ответ дан 23 July 2018 в 18:33

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

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