Для очистки беспорядка вам понадобятся две последовательности команд:
Во-первых, запустите это в окне с гарью (это работает, даже если вы находитесь в ssh
):
stty sane; printf '\033k%s\033\\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Затем запустите это на компьютере, на котором запущен tmux
(это работает внутри и вне tmux
):
Следующая команда влияет на все экземпляры
tmux
, что может изменить левый статус не только текущего окна. Если вам не нужна эта функция, оставьте ее в стороне.
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Это было собрано, чтобы рассмотреть все биты, найденные в других ответах и комментариях. В настоящее время, похоже, остался только незначительный бит со второй командой. (См. ниже "недостающий бит").
Чтобы понять, как это работает, давайте сначала уничтожим строку состояния tmux
и tty
. После этого мы исправим ее снова, используя метод, который должен быть всегда доступен (в отличие от команды reset
).
tmux
терминал (предполагает UTF-8
) непригодным для использованияstty -echo; printf '\016\033k%2000s\\\033\033]2;\355\007' $'\302\217'
Предупреждение: После выполнения вышеприведенной команды оболочка выглядит слепой и глухой и, похоже, говорит только чушь на каком-то неизвестном инопланетном языке. Как это исправить, смотрите ниже.
Объяснено:
stty -echo
убивает ответ типа терминала
printf '\016'
делает SO
, так что вы находитесь на альтернативном наборе символов
printf '\033]2; %s\007' 'right status text'
устанавливает правильный статус, в данном случае $'\355
', что раскрывает ошибку представления
printf '\033k%2000s\033\\\' $'\302\217'
устанавливает имя заголовка окна
Это может быть комбинация, которую вы видите на терминале после того, как какая-то интерактивная команда упала и вернулась в оболочку. (С помощью /bin/cat
вы не можете спровоцировать stty -echo
IMHO, но интерактивные команды типа vim
обычно устанавливают это. )
stty sane; printf '\033k%s\033\\\033]2;%s\007' "$(basename "$SHELL")" "$(uname -n)"; tput reset; tmux refresh
Примечание: Если вы используете копирование и вставку (вероятно, вам нужно удерживать
Shift
во время вставки), вы, вероятно, не сможете увидеть свою вставку, если вы использовали вышеупомянутую команду, чтобы испортить вашtty
. Следовательно, просто слепо нажмите клавишу Enter после вставки.
Объяснено:
stty sane
устанавливает "вменяемые" параметры терминала, так что вы получите назад свое эхо при наборе
printf '\033k%s\033\\\' "$(basename "$SHELL")"
возвращает заголовок окна в нормальное состояние. Вы можете использовать tmux rename-window "$(basename "$SHELL")"
в качестве альтернативы, однако tmux rename-window
ограничен tmux
, где управляющая последовательность всегда работает.
printf '\033]2;%s\007' "$(uname -n)"
сбрасывает статус-права, чтобы они отображались по умолчанию. (Обратите внимание, что вы не должны использовать tmux set status-right "something"
, потому что он просто выводит заголовок панели
, который был поврежден, так что status-right
просто раскрывает некоторую ошибку представления. Также обратите внимание, что я не нашел команду tmux
для установки заголовка панели напрямую. )
tput reset
сбрасывает терминал, на всякий случай
tmux refresh
обновляет экран, чтобы избавиться от другого мусора, который мог появиться
Команда printf '\033k%s\033\\\' "$(basename "$SHELL")"
теряет стандартную способность tmux
представлять текущую команду в левой области состояния. После выполнения printf '\033k%s\033\\' "something"
эта способность пропадает, и я пока не нашел хорошего способа, как вернуть ее в прежнее состояние.
Но, как отмечено в комментариях ниже, вы можете активировать аналогичную возможность tmux
в качестве замены с помощью следующей настройки tmux
:
set-window-option automatic-rename on
Либо сделайте это в командной строке tmux
, которую можно вызвать в текущем окне с помощью "Escape" :
(где "Escape" - это ваша командная клавиша tmux
), а затем введите команду.
Или выполните tmux set-window-option automatic-rename on
в вашем текущем терминале, но это не сработает, если вы не находитесь непосредственно на нужном уровне оболочки, например, это не работает в sudo
или ssh
.
Или откройте другое окно в текущей сессии tmux
и выполните следующую команду:
for a in `tmux list-windows | sed 's/:.*//'; do tmux set-window-option -t "$a" automatic-rename on; done`.
Или откройте другой shell на компьютере, на котором запущен tmux
и выполните следующую команду (это вне tmux):
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
PS: Спасибо всем, кто помог собрать это решение.
Я бы не сказал, что этим следует пренебрегать, но я согласен с сумракваффом , что презентация из сообщение бессмысленно. И я согласен с тем, что даже если Bitdefender найдет что-то в /dev/fd/9
, оно было специфичным и локализованным для процесса, работавшего в данный момент, и вы ничего не найдете в /dev/fd
сейчас. Я предлагаю вам
Экран Bitdefender говорит о строках «сообщения» и «Тема». В вашей системе есть электронная почта? Есть ли сообщение с Темой "детский контроль"? Проблема может быть там. Будь осторожен; если к сообщению есть вложения, не открывать их .
Этот результат является абсурдом, и им следует пренебречь. Что-то серьезно не так с этим антивирусным программным обеспечением.
Объекты в /dev/fd
в macOS не являются файлами --, они представляют файловые дескрипторы, открытые текущим процессом. Нет смысла «сканировать» файловый дескриптор на наличие вирусов, и тем более бессмысленно пытаться «поместить» его в карантин.
Вы загрузили архив электронной почты, и антивирусный сканер просканировал его и обнаружил вредоносное ПО в некоторых вложениях.
В двух электронных письмах было вложение с именем Salfeld.Child.Control.2008.v9.975.0.0.rar
, а внутри этого Rar-архива был файл с именем «Keygen.exe». Полное имя каталогаSalfeld.Child.Control.2008.v9.975.0.0.WinALL.Incl.Keygen-BRD
предполагает , что этот архив содержал как продукт Salfeld "Child Control" , так и генератор ключей для него; сканер вирусов считает, что исполняемый файл «keygen» на самом деле является вредоносным.
Теперь по той или иной причине антивирусный сканер не смог показать вам абсолютный путь к файлу (s ), в котором он обнаружил обнаружение. Возможно, это произошло из-за того, что он сканировал электронные письма в середине -загрузки перед сохранением на диск; или это могло быть потому, что он сканировал архив, содержащий электронные письма за 10 лет, и ему нужно было (временно )извлечь их куда-нибудь.
В любом случае, его запасной вариант заключался в сообщении бессмысленного /dev/fd/<number>
(, который был всего лишь действительным дескриптором файла для процесса сканирования ), за которым следовали некоторые более полезные сведения :тема и дата сообщения электронной почты, имя вложения и имя файла в архиве Rar.
Если бы вы нашли это электронное письмо, сохранили вложение «.rar» на диск и повторно отсканировали его или даже извлекли Rar и просканировали «keygen.exe» самостоятельно, я ожидаю, что вы увидите тот же результат :. ] "Червь.общий.269236". Если вы не понимаете, что здесь происходит, я настоятельно рекомендую вам не распаковывать архив даже на Mac . Вместо этого, если у вас есть какие-либо сомнения в правильности этого обнаружения (, например.вы думаете, что файл действительно является генератором ключей и не более того ), вам следует напрямую обратиться в поддержку антивируса.
(Полное раскрытие :Я работаю в другой антивирусной компании.)