Как решить проблему, что экран Terminal испорчен? (обычно после изменения размеров)

bashфигурные скобки, {}, перечислит их в порядке:

for file in log{1..164}.gz; do
    process "$file"
done
79
17.01.2013, 21:34
10 ответов

При использовании удара проверьте, активируется ли "checkwinsize" опция в использовании сессии

shopt | grep checkwinsize

Если Вы не добираетесь

checkwinsize    on

затем активируйте его

shopt -s checkwinsize

В документации Bash говорится для атрибута "checkwinsize":

"Если установлено, Bash проверяет размер окна после каждой команды и, при необходимости, обновляет значения СТРОК и СТОЛБЦОВ".

Если Вам нравится установка, Вы могли бы активироваться checkwinsize в Вашем ~/.bashrc.

  • Активироваться: shopt -s checkwinsize
  • Деактивироваться: shopt -u checkwinsize
97
27.01.2020, 19:31
  • 1
    Это, оказывается, не решает мою проблему, но это - хороший общий ответ, таким образом, +1 так или иначе. Я думаю, что моя проблема касается эмуляции (?) Windows когда ssh-луг в сервер Linux. –  geneorama 19.03.2015, 17:21
  • 2
    Сначала казалось, что это не работало, когда я израсходовал стрелки для наблюдения истории, но сразу после первой выполняемой команды, это зафиксировало все. Используя разделитель в моем случае. +1 –  kstenger 09.02.2016, 19:53
  • 3
    это работало на меня, но только путем выключения checkwinsize. по некоторым причинам LINES=24 устанавливался после каждой команды даже при том, что мое окно (содержащий picocom сессию) было намного более высоким. –  Michael 09.08.2017, 03:59

Можно попробовать Ctrl+L. Это очищает и/или перерисовывает терминальный экран, в зависимости от программы.

19
27.01.2020, 19:31
  • 1
    , но это постоянно не решает проблему... –  nopole 17.01.2013, 09:37
  • 2
    я думаю, что имел в виду, был при нажатии CTRL L затем строка в порядке в настоящий момент, но если Вы редактируете строку снова (или на следующей командной строке Вы вводите), затем проблема все еще там –  nopole 16.12.2016, 12:29

Я просто хотел добавить к тому, что Аркадиен уже упоминал. Обратная связь с обратным сообщением делает трюк, но для меня то, что нужно было сбросить размер окна для него, чтобы работать правильно. Я думаю, что Checkwinsize предназначался, чтобы устранить это, но все же стоит выстрел. Просто попробуйте изменить размер окна или неработающего и максимизации и максимизации его размещения этой опции.

6
27.01.2020, 19:31

Я не знаю о широко используемых инструментах, написанных ни на одном из этих языков. Node.js не больше зависимости, чем perl или python, хотя, возможно, не так, как обычно устанавливается. Вчера я только что установил узел 0.12 в системе Windows без проблем.

Мой вопрос - почему не C, python, perl, php, awk, bash скрипт или tcl? Все они имеют давнюю историю и широко доступны.

-121--228811-

Исходный вопрос

Все слова после -exec до \; интерпретируются как параметры, т.е. они расширяются оболочкой, откуда выполняется команда (можно попробовать, что происходит, если существует каталог с именем {} ), но затем интерпретируются как если бы они были процитированы. Вам нужна оболочка, чтобы развернуть глобусы:

find . -type d -exec bash -c 'echo {}/*' \;

Обновить

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

-121--121305-

У меня была та же проблема, что и у вас, и вот что я сделал:
У меня есть настройка .profile , поэтому я выполняю все изменения.

Существует пакет с именем xterm , который доступен через apt-get Я не знаю о yum . Но я выполнил локальную установку из источника, так как у меня нет прав на установку. ССЫЛКА: http://invisible-island.net/xterm/#download

./configure --prefix=/the/path/you/want/to/install/to
make
make install

Я экспортировал путь в свой профиль и вызвал его в том же месте

export PATH=$PATH:/the/path/you/want/to/install/to
resize

Поэтому теперь при каждом входе в систему размер терминала устанавливается соответствующим образом путем изменения размера.

2
27.01.2020, 19:31

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

Наконец-то я нашел решение. Я добавил в свой .bashrc :

export PROMPT_COMMAND="resize &>/dev/null ; $PROMPT_COMMAND"

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

Спасибо UKmonkey за улучшение PROMPT_COMMAND.

9
27.01.2020, 19:31

Время от времени я сталкиваюсь с одной и той же проблемой, используя zsh в macOS. Простой вызов команды reset снова настраивает терминал по моему вкусу.

12
27.01.2020, 19:31

добавление этих опций в docker exec решило мою проблему

-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM
15
27.01.2020, 19:31

Что ж, это распространенная проблема, и должно быть простое решение.

Если другие меры, такие как Ctrl + A Ctrl + L, не работают, попробуйте использоватьstty:

  1. Ctrl + T :Открыть новую вкладку с локальной оболочкой.
    Или :Покиньте экран (Ctrl + A D, чтобы отсоединиться )и выйти из сеанса SSH.
  2. stty -a | grep rows:Получить количество строк и столбцов.
    Пример:speed 38400 baud; rows 33; columns 133; line = 0;
  3. Вернитесь на вкладку удаленного доступа или войдите в систему и повторно подключите экран. Выход sttyдолжен быть другим.
    Пример:speed 38400 baud; rows 47; columns 177; line = 0;
  4. Введите stty rows Nи stty columns N, где N — «настоящее» число (за пределами экрана ). Пример:$ stty rows 33; stty columns 133

Если вы используете Терминатор , вы можете пропустить первые три шага, потому что он показывает количество столбцов и строк вверху.

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

И результат не только в том, что некоторые справочные страницы не отображаются должным образом. Это почти все, что использует пейджер -первые несколько строк часто отсутствуют (например ). И даже не думайте об использовании VIM в таком смещенном терминале. Вы хотите выделить строку 3 (V ), чтобы заменить ее, но когда вы это сделаете, выделенный текст будет текстом другой строки.

2
27.01.2020, 19:31

Попробуйте stty sane. он должен делать то, что вам нужно.

5
27.01.2020, 19:31

, если вы используетеexpect

добавьте это в начало скрипта, будет работать

#let pty slave device aware of WINCH signal
trap {
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

более подробная информация и пояснения по адресуhttps://unix.stackexchange.com/a/668254/109036

1
10.09.2021, 02:08

Теги

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