консольные полезняшки
Случайная подборка, преимущественно тыренное
- https://ru.wikipedia.org/wiki/GNU_parallel и https://en.wikipedia.org/wiki/Pexec - для запуска нескольких одновременных процессов.
- https://zalinux.ru/?p=2623 - про parallel.
- imagemagick
- bash
- find
- wget
- https://www.shellscript.sh/exitcodes.html - консольковое руководство
- https://habr.com/ru/company/lanit/blog/537596/ - Горячие клавиши терминала
- https://avg-it.ru/info/articles/kak-uznat-versiyu-linux-iz-konsoli/
- https://900913.ru/2017/04/26/unix-version/
- Occasionally, while working in a terminal, it may appear to lock up. This happens most often if you accidentally press
^S
(Ctrl-S), which is a control code to temporarily freeze the terminal output. If the terminal is not responding, try pressing^Q
(Ctrl-Q). This will unlock screen output by sending the control code to unfreeze terminal output. Remember that all the buttons you press in frustration don't disappear; they are saved up and will be processed when screen output is unlocked. - прям бывает нужно, даа! - редактировать crontab какого-то юзера -
crontab -u username -e
(если не редактировать, то последняя опция меняется на нужную)- man 5 crontab - про формат файла.
- The ``sixth'' field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to split a single command line onto multiple lines, like the shell's trailing "\". Обратить внимание, что % надо экранировать.
- runuser can be used to run commands with a substitute user and group ID. If the option -u is not given, runuser falls back to su-compatible semantics and a shell is executed. The difference between the commands runuser and su is that runuser does not ask for a password (because it may be executed by the root user only) and it uses a different PAM configuration.
ftp:user:pass@machine:port
!!
повторит предыдущую команду,sudo !!
повторит предыдущую команду от рута.- решетка # перед командой сделает её комментарием: сохранит в историю но не выполнит. Когда жаль удалять набранное, а сначала надо что-то ещё - перейти в другое место, выполнить что-то ещё, возможно, из истории же.
- картинки в консольке. Картинки можно смотреть через fbi. для масштабирования - опция -a.
- Команда
clear
очищает экран терминала. Комбинация клавиш Ctrl + L позволяет добиться того же самого быстрее. Если терминал переклинило после некорректного выхода из псевдографической программы иили вырвашегося на просторы stdout мусора, есть волшебная команда reset - Alt + . позволяет перемещаться по ранее введённым командам (но как-то странно).
- Ctrl + U убирает из строки всё то, что уже в неё введено.
- Для инкрементального обратного поиска по истории команд используйте комбинацию клавиш Ctrl + R. Вот это да, использую часто.
while ! my_command_here; do sleep 1; done
- как делать нечто до успеха.repeat 300 do my_command_here && sleep 1.5
, оно жеfor x in {1..300} ; do my_command_here ||break;sleep 1.5; done
while ls -l; do sleep 5; done
(занятно применили выполнение команды как условие), оно жеwatch -n 5 'ls -l
. Watch очищает экран, умеет интересноеappend --differences
.- это всё по https://stackoverflow.com/questions/13593771/repeat-command-automatically-in-linux
- Узнать, куда указывает мягкая ссылка
readlink linkfilename
- mac-адрес без ifconfig -
sudo lspci -v | grep -i "Device Serial Number"
- c ifconfig -
ifconfig | egrep [0-9A-Za-z]{2}\(:[0-9A-Za-z]{2}\){5} | awk '{print $1 ":\t" $5}'
- c ifconfig -
- текст с форматированием в текст с разметкой - из буфера обмена
xclip -selection clipboard -o -t text/html | pandoc -f html -t json | pandoc -f json -t org --no-wrap
(pandoc) - https://github.com/fcambus/ansiweather - погода.
- https://github.com/elisescu/tty-record - tty-record is a tool that records a terminal session (well, any command you run it with) and saves the output in a self contained html file that can be run in the browser.
- atuin.sh – более интересная история команд в консоли. Включая синхронизацию между компами.
- замены which — whereis, type, command -v
перевод слова по горячей кнопке - dzen, sdcv
Dzen - утилита, которая рисует окошки. Рисует в них то, что ей дают на stdin.
Пример контекстного словаря, взятый с сайта dzen2 с небольшим изменением.
Что мы хотим сделать: мы хотим получать перевод слова, выделенного мышкой. Примерно так как это реализовано в stardict.
Используемые для этого утилиты:
- dzen2 - будет рисовать окошко в котором будет отображаться перевод (или другая информация из словаря).
- sdcv - stardict console version, консольная версия стардикта. Выдает в stdout перевод слова или слов, полученных на stdin.
Можно взять что-то другое - например dict и sselp, xsel или xclip с опцией "-o" - утилита выдающая в STDOUT текст который в данный момент выделен мышкой.
Если выполнить приведенный ниже скрипт, он нарисует окошко с переводом выделенного слова. Тока повесить на удобную горячую клавишу.
#!/bin/sh # выбрать один вариант, закомментировать остальные # LOOKUP=`sselp` LOOKUP=`xclip -o` # LOOKUP=`xsel` #Это все одна строка (echo "$LOOKUP"; sdcv -n --utf8-output --utf8-input --data-dir=/home/horrible/bin/dzendict/ "$LOOKUP") | /usr/bin/dzen2 -l 8 -p -w 500 -bg darkblue -fg grey75 -x 300 -y 300 -fn '-xos4-terminus-medium-r-normal--14-*-*-*-*-*-iso8859-5' -e 'onstart=scrollhome,uncollapse;button4=scrollup;button5=scrolldown;button1=exit
Лучше чем stardict т.к. стардикт не дает настроить произвольную комбинацию клавиш и работает медленно.
сделать неинтерактивным интерактивное
expect
В двух вариантах - expect -c "" и скрипт самого expect.