Я спробував команду cat
з виконуваним файлом:
cat /bin/ls
Тепер я не можу прочитати жодного слова в цьому терміналі (консоль Linux). Як я можу це виправити?
Я спробував команду cat
з виконуваним файлом:
cat /bin/ls
Тепер я не можу прочитати жодного слова в цьому терміналі (консоль Linux). Як я можу це виправити?
Відповіді:
Часто , коли в терміналі Unix / Linux (Bash), наприклад , ви будете використовувати команди more
або less
або cat
для перегляду файлу. Коли ви зробите це, і файл не призначений для перегляду (наприклад, /bin/ls
), ви отримаєте такий результат:
Тут відбувається те, що ви просто намагалися переглянути файл, який є програмою. Виконаний файл, який не призначений для перегляду у стандартних глядачів, як я вже згадував вище.
Щоб виправити цю проблему, ви можете зробити наступне:
reset
та натисніть returnЗазвичай це повинно повернути термінал у більш нормальний режим. Я згадаю ще одну річ, коли ви виконайте дії, описані вище, ви вкажете їх сліпо у свій термінал. Тому просто переконайтеся, що ви правильно ввели його.
Як запропоновано в коментарях @sendmoreinfo, вам, можливо, пощастить скористатися такими командами, якщо вищезазначене не працює:
$ stty sane
$ tput rs1
До речі, якщо ви натрапили на файл і не знаєте, чи буде він зіпсувати ваш термінал, ви можете перевірити файл за допомогою команди, file
яка повідомить про тип файлу.
Наприклад, з /bin/ls
цього файлу відображається такий вихід:
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
reset
не є 100% ліком від термінального божевілля. Спробуйте stty sane
за ним tput rs1
.
stty sane
але ніколи tput
.
reset
працював у моєму випадку
clear
також працює в легких випадках.
У мене був випадок, коли жоден із звичайних хитрощів, reset
або stty sane
, не спрацював (після випадкового виклику print
в байтарі пітона). Я мав успіх із способом 2, переліченим у цьому корисному блозі .
Я з тих пір створив найкорисніший псевдонім:
alias fix='echo -e "\033c"'
echo -e "\033c"
допомогло мені прибрати сеансовий термінал входу в SSH, який змішався після cat /etc/localtime
.
Жодна попередня відповідь не працювала для мене. Але це, здавалося, зробило трюк у .bashrc add:
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
а потім, коли виникає проблема, введіть це (хоча ви, ймовірно, не можете його побачити!)
(ctl-c, ctl-c, ctl-c)
fix
Велике спасибі попереднім дописувачам. Крім того, як бічна примітка, причиною того, що ваш термінал стає непростим під час показу цих виконуваних файлів (або магазинів брелоків тощо), є те, що ці файли часто містять двійкові послідовності, що є кодами управління. Коди управління можуть виконувати випадкові речі, такі як перехід на графічний набір символів, встановлення кольорів переднього плану та фонових зображень на одне і те ж і т.д.
sane
tmux
користувачі, можливо, зможуть надіслати всі ці команди до своєї оболонки, але скидання не буде підвищено до tmux
області.
Створіть нове вікно tmux:
ctrl-B c
tmux list-panes
Зауважте, як правило, номер панелі, який, на вашу думку, є зашкодженим 0
. Давайте назвемо цеPPP
Виберіть вікно tmux, де XXX
знаходиться номер вікна, який закопується, не обов'язково такий же, як номер панелі.
ctrl-B XXX
tmux send-key -R -t PPP
Потім ви побачите всі команди в інших відповідях на це питання, які перетворили його на вашу оболонку, але не спрацювали! Можливо, штора tmux send-key -R -t PPP
спрацює, але я не можу перевірити.
У мене майже такий самий псевдонім, як у попередньому дописі, з однією невеликою зміною ( tput reset
замість rs1
) та однією доданою командою ( setterm -reset
):
alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
На додаток до інших відповідей, що вказують на те, як скинути термінал, я вважав, що корупції не вдасться уникнути, якщо не захищено належним чином. Тому я краще надішліть вихід у простий текстовий конвертер cat -v
:
docker logs myjenkinscontainer 2>&1 | cat -v
Перегляд та редагування двійкових файлів здається можливим за допомогою hexdump -C
та vi -R
( :%!xxd -g1
для шістнадцяткового перегляду та :%!xxd -g1 -r
для збереження шістнадцяткових змін).
reset
.