Заберите себе весь мир, оставте мне один компьютер.
КОНСОЛЬНЫЕ ХИТРОСТИ В BASH
Запись и воспроизведение в консоли. Все привыкли пользоватся скриншотами и записью видео с экрана. Я даже встречала мануалы как делать скрины в голой консоли. Хочу поделится с вами интересным способом как делать "настоящую" видеозапись с консоли без лишних движений. Выполните для примера следующие команды в терминале:
командой проиграем наш "видео ролик"
просмотра "третьим" лицам. Ну и на последок можно глянуть ман страницу
легко передавать на форуме, а еще лучше сделать один перенаправив следующие стандартные выводы в новый файл. Что бы вывести список вводимых команд без проигрывания всех действий с установленными временными интервалами достаточно ввести команду:
Есть еще тулза на питоне можно смотреть видео в браузере
|
Всего комментариев 8
Комментарии
-
nezabudka, очень интересная вещь, положил в закладки.
Единственное, что расстраивает - получившийся ролик не так просто читать вручную - там много мусора, а если включить что-нибудь, занимающее всё видимое пространство (например vim), и полистать, мусора становится ну очень много. Я конечно понимаю, что это всё сделано для возможности последующего проигрывания, но хотелось бы иметь возможность записывать только введённые команды.
В общем, спасибо за информацию, полезная штукаЗапись от tezaurismosis размещена 30.03.2016 в 18:24 -
tezaurismosis .Попробуйте вот так
Где [nez@rox] это мое приглашение командной строки, на этом месте должно быть ваше.Bash 1
awk '/[nez@rox]/' output.session
И еще если например я хочу получить в выводе только вводимые команды, а не вместе с
возвращаемыми значениями то я ввожу фильтр без квадратных скобок
В fedora23 по умолчанию идет приглашение в квадратных скобках, а в дебиан без, но в конце сBash 1
awk '/nez@rox/' output.session
дополнением ":~$". Так вот в обеих случаеях в фильтре должны быть только логин@машина и
в зависимости от требуемого вывода наличие квадратных скобок.
Можно упростить, у меня работает даже так '/nez/' и '/[nez]/' и так '/rox/' и '/[rox]/' и даже
выводит участки кода выполненные из под root
Можно включать запись, устанавливать приложение, настраивать и таким вот образом по окончании перенаправлять
все в фойл, фактически выкинув все лишние интервалы времени и можно делится с форумчанами. Спасибо за
хорошую подачу, теперь это действительно стало удобно.
Обнаружила такой фильтр методом тыка, сама объяснить как он работает не могу, буду рада
любым замечаниям по этому поводу.Запись от nezabudka размещена 31.03.2016 в 09:22
Обновил(-а) nezabudka 31.03.2016 в 10:22 -
Спасибо marinero за развернутые ответы, привожу здесь некоторые выдержки с его согласия.
Последние строчки не относятся на прямую к теме но думаю они здесь будут совсем не лишние:
Цитата:Сообщение от MarineroЦитата:Сообщение от nezabudkaналичие скобок в фильтре добавляет в выводе дополнительные строки
к которым казалось бы это не должно иметь ни какогод отношения.Цитата:Сообщение от nezabudkaДля меня
это такая же загадка как например фильтр uniqe без сортировки: awk '!t[$0]++'Код:var = var + 1 var += 1 var++
Таким образом выражение t[$0]++ возвращает значение элемента ассоциативного массива t с индексом == очередной строке и добавляет ему 1. Если строка не встречалась => 0 (значение любой неинициализированной переменной в bash == 0), т.е. «false», если встречалась — 1 и больше, т.е. «true». Учитывая знак инверсии «!» получаем все наоборот: когда строка не встречалаясь «!0»(не 0) == «true» — печатаем, «!1» (не true) == false — не печатаем.
Цитата:Сообщение от nezabudkaawk does not print a key equal to 1. It's print when the key is zero. Post increment ++
Value is first equal to 0 and then 1, 2, etc.
0 == fals == no print
1 == true == print
but the sign of inversion ! makes so
!0 == true == print
!1 == false == no print
!2 == false == no print
when you enclose the script in braces you can not put an inversion signBash 1 2 3
awk '1' file awk '0' file awk '!0' file
In the body it does not work
print array:
inBash 1
awk '{t[$0]++} END {for(i in t) print i}'
doesn't print the array, it just gets the true or false for output or not for evry lineBash 1
awk '!t[$0]++'
Цитата:Сообщение от ScrutinizerEverything in awk has the form condition{action}. If the condition evaluates to 1 then the action is performed. If the condition is omitted then the default condition is 1, so the action is performed. If the action is omitted then - if the condition is 1 - the default action is performed, which is {print $0}, which is "print the record", by default a line of the input file.
There is just a condition with the default action
Значит, что бы получить вывод всех вводимых команд включая от root, достаточно ввести:
Ну естественно если знак "@" присутствует в вашей строке приглашения.Bash 1
awk '/@/' output.session
А что бы иметь еще и возвращаемые значения пишим:
Или на всякий случай вот так с шапкой и окончанием:Bash 1
awk '/[@a-z]/' output.session
Такой короткий фильтр применительно к чему либо я ещё не встречала ни где.Bash 1
awk '/./' output.session
Запись от nezabudka размещена 31.03.2016 в 13:34
Обновил(-а) nezabudka 31.08.2020 в 21:05 -
Запись от Marinero размещена 31.03.2016 в 14:42 -
Запись от nezabudka размещена 31.03.2016 в 15:07
Обновил(-а) nezabudka 31.03.2016 в 15:29 -
Запись от tezaurismosis размещена 02.04.2016 в 08:50 -
Запись от IlyaLinux размещена 01.05.2016 в 12:47 -
Запись от nezabudka размещена 24.10.2016 в 09:15
Обновил(-а) nezabudka 19.12.2018 в 07:12