{"id":325097,"date":"2021-06-18T09:00:33","date_gmt":"2021-06-18T09:00:33","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=325097"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=325097","title":{"rendered":"Mein Konfig: \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u044f \u043f\u043e dotfiles"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e! \u042f \u043b\u044e\u0431\u043b\u044e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 dotfiles \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043b\u044e\u0434\u0438. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0442\u0440\u044e\u043a \u0438\u043b\u0438 \u0438\u0434\u0435\u044e. \u0410 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u041f\u041e \u0447\u0430\u0441\u0442\u043e \u0438\u0434\u0451\u0442 \u0437\u0430 \u0441\u0447\u0451\u0442, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043c\u0435\u043b\u043e\u0447\u0435\u0439 (\u043c\u043d\u043e\u0433\u043e \u043a\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u0442, \u0447\u0442\u043e Ctrl-T \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 SIGINFO \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <em>cp<\/em> \u0438\u043b\u0438 <em>dd<\/em>?). \u0412\u043e\u0442 \u0438 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0432\u043e\u0451 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 <a href=\"http:\/\/www.git.stargrave.org\/?p=dotfiles.git;a=tree\" rel=\"nofollow noopener noreferrer\">dotfiles<\/a>. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u043a\u0446\u0438\u0439 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0447\u0451\u043c \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c: \u0412\u0432\u043e\u0434, \u041e\u0421, \u0424\u0421, X11, MRA \u0438 MDA, \u0421\u0435\u0442\u044c, Jail, \u0414\u0435\u043c\u043e\u043d\u044b, MTA, MUA, WWW, PGP, IRC, st, tmux, cd, git, zsh, zsh completion, zsh history, ZLE, zsh prompt, zsh misc, less, grep, <em>.zshenv<\/em>, autoenv, <em>.zprofile<\/em>, t, \u041c\u0443\u0437\u044b\u043a\u0430, mpv, \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0410\u0440\u0445\u0438\u0432\u044b, Feeds, Hjson, <em>*tex*<\/em>, File transfer, Games, \u0411\u0414, \u042f\u041f, Python, Go, C, redo, TAI64, Vim, tags, <em>.vimrc<\/em>, <em>~\/.vim\/pack<\/em>, <em>~\/.vim\/plugin<\/em>, <em>~\/.vim\/ftplugin<\/em>. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u043e\u0440\u043d\u044b\u0435 holywar \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0435\u0437\u0434\u0435 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0440\u0430\u0437\u0443 \u00ab\u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8a8\/23c\/afc\/8a823cafcea760d9c1b54aa8b3f34543.jpg\"><br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u041a\u043e\u0440\u043e\u0442\u043a\u043e \u0437\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u044f yet another \u0441\u0440\u0435\u0434\u043d\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u0441\u0438\u0434\u0435\u0432\u0448\u0438\u0439 \u0437\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438 \u0435\u0449\u0451 \u0441\u043e \u0448\u043a\u043e\u043b\u044b. \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Unix-like \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 Mandrake Linux 20+ \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u0414\u0430\u043b\u0435\u0435 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u043d\u0430 FreeBSD \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 4.5, \u0441\u0435\u043c\u044c \u043b\u0435\u0442 \u043d\u0430 Debian \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e Ubuntu. \u0412\u043e\u0441\u0435\u043c\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043d\u0430 FreeBSD.<\/p>\n<h2>\u0412\u0432\u043e\u0434<\/h2>\n<p>  \u041d\u0430\u0447\u043d\u0443 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432\u0432\u043e\u0434\u0430, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u044b, \u0431\u0435\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0436\u0435\u043b\u0435\u0437\u0430, \u0434\u0430\u0431\u044b \u044d\u0442\u043e \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043a\u0430\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u0443.<\/p>\n<p>  \u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u2014 \u043c\u043e\u0439 \u0445\u043b\u0435\u0431, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 (\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439?) \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0441\u0443\u0442\u043a\u0438 \u043d\u0430\u043f\u0440\u043e\u043b\u0451\u0442. \u0418 \u043e\u043d\u0430 \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u043b\u044c\u043d\u043e\u0439. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u0443 \u0434\u0435\u043d\u044c \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043e\u0431\u0440\u0451\u043b \u0442\u0430\u043a\u0442\u0438\u043b\u044c\u043d\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0440\u0430\u0434\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0414\u043e \u043d\u0435\u0451 \u044f \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b ThinkPad \u043d\u043e\u0443\u0442\u0431\u0443\u043a, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u044f \u0435\u0433\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e, \u043d\u0435 \u0442\u043e \u0447\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u00ab\u043e\u0441\u0442\u0440\u043e\u0432\u043d\u044b\u0435\u00bb. \u041f\u0435\u0440\u0435\u0434 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u043b\u044c\u043d\u043e\u0439 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0441\u0432\u043e\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 <em>typespeed<\/em>: 300+ \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0430 \u043d\u043e\u0432\u043e\u0439, \u043f\u0440\u0435\u0436\u0434\u0435 \u043c\u043d\u0435 \u043d\u0435\u0432\u0438\u0434\u0430\u043d\u043d\u043e\u0439 \u0438 \u0441 \u0447\u0443\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u043e\u0439: 400+ \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u0435\u043d\u0438\u0432 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443, \u043d\u0430 \u0442\u0440\u0435\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0432\u043e\u0434\u0430!<\/p>\n<p>  \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0443, \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438\u043b\u0438 \u0434\u0435\u0448\u0451\u0432\u043e\u0439 \u043f\u043b\u0451\u043d\u043e\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438\u0437-\u0437\u0430 \u0447\u0443\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448. \u0414\u0430\u0436\u0435 \u0432 \u0434\u0430\u043b\u044c\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0441 \u043a\u0443\u0447\u0435\u0439 \u0432\u0435\u0449\u0435\u0439, \u0442\u0430\u0449\u0443 \u0441 \u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0441\u044f\u0449\u0443\u044e \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u0438\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443. \u0418 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0451 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u0448\u0435 \u0447\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u041f\u041a \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u043e\u0432 \u2014 \u043e\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e.<\/p>\n<p>  \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Cheery MX Blue \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0438, \u043d\u043e \u043c\u043e\u0433 \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u043d\u0430 Brown. \u0421\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043d\u0430\u0434\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u0445 \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0447\u0451\u0440\u043d\u0430\u044f. \u0417\u0430\u0447\u0435\u043c? \u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442, \u043f\u043e\u043d\u0442\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041d\u043e, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e: \u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u0440\u0430\u0432\u044b\u0435 Super \u0438 Menu \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0440\u044f\u0434 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f Alt, Super, Menu, Ctrl \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0430 \u043e\u0449\u0443\u043f\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0433\u0434\u0435 \u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u043b\u0435\u0446. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u043a\u043b\u0430\u0432\u0438\u0448\u0443 Super \u043d\u0430 \u0442\u0443, \u0433\u0434\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d Windows \u043b\u043e\u0433\u043e\u0442\u0438\u043f \u0432 \u043a\u0440\u0443\u0436\u043e\u0447\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u044f\u0437\u0430\u044e \u0438 \u0443\u0436\u0435 \u043d\u0435 \u0442\u0435\u0440\u044f\u044e\u0441\u044c. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u0432\u0441\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435 \u0443 \u043c\u0435\u043d\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u0433\u043e\u0442\u0438\u043f Windows \u0432\u0438\u0434\u0435\u043d.<\/p>\n<p>  \u041c\u044b\u0448\u043a\u0430\u043c\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0443\u0436\u0435 \u0433\u0434\u0435-\u0442\u043e \u043b\u0435\u0442 \u0432\u043e\u0441\u0435\u043c\u044c, \u0432\u0435\u0437\u0434\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 \u0442\u0440\u044d\u043a\u0431\u043e\u043b\u044b. \u041a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0442\u0440\u044d\u043a\u0431\u043e\u043b\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0442\u044c, \u043d\u043e \u0441 \u043d\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u041f\u043b\u044e\u0441 \u043e\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043e\u0442 \u0441\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f, \u0434\u0430\u0436\u0435 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043d\u0430 \u0434\u043d\u044e, \u043f\u044b\u043b\u0438 \u0438 \u0433\u0440\u044f\u0437\u0438.<\/p>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u0442\u0440\u044d\u043a\u0431\u043e\u043b \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0438 \u043a\u043e\u043b\u0435\u0441\u043e\u043c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430! Big balls matters \u2014 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u044f\u0436\u0451\u043b\u044b\u0439 \u0448\u0430\u0440\u0438\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435 (\u00ab\u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u00bb \u043e\u0449\u0443\u0442\u0438\u043c\u0443\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u2014 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u043b\u044c\u0446\u0435\u0432) \u0438 \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u0434\u0430\u043b\u0451\u043a\u0438\u0435\u00bb \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u0437-\u0437\u0430 \u0435\u0433\u043e \u043c\u0430\u0441\u0441\u044b \u0438 \u0438\u043d\u0435\u0440\u0446\u0438\u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0431\u0435\u0437 \u0442\u0430\u043a\u0442\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0436\u0438\u0437\u043d\u0438 \u043d\u0435\u0442 (\u043c\u043d\u0435 \u043f\u0440\u043e\u0449\u0435 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434 \u0434\u043e\u043c\u043e\u0439 \u0437\u0430 \u043d\u0435\u0439, \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u0432\u0440\u0435\u043c\u044f, \u0447\u0435\u043c \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0437\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u0447\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043f\u043b\u0451\u043d\u043e\u0447\u043d\u044b\u043c\u0438 \u0446\u0435\u043b\u044b\u0439 \u0434\u0435\u043d\u044c, \u0441\u0436\u0438\u0433\u0430\u044f \u0441\u0432\u043e\u0438 \u043d\u0435\u0440\u0432\u044b \u0438\u0437-\u0437\u0430 \u0443\u0449\u0435\u0440\u0431\u043d\u043e\u0433\u043e \u041a\u041f\u0414), \u043d\u043e \u043f\u0440\u043e \u0442\u0440\u044d\u043a\u0431\u043e\u043b \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0436\u0435 \u043d\u0435 \u0441\u043a\u0430\u0436\u0443. \u041a\u0440\u043e\u043c\u0435 \u043d\u0438\u0445 \u044f \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u00ab\u0442\u0435\u043d\u0437\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u00bb (TrackPoint), \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0443\u043a\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u0418\u0437 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0438 \u0434\u043e\u043c\u0430 \u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u043b\u044e\u0448\u0435\u0432\u044b\u0439 <a href=\"https:\/\/www.freebsd.org\/art\/\" rel=\"nofollow noopener noreferrer\">Beastie<\/a> \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c.<\/p>\n<h2>\u041e\u0421<\/h2>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u041f\u041e. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0442\u0430\u0431\u0443. \u041a\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u041f\u041e \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u2014 \u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0448\u0443 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0432\u043e\u0451 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0441 \u043d\u0438\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u042d\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u0430\u0436\u043d\u0435\u0435. \u0418 \u0434\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 RAR \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u043c\u0435\u0435\u0442 open-source <em>unrar<\/em> \u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u043e\u0440, \u043e\u0434\u043d\u0430\u043a\u043e \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0435\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u043c, \u0438\u0437-\u0437\u0430 \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u043e\u0440.<\/p>\n<p>  \u0418 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435, \u0438 \u0434\u043e\u043c\u0430, \u0438 \u043d\u0430 VPS \u0443 \u043c\u0435\u043d\u044f <a href=\"https:\/\/www.freebsd.org\/\" rel=\"nofollow noopener noreferrer\">FreeBSD<\/a> \u041e\u0421. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/post\/490408\/\">\u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435<\/a> \u0434\u043b\u044f \u043c\u043e\u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439. \u0414\u0430\u0436\u0435 FidoNet \u044f \u0433\u043e\u0434\u0430\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 FreeBSD (\u043f\u043e\u0445\u043e\u0436\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 GoldEd \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 Vi(m)). \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u044f \u043e\u0434\u043e\u0431\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043d\u043e\u0448\u0443\u0441\u044c \u043a permissive \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u043c, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044f GPL-\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e copyleft-\u043d\u044b\u0445.<\/p>\n<p>  \u042f \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u2014 \u0438 \u0432\u0441\u044f \u041e\u0421 \u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043d\u0435\u0439 (\u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043f\u043e\u0440\u0442\u043e\u0432) \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0412\u0441\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 <em>\/usr\/ports\/distfile<\/em> \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0435\u0447\u043d\u043e, \u0434\u0430\u0431\u044b \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0451 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0431\u0435\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443. \u0421\u0440\u0435\u0437 \u043f\u043e\u0440\u0442\u043e\u0432 \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043a RELEASE \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430. \u0418\u0437\u0440\u0435\u0434\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044f \u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0435 \u0438\u0437 upstream-\u0430. \u041d\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a bleeding edge \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0432\u0441\u0451 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0443 \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 (\u0442\u0430\u043a \u043a\u0430\u043a \u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/www.gnu.org\/software\/stow\/\" rel=\"nofollow noopener noreferrer\">GNU Stow<\/a>. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e LLVM \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 <em>~\/local\/stow\/llvm<\/em>, Mutt \u0432 <em>~\/local\/stow\/mutt<\/em>, \u0430 <em>stow<\/em> \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 <em>~\/local\/bin<\/em>, <em>~\/local\/share<\/em> \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 (\u0430-\u043b\u044f chroot), \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 <em>PATH<\/em> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e <em>~\/local\/bin<\/em> \u0432\u0435\u0449\u0430\u0445, \u0432 <em>CFLAGS<\/em> \u043e <em>~\/local\/include<\/em>, \u0438 \u0442.\u0434\u2026 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 <em>\/usr\/local<\/em> \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0435\u0449\u0451 \u043a\u0430\u043a-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0447\u0435\u043c \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b) \u2014 \u0441 <em>stow<\/em> \u0432\u0441\u0451 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u041f\u043b\u044e\u0441 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f distribution\/OS-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a <em>stow<\/em> \u0432\u0435\u0437\u0434\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432 \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u0435\u043d: \u043e\u0434\u043d\u0430 Perl \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430.<\/p>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>stow<\/em> \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 dotfiles. \u0414\u0440\u0443\u0433\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u043a\u0430\u043a \u0432\u0441\u0451 \u044d\u0442\u043e \u0438\u043c\u0435\u0442\u044c \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u0425\u043e\u0442\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e\u0433\u043e <em>HOME<\/em> \u0432 git, \u043d\u043e \u00ab\u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u00bb \u0447\u0435\u0440\u0435\u0437 <em>&#8212;git-dir<\/em>, \u0442\u043e\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e. \u041d\u043e \u0432 \u043d\u0451\u043c \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432\u0437\u044f\u0442\u044c \u0438 \u0443\u0431\u0440\u0430\u0442\u044c\/\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e XXX \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0431\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u0438 revert-\u043e\u043c), \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0432 stow \u0434\u0435\u043b\u0430\u044e <em>stow -D XXX<\/em> \u0438\u043b\u0438 <em>stow -S XXX<\/em>.<\/p>\n<p>  \u0412\u0441\u0435 \u043c\u043e\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u0421\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0443. \u0418 \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0444\u0442\u0430 \u0446\u0435\u043b\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435. Holywar \u0442\u0435\u043c\u0430, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0437\u0430 \u0438 \u043f\u0440\u043e\u0442\u0438\u0432 \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d, \u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438, \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0441\u0442\u0430\u043b\u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043e\u0447\u0438\u044e \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u043b \u0441\u043e\u0442\u043d\u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 ImageMagick-\u043e\u0432\u043e\u0433\u043e <em>convert<\/em> \u0441 \u043a\u0443\u0447\u0435\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0441\u0430\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f JPEG \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e. \u0421\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0433\u043e\u0442\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0436\u0451\u0441\u0442\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0435 (\u0435\u0441\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u0438\u043d\u043a\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Go) \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<p>  \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0436\u0443\u0442\u043a\u043e \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 <em>libc<\/em>, <em>malloc<\/em> \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0418 \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GNU\/Linux, \u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u0431\u044b \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/voidlinux.org\/\" rel=\"nofollow noopener noreferrer\">Void Linux<\/a> \u0441 <em>musl<\/em> \u0438 <em>runit<\/em> \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438.<\/p>\n<p>  \u0410 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 <em>.so<\/em>, \u0434\u0430\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0440\u0435\u0445\u043d\u0451\u0439, \u0438\u0431\u043e \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0421\u0438 \u0438\u043b\u0438 Go \u2014 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u0441\u043e\u0442\u0435\u043d \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432\u043e \u0432\u0441\u0435\u0439 \u041e\u0421 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0425\u043e\u0447\u0443 \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0431\u044b\u0441\u0442\u0440\u043e, \u0438\u043c\u0435\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0438 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439.<\/p>\n<h2>\u0424\u0421<\/h2>\n<p>  \u0412\u0435\u0437\u0434\u0435 ZFS \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u044e\u0441\u044c. \u041a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e, \u0437\u0430\u043c\u0435\u043d\u0430 RAID\/LVM\/flashcache, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043d\u043e\u0439 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u0423\u0434\u043e\u0431\u043d\u0435\u0439\u0448\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u044b\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445, \u0447\u0435\u0440\u0435\u0437 \u0441\u043d\u0438\u043c\u043a\u0438 \u0438 <em>zfs send\/recv<\/em>. \u0411\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0438, \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043b\u043e\u043d\u043e\u0432, \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, resilvering-\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435. \u041d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 RAID, \u0431\u0435\u0437 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 vendor-lockin \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u043f\u0430\u0441\u0430\u044e\u0449\u0438\u0445 \u043e\u0442 write-hole. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0438 \u0438\u0445 \u043e\u0442\u043a\u0430\u0442\u0430 \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438. \u0411\u044b\u0432\u0430\u0435\u0442, \u0434\u0430\u0436\u0435 \u043b\u0435\u043d\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 git-\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u044f snapshot\/rollback ZFS. \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u041e\u0421 \u043f\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u0434\u043e\u0431\u0440\u043e\u0442\u043d\u043e\u0439 \u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 ZFS \u2014 \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u0441\u0432\u043e\u0434\u0438\u0442 \u0432\u044b\u0431\u043e\u0440 \u043a FreeBSD, <a href=\"https:\/\/www.illumos.org\/\" rel=\"nofollow noopener noreferrer\">illumos<\/a> \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e <a href=\"http:\/\/netbsd.org\/\" rel=\"nofollow noopener noreferrer\">NetBSD<\/a>.<\/p>\n<p>  ZFS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 GPT \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u043d\u0438 \u0434\u0430\u044e\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 BSD-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0433\u043e <em>glabel<\/em>) \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u0447\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0438\u0435 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0438\u0445 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u043e\u0442 WWN-\u043e\u0432 \u0438 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a\u043e\u0432 \u0434\u0438\u0441\u043a\u043e\u0432 (\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 <em>dd<\/em>-\u043e\u0439 \u00ab\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00bb \u0434\u0438\u0441\u043a). \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044d\u0442\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e 4KiB-\u0441\u0435\u043a\u0442\u043e\u0440\u0430\u043c. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c swap-\u0440\u0430\u0437\u0434\u0435\u043b \u0432\u043d\u0435 ZFS ZVOL-\u0430. \u0412-\u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0445, \u0441 \u043a\u043e\u043d\u0446\u0430 \u0434\u0438\u0441\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0438\u0432\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0438\u0441\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u2014 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0438\u0434\u043d\u043e \u0435\u0441\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0434\u0438\u0441\u043a \u0431\u0443\u0434\u0435\u0442 \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c <em>dd<\/em> \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u041d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0434\u0438\u0441\u043a\u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0443\u043f\u043e\u0440\u043d\u043e \u0442\u0432\u0435\u0440\u0434\u044f\u0442 \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0445 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 512 \u0431\u0430\u0439\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 ZFS \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e 4KiB \u0441\u0435\u043a\u0442\u043e\u0440\u0430\u0445 (<em>vfs.zfs.min_auto_ashift=12<\/em>) \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f pool. \u041e\u0449\u0443\u0442\u0438\u043c\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438).<\/p>\n<p>  \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f LZ4 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u042d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 fallback \u0434\u043e \u00ab\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e\u00bb \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 overhead-\u0430 \u043d\u0430 \u043d\u0435\u0441\u0436\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0435\u0439 sparse \u0431\u043b\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0438\u0441\u043a, \u0447\u0435\u0433\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u041d\u0430 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0445 dataset-\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Skein \u0445\u044d\u0448 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u2014 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043e\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 SHA256, \u0430 \u043d\u0435 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e.<\/p>\n<p>  <em>atime<\/em> \u0432\u0435\u0437\u0434\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d, \u0437\u0430 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u043c overhead-\u043e\u043c. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0433\u0434\u0435 \u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u2014 \u0440\u0430\u0437\u0434\u0435\u043b \u0441 \u043f\u043e\u0447\u0442\u043e\u0439 \u0432 Maildir-\u0430\u0445. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e <em>recordsize=1M<\/em> \u043d\u0430 dataset-\u0430\u0445 \u0433\u0434\u0435 \u0441\u043a\u043b\u0430\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0444\u0438\u043b\u044c\u043c\u044b, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p>\n<p>  Swap \u0440\u0430\u0437\u0434\u0435\u043b \u0432 <em>\/etc\/fstab<\/em> \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043f\u0438\u0441\u043a\u0443 <em>.eli<\/em> (<em>\/dev\/gpt\/SWAP.eli<\/em>), \u0447\u0442\u043e\u0431\u044b FreeBSD \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e GELI \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0446\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0441\u044f\u0434\u0443\u0442 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p>\n<p>  \u0412\u0430\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0443 \u043c\u0435\u043d\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 ZFS pool-\u0430\u0445 \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 GELI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f ZVOL-\u0430\u043c\u0438. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (\u043f\u043e\u0447\u0442\u0430) \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438, \u0442\u043e \u0432\u0445\u043e\u0436\u0443 \u043f\u043e\u0434 root-\u043e\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GELI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 ZFS pool-\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043d\u0435 \u043d\u0435 \u00ab\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u00bb \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u0441 \u0432\u0430\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0435\u0441\u043b\u0438\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u043e\u043c \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c \u0432 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0438\u043c\u0435\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041d\u043e \u0432 \u043c\u043e\u0451\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043d\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u0435\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445. \u0418\u043d\u043e\u0433\u0434\u0430 \u044f \u0434\u0435\u043b\u0430\u043b <em>mtree<\/em> \u0441\u043b\u0435\u043f\u043e\u043a \u043d\u0435\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0445\u0440\u0430\u043d\u044f \u0435\u0433\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0438 \u0447\u0435\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043e.<\/p>\n<p>  \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u0434\u0435\u043b\u0430\u044e \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0443\u0447\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u0438\u043f\u0430 <em>zfs send -R\u2026 | zstd | gpg -e\u2026 &gt; &#8230;<\/em>, \u0442\u0430\u043a \u0438 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u043c <a href=\"http:\/\/www.git.stargrave.org\/?p=dotfiles.git;a=blob;f=bin\/bin\/zsnap.zsh\" rel=\"nofollow noopener noreferrer\">zsnap<\/a> \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u0441 <em>snap<\/em> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e snapshot, <em>sync \/path<\/em> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043d\u0430 \u043d\u0451\u043c \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043c\u043f\u043e\u0432.<\/p>\n<h2>X11<\/h2>\n<p>  \u0414\u0430\u0432\u043d\u044b\u043c \u0434\u0430\u0432\u043d\u043e \u044f \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b FreeBSD, \u0431\u0435\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 X11. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 GNU\/Linux, \u0432 \u043d\u0451\u043c \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0438 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430 \u0438 \u043c\u044b\u0448\u043a\u0430 \u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e X11, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0451\u043c \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442, \u0434\u0430 \u0438 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u043b\u0438 PDF-\u043a\u0443.<\/p>\n<p>  Xorg-\u0443 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e \u0431\u0440\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u044b\u0448\u043a\u043e\u0439 \u043d\u0430 \u0441\u0435\u0431\u044f (<em>Option \u00abAutoAddDevices\u00bb \u00abfalse\u00bb<\/em> \u0432 <em>\/etc\/X11\/xorg.conf<\/em>), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u00ab\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e\u00bb \u043c\u044b\u0448\u044c \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c <em>moused<\/em>: <em>Option \u00abDevice\u00bb &quot;\/dev\/sysmouse&quot;<\/em>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u044b\u0448\u043a\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438 \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438 \u0434\u043b\u044f X11, \u043f\u043b\u044e\u0441, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c, \u0431\u044b\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0437\u0430\u0433\u0432\u043e\u0437\u0434\u043a\u0438 \u043a hotplug-\u043e\u043c \u0432 X11.<\/p>\n<p>  \u0414\u043b\u044f \u0431\u044b\u0432\u0448\u0435\u0433\u043e \u0442\u0440\u044d\u043a\u0431\u043e\u043b\u0430 Logitech Marble, \u0431\u0435\u0437 \u043a\u043e\u043b\u0435\u0441\u0430 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u0435\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0436\u0438\u043c\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u0447\u0435\u043a. \u0414\u0435\u043c\u043e\u043d (\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0435\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u00ab\u0434\u0435\u0439\u043c\u043e\u043d\u00bb, \u0438\u0431\u043e \u044d\u0442\u043e \u00abdaemon\u00bb, \u0430 \u043d\u0435 \u00abdemon\u00bb) <em>moused<\/em> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0441 \u043e\u0441\u043e\u0431\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e USB-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<pre> ----- \/etc\/devd\/mymouse.conf ----- attach 20 {         device-name &quot;ums[0-9]&quot;;         match &quot;vendor&quot; &quot;0x046d&quot;;         match &quot;product&quot; &quot;0xc408&quot;;         action &quot;\/usr\/sbin\/moused -p \/dev\/$device-name \\             -I \/var\/run\/moused.$device-name.pid -w 5 -m 2=4&quot;; }; <\/pre>\n<p>  \u0420\u0430\u0437 \u0437\u0430\u043b\u0435\u0437\u043b\u0438 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 <em>devd<\/em>, \u0442\u043e \u0432\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f bitperfect \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043d\u0435\u0448\u043d\u0435\u0439 USB \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b:<\/p>\n<pre> ----- \/etc\/devd\/myaudio.conf ----- attach 20 {     device-name &quot;uaudio[0-9]&quot;;     match &quot;vendor&quot; &quot;^0x0b05$&quot;;     match &quot;product&quot; &quot;^0x17f3$&quot;;     action &quot;\/etc\/devd\/myaudio-asus.sh $vendor $product&quot;; }; <\/pre>\n<pre> ----- \/etc\/devd\/myaudio-asus.sh ----- #!\/bin\/sh [ $# -eq 2 ] || exit 1 vendor=$1 product=$2 uaudio=$(sysctl dev.uaudio | sed -n &quot;s\/^dev\\.uaudio\\.\\([^.]*\\)\\..*vendor=$vendor     product=$product.*\\$\/\\1\/p&quot;) pcm=$(sysctl dev.pcm | sed -n &quot;s\/^dev\\.pcm\\.\\([^.]*\\)\\.%parent: uaudio$uaudio\\$\/\\1\/p&quot;) \/sbin\/sysctl dev.pcm.$pcm.bitperfect=1 <\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 (\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439\u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430) \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f CapsLock-\u043e\u043c:<\/p>\n<pre> ----- \/etc\/X11\/xorg.conf ----- Section &quot;InputDevice&quot;         Identifier  &quot;Keyboard0&quot;         Driver      &quot;kbd&quot;         Option &quot;XkbRules&quot; &quot;xorg&quot;         Option &quot;XkbLayout&quot; &quot;us,ru&quot;         Option &quot;XkbOptions&quot; &quot;grp:caps_toggle,grp_led:caps&quot; EndSection <\/pre>\n<p>  \u042f \u043c\u043d\u043e\u0433\u043e \u043f\u0438\u0448\u0443 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u0434\u0432\u0443\u0445 \u043a\u043b\u0430\u0432\u0438\u0448 \u043e\u0442\u043f\u0430\u0434\u0430\u044e\u0442. Shift+CapsLock \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0443\u043c\u043a\u0443 CapsLock-\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043d\u0430 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443, \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f CapsLock \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0433\u0434\u0435 \u0432 tray \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f\u0437\u044b\u043a \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u0438\u0431\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u043e\u043c X11 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442:<\/p>\n<pre> ----- ~\/.xinitrc ----- #!\/bin\/zsh xsetroot -solid \\#222222 xset b off xrdb ~\/.Xresources xmodmap ~\/.Xmodmap ~\/bin\/xstatusbar.sh &amp; rm -f ~\/.ssh\/agent ; ssh-agent -a $SSH_AUTH_SOCK exec ~\/src\/suckless\/dwm\/dwm <\/pre>\n<ul>\n<li><em>xsetroot<\/em> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430. \u041b\u0438\u0448\u044c \u0431\u044b \u043d\u0435 \u0431\u0438\u043b \u043f\u043e \u0433\u043b\u0430\u0437\u0430\u043c.<\/li>\n<li><em>xset b<\/em> \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0447\u0435\u0440\u043d\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 timeout-\u0430, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0433\u0430\u044e\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 DPMS.<\/li>\n<li>SSH \u0430\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430 \u0432\u0441\u044e X11-\u0441\u0435\u0441\u0441\u0438\u044e. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0439 <em>.xinitrc<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <em>zsh<\/em> \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f <em>~\/.zshenv<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d <em>SSH_AUTH_SOCK<\/em>.<\/li>\n<\/ul>\n<p>  <em>~\/.Xmodmap<\/em> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 mapping-\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u043c\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438 \u043c\u043e\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 XF86 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438:<\/p>\n<pre> ----- ~\/.Xmodmap ----- keycode 92 = XF86AudioRaiseVolume keycode 170 = XF86AudioLowerVolume keycode 190 = XF86AudioMute keycode 184 = XF86AudioNext keycode 189 = XF86AudioPrev keycode 147 = XF86AudioPlay <\/pre>\n<p>  \u042d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432 <em>mpv<\/em> \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0440\u044d\u043a\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c\u044e. \u0411\u043e\u043b\u044c\u043d\u043e \u043d\u0430\u0434\u043e \u043b\u0438 \u044d\u0442\u043e? \u041d\u0435\u0442, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0438?<\/p>\n<pre> ----- ~\/.Xresources ----- Xft.dpi: 96 Xft.hinting: true Xft.antialias: true Xft.autohint: false <\/pre>\n<p>  \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0448\u0440\u0438\u0444\u0442\u043e\u0432. \u0414\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 autohinting \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d, \u043d\u043e \u043c\u043d\u0435 \u0442\u0430\u043a \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u0435\u0435.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/dwm.suckless.org\/\" rel=\"nofollow noopener noreferrer\">DWM<\/a>. \u041c\u043d\u0435 \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0443\u0436\u0434 \u0441 \u043a\u043e\u043d\u0446\u0430 2000-\u0445. <em>dwm<\/em> \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u043c\u0438. \u0421\u043c\u044b\u0441\u043b\u0430 \u0432 i3, awesome \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u0445 \u043d\u0435 \u0432\u0438\u0436\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0430 <em>dwm<\/em>, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0431\u043e\u043b\u0435\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u0435\u043d \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e \u0441\u0443\u0442\u0438 \u0443 \u043c\u0435\u043d\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f non-default \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430:<\/p>\n<pre> ----- ~\/src\/suckless\/dwm\/config.h ----- static const Rule rules[] = {     { &quot;Xombrero&quot;, NULL, NULL,  1 &lt;&lt; 8, 0, -1 },     { NULL, NULL, &quot;Terminal9&quot;, 1 &lt;&lt; 8, 0, -1 },     { NULL, NULL, &quot;Terminal8&quot;, 1 &lt;&lt; 7, 0, -1 },     { NULL, NULL, &quot;Terminal7&quot;, 1 &lt;&lt; 6, 0, -1 },     { NULL, NULL, &quot;Terminal6&quot;, 1 &lt;&lt; 5, 0, -1 },     { NULL, NULL, &quot;Terminal5&quot;, 1 &lt;&lt; 4, 0, -1 },     { NULL, NULL, &quot;Terminal4&quot;, 1 &lt;&lt; 3, 0, -1 },     { NULL, NULL, &quot;Terminal3&quot;, 1 &lt;&lt; 2, 0, -1 },     { NULL, NULL, &quot;Terminal2&quot;, 1 &lt;&lt; 1, 0, -1 },     { NULL, NULL, &quot;Terminal1&quot;, 1, False, -1 }, }; <\/pre>\n<p>  \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0442\u044d\u0433 \u043e\u043a\u043d\u0430\u043c \u0441 <em>TerminalX<\/em> \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u043e \u0441\u0443\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b.<\/p>\n<p>  <em>dwm<\/em> \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 statusbar, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c (\u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0438 \u043d\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043d\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e):<\/p>\n<pre> ----- ~\/bin\/xstatusbar.sh ----- #!\/bin\/sh while :; do     life=$(apm -l)     flags=&quot;$(ls \/tmp\/stargrave-flags | perl -e 'print join &quot; &quot;, sort map         { chomp and $_ } &lt;&gt;')&quot;     topinfo=$(top -b -d 1 0 | sed s\/[,:]\/\/g)     meminfo=$(echo &quot;$topinfo&quot; | grep &quot;^Mem&quot;)     arcinfo=$(echo &quot;$topinfo&quot; | grep &quot;^ARC&quot;)     swpinfo=$(echo &quot;$topinfo&quot; | perl -ne 'print $1 if         \/^Swap \\w+ Total (\\w+) Used\/')     xsetroot -name &quot;$swpinfo   $meminfo   $arcinfo [$flags] $life%         $(date &quot;+%Y-%m-%dT%H:%M:%S&quot;)&quot;     sleep 20 done <\/pre>\n<p>  \u0412 \u043d\u0451\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f: \u0432\u0440\u0435\u043c\u044f, \u0434\u0430\u0442\u0430, \u0437\u0430\u0440\u044f\u0434 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0444\u043b\u0430\u0433\u0438, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 (<em>297M Active, 352M Inact, 1007M Wired, 6165M Free<\/em>), \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 ARC (ZFS \u043a\u044d\u0448) (<em>560M Total, 286M MFU, 253M MRU, 3326K Anon, 4864K Header, 13M Other<\/em>) \u0438 swap \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0439 \u0432 statusbar, \u043d\u043e \u0434\u0432\u0443\u0445 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0447\u0451\u0442\u043a\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0444\u043b\u0430\u0433\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430 \u0432 <em>\/tmp\/stargrave-flags<\/em>:<\/p>\n<ul>\n<li><em>FM<\/em> \u2014 fetching mail, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e POP3 \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/li>\n<li><em>WG<\/em> \u2014 web GUI, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443 \u043c\u0435\u043d\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f GUI \u0431\u0440\u043e\u0443\u0437\u0435\u0440 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f URL-\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u0424\u043b\u0430\u0433\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (\u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 GUI \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u0435? <em>touch \/tmp\/stargrave-flags\/WG<\/em> \u0438\u043b\u0438 <em>rm<\/em> \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0444\u043b\u0430\u0433. \u041a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435, \u0442\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e <em>FM<\/em> \u0444\u043b\u0430\u0433, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u043a\u0430\u043d\u0430\u043b\u044b \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u0438.<\/p>\n<h2>MRA \u0438 MDA<\/h2>\n<p>  \u041a\u0442\u043e \u0438 \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0444\u043b\u0430\u0433 <em>FM<\/em> \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0443? \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c crontab:<\/p>\n<pre> ----- crontab -u stargrave -l ----- 0  12  *  *  *  newsyslog -r -f $HOME\/.newsyslog.conf 0  1   *  *  *  find $HOME\/secure\/vim -type f -atime +1 -delete 0  1   *  *  *  d=$( date -j -v +7d &quot;+\\%y-\\%m&quot; ) ; [ -e $HOME\/mail\/mbox ] &amp;&amp; {     umask 077 ;     for mbox in back XXX sent ; do         for subdir in cur new tmp ; do             mkdir -p $HOME\/mail\/$mbox-$d\/$subdir ;         done ;     done } 11  *\/6  *  *  *  [ -e \/tmp\/stargrave-flags\/FM ] &amp;&amp; fdm -q -a XXX fetch || : <\/pre>\n<p>  \u0420\u043e\u0442\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u043e\u0432 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0436\u0443\u0440\u043d\u0430\u043b\u0443 <em>maildrop<\/em> (\u0440\u0430\u043d\u044c\u0448\u0435 \u0431\u044b\u043b\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435), \u043d\u043e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0436\u0435 \u044d\u0442\u0443 \u0440\u043e\u0442\u0430\u0446\u0438\u044e \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 newsyslog?<\/p>\n<pre> ----- ~\/.newsyslog.conf ----- \/home\/stargrave\/mail\/mailfilter.log stargrave:stargrave 600 1 100 * CYN <\/pre>\n<p>  \u0412 \u043e\u0447\u0438\u0441\u0442\u043a\u0435 Vim \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e. \u0412 <em>~\/secure\/vim<\/em> \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0442\u0438\u043f\u0430 <em>tmp<\/em>, <em>undo<\/em> \u0438 <em>view<\/em>. \u0410 \u0441\u0430\u043c <em>~\/secure<\/em> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u043e\u0441\u044f\u0434\u0443\u0442 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>fetchmail<\/em> MRA \u0434\u043b\u044f \u0437\u0430\u0431\u043e\u0440\u0430 \u043f\u043e\u0447\u0442\u044b \u043f\u043e POP3\/IMAP4. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/nicm\/fdm\" rel=\"nofollow noopener noreferrer\">fdm<\/a>. \u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439: fetchmail \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0432 \u043b\u043e\u0433 \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u0442\u0430\u043c\u043f, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0438 \u043a\u0430\u043a\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0447\u0442\u044b \u0431\u044b\u043b\u0430. \u041f\u043b\u044e\u0441 <em>fdm<\/em> \u0443\u043c\u0435\u0435\u0442 \u0431\u0440\u0430\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 <em>.netrc<\/em>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 <em>fdm<\/em> \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043b \u0442\u043e\u0433\u043e.<\/p>\n<p>  \u0412\u0441\u0435 MRA \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a, \u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 SMTP \u0441\u0435\u0440\u0432\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u0433\u0438\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u0430\u043b\u044c\u0448\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0447\u0435\u0440\u0435\u0437 MDA. \u0412 <em>fdm<\/em> \u0434\u0435\u043b\u0430\u044e \u0432\u043e\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0441 POP3 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432:<\/p>\n<pre> action &quot;lmtp-XXX&quot; smtp server &quot;localhost&quot; to &quot;stargrave+XXX@stargrave.org&quot; <\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"http:\/\/www.procmail.org\/\" rel=\"nofollow noopener noreferrer\">procmail<\/a> MDA, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0431\u0440\u043e\u0441\u0438\u043b\u0438. \u0416\u0430\u043b\u0435\u043b \u0447\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 <a href=\"https:\/\/www.courier-mta.org\/maildrop\/\" rel=\"nofollow noopener noreferrer\">maildrop<\/a>. \u0415\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433 \u0447\u0438\u0449\u0435, \u043f\u0440\u043e\u0449\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435. \u0421 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0441\u0432\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u0441\u043e\u0442\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 <em>.procmailrc<\/em> \u043f\u0435\u0440\u0435\u0432\u0451\u043b \u043d\u0430 \u044f\u0437\u044b\u043a <em>maildrop<\/em>.<\/p>\n<p>  \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0442\u043e <em>maildrop<\/em> \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <em>procmail<\/em>, \u0442\u0430\u043a \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Maildir \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432. \u0410 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u044f\u0449\u0438\u043a\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043f\u0438\u0439 \u0432\u0441\u0435\u0445 \u043f\u0438\u0441\u0435\u043c \u0437\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 crontab \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430 \u044f\u0449\u0438\u043a\u043e\u0432 \u0432\u0438\u0434\u0430 <em>back-21-06<\/em>, <em>sent-21-06<\/em>.<\/p>\n<p>  <em>maildrop<\/em> \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043f\u0438\u0441\u044c\u043c\u0430 \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u044f\u0449\u0438\u043a\u0430\u043c. \u0412\u0441\u0451 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre> ----- ~\/.mailfilter ----- logfile $HOME\/mail\/mailfilter.log REFORMAIL=\/usr\/local\/bin\/reformail MAILDIR=$HOME\/mail DEFAULT=$MAILDIR\/mbox SPAM=$MAILDIR\/spam  if ( \/^Delivered-To:.*stargrave.XXX@stargrave.org\/ &amp;&amp; \\     ! \/^From:.* &lt;monit@.*stargrave.org\/ &amp;&amp; \\     ! \/^From:.* Cron Daemon\/ )     cc $MAILDIR\/XXX-`date &quot;+%y-%m&quot;`  if ( ! \/^To:\/ )     to $SPAM if ( ! \/^Subject:\/ )     to $SPAM if ( \/^To: Recipients\/ )     to $SPAM if ( \/^To: .*(undisclosed|unlisted)-recipients\/ )     to $SPAM if ( \/^Received-SPF:.*fail\/ )     to $SPAM if ( \/^X-Mailer:.*Microsoft Office Outlook\/ )     to $SPAM if ( \/^X-Mailer:.*Microsoft Outlook Express\/ )     to $SPAM  if ( \/^From:.*Amazon\/ )     to \/dev\/null if ( \/^Subject:.*10K LinkedIn\/ )     to \/dev\/null if ( \/^Subject:.*100K Leads\/ )     to \/dev\/null if ( \/^From:.*Susan Taylor\/ )     to \/dev\/null  if ( \/^To:.*junk.*@stargrave.org\/ )     xfilter &quot;$REFORMAIL -a'X-Label: JUNK'&quot;  if ( \/^(To|Cc):.*debian-russian@lists.debian.org\/ )     to $MAILDIR\/debian if ( \/^(To|Cc):.*gnupg-(announce|devel|doc|ru|users)@gnupg.org\/ )     to $MAILDIR\/gnupg if ( \/^(To|Cc):.*@suckless.org\/ )     to $MAILDIR\/suckless if ( \/^To:.*comment@blog.stargrave.org\/ ) {     cc $MAILDIR\/back-`date &quot;+%y-%m&quot;`     to $MAILDIR\/blog-comment } <\/pre>\n<h2>\u0421\u0435\u0442\u044c<\/h2>\n<p>  \u0412\u0441\u044f \u0441\u0435\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 IPv6 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. <a href=\"https:\/\/habr.com\/ru\/post\/490378\/\">\u041e\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e<\/a>. IPv4 \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 legacy IPv4 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441 IPv4 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0438 \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u0442\u043e\u043b\u043a\u043e\u043c \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0438 \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0443\u0436\u0435 \u0443\u0439\u043c\u0443 \u043b\u0435\u0442.<\/p>\n<p>  \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e IPsec: \u044f\u0434\u0435\u0440\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f AES-GCM ESP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, <a href=\"https:\/\/strongswan.org\/\" rel=\"nofollow noopener noreferrer\">strongSwan<\/a> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f IKEv2. \u0415\u0441\u043b\u0438 \u043c\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c masterslave \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438, \u0442\u043e \u0433\u043e\u0432\u043e\u0440\u044e \u0441\u0432\u043e\u0435\u043c\u0443 IKE \u0434\u0435\u043c\u043e\u043d\u0443 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438:<\/p>\n<pre> ----- \/usr\/local\/etc\/ipsec.conf ----- conn nsd-interconnect         left=2a04::XXX         leftid=@dns-master.stargrave.org         right=2001::YYY         rightid=@dns-slave.stargrave.org         type=transport         auto=route <\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. AES-GCM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e AEAD \u0448\u0438\u0444\u0440, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b \u044f\u0434\u0440\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e ChaCha20-Poly1305, \u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u0431\u044b \u0435\u0433\u043e. \u0412\u043e\u043f\u0440\u043e\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0410 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e *25519 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e: \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0438 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c:<\/p>\n<pre> ----- \/usr\/local\/etc\/ipsec.conf ----- conn %default         keyexchange=ikev2         ike=aes128gcm16-aesxcbc-x25519!         esp=aes128gcm16-x25519!         authby=psk         compress=no         mobike=no         reauth=no         dpdaction=clear         keyingtries=%forever  conn ndp-ns         right=::1         leftsubnet=fc00::\/8[ipv6-icmp\/135]         rightsubnet=fc00::\/8[ipv6-icmp\/135]         type=passthrough         auto=route  conn ndp-na         right=::1         leftsubnet=fc00::\/8[ipv6-icmp\/136]         rightsubnet=fc00::\/8[ipv6-icmp\/136]         type=passthrough         auto=route <\/pre>\n<p>  \u0437\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 ICMPv6 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f as-is, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b NDP. \u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <em>fc00::<\/em> site-local \u0441\u0435\u0442\u044c? \u042f \u0431\u044b \u0438 \u0445\u043e\u0442\u0435\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c link-local \u0430\u0434\u0440\u0435\u0441\u0430, \u043d\u043e \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 strongSwan.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IPsec \u043c\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 IPv6, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0430 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0433\u0434\u0435 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 TCP \u0441\u0435\u0441\u0441\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 IPsec \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e.<\/p>\n<p>  \u041e\u0421 \u044f\u0432\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u044e \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u043e\u0440. \u0410 \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e mapping IPv4 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432 IPv6, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0438\u043c \u043d\u0430 <em>::\/0<\/em> \u0430\u0434\u0440\u0435\u0441\u0435 \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0432 IPv4 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435:<\/p>\n<pre> ----- \/etc\/rc.conf ----- ip6addrctl_enable=&quot;YES&quot; ip6addrctl_policy=&quot;ipv6_prefer&quot; ipv6_ipv4mapping=&quot;YES&quot; <\/pre>\n<p>  \u0423\u0432\u0430\u0436\u0430\u044e <a href=\"https:\/\/www.wireguard.com\/\" rel=\"nofollow noopener noreferrer\">WireGuard<\/a> \u0438 \u043e\u0434\u043e\u0431\u0440\u044f\u044e \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434: \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435 IPsec, \u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u0431\u044b WireGuard!<\/p>\n<p>  \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u0441 NAS-\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e NFS. \u041d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e NFSv4 (<em>vfs.nfsd.server_min_nfsvers=4<\/em>), \u0430 \u0435\u0441\u043b\u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u0442\u043e v4.1+ (<em>nfsv4,minorversion=1<\/em> \u043e\u043f\u0446\u0438\u044f \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <em>fstab<\/em>). NFSv4 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 NFSv3: \u0434\u043b\u044f \u043c\u0435\u043d\u044f, \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u043d \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u0435\u043d \u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 (\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043a\u0443\u0447\u0430 \u0434\u0435\u043c\u043e\u043d\u043e\u0432) \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u043b firewall-\u0430, \u0433\u0434\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d \u043e\u0434\u0438\u043d TCP \u043f\u043e\u0440\u0442. \u041d\u0435 \u0442\u0440\u043e\u0433\u0430\u044e <em>\/etc\/exports<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <em>zfs set sharenfs<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 NFS \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e <a href=\"http:\/\/www.nncpgo.org\/\" rel=\"nofollow noopener noreferrer\">NNCP<\/a> \u2014 \u0441\u0432\u043e\u0451 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443 UUCP. \u041f\u043e \u0441\u0443\u0442\u0438, NFS \u0443 \u043c\u0435\u043d\u044f \u0434\u043b\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0430 \u0441\u0430\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0434\u0451\u0442 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 NNCP, \u043a\u0430\u043a \u043f\u043e \u0441\u0435\u0442\u0438, \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 \u0444\u043b\u0435\u0448\u043a\u0438\/\u0434\u0438\u0441\u043a\u0438\/\u043b\u0435\u043d\u0442\u044b.<\/p>\n<p>  \u042f \u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b NFS \u043f\u043e\u0432\u0435\u0440\u0445 TLS, \u043d\u043e \u0438\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u0443\u0431\u0435\u0436\u0434\u0451\u043d \u0432 \u0443\u0449\u0435\u0440\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0430\u0440\u0445\u0430\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0438 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430. \u0412 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 TLS \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e: \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c IPsec (\u0441 IPv6), \u0433\u0434\u0435 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u00ab\u0430\u043d\u043e\u043d\u0438\u043c\u043d\u0430\u00bb (<a href=\"https:\/\/datatracker.ietf.org\/wg\/btns\/about\/\" rel=\"nofollow noopener noreferrer\">BTNS<\/a>), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043e\u043b\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 (\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 TLS, \u0433\u0434\u0435 \u043a\u043b\u0438\u0435\u043d\u0442 \u0430\u043d\u043e\u043d\u0438\u043c\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e). \u041d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0433\u0434\u0435 TLS \u0432\u0448\u0438\u0442 by design (\u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f IPsec, \u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0435 \u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438).<\/p>\n<p>  \u041c\u043e\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 firewall-\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a NFS \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0435 \u0438\u0437 IPsec-secured IPv6 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439. \u0421\u0430\u043c \u0444\u0430\u043a\u0442 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u0443\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 firewall \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0436\u0438\u0437\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>ipfw<\/em>. \u041e\u043d \u043c\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445. <em>ipf<\/em> \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0432\u0430\u0442 \u0438 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043c\u043e\u0438\u0445 \u043d\u0443\u0436\u0434 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. <em>pf<\/em> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u0434\u0430 \u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0432 FreeBSD \u0441\u0438\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0447\u0435\u043c \u0432 OpenBSD, \u043f\u043b\u044e\u0441 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0417\u0430\u0442\u0435\u0439\u043b\u0438\u0432\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0435\u0442. \u0421\u0430\u043c\u044b\u0439 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 firewall, \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u044e\u0449\u0438\u0439 \u0432\u0441\u0451 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 stateful \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0440\u0443\u0436\u0443. \u0421\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0432 \u043d\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>table<\/em> \u0434\u043b\u044f \u00ab\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u00bb \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 IPv4\/IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438).<\/p>\n<p>  \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u044e <em>deny all from any to any frag<\/em> \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u044e\u0449\u0435\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 IPv4 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c path MTU discovery, \u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0437\u043b\u0438\u0448\u043d\u044e\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e ICMPv6, ESP \u0438 SSH \u0442\u0440\u0430\u0444\u0438\u043a\u0430. \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 ESP \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 SA \u0432 \u044f\u0434\u0440\u0435, \u0430 SSH \u0434\u0435\u043c\u043e\u043d\u0443 \u0434\u043e\u0432\u0435\u0440\u044f\u044e \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f.<\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e <em>deny log all from any to any<\/em> \u2014 \u0435\u0441\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 sysctl \u044f\u0432\u043d\u043e \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0449\u0443\u0442\u0438\u043c\u043e\u0433\u043e overhead-\u0430, \u0437\u0430\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 firewall-\u0430 \u044f\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f log \u0434\u043b\u044f \u0432\u044b\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 OpenSSH \u0434\u0435\u043c\u043e\u043d\u0430 \u0442\u043e\u0436\u0435 \u0431\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0441\u0442\u0435\u0439. \u041f\u0435\u0440\u0432\u044b\u043c \u0436\u0435 \u0434\u0435\u043b\u043e\u043c \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u0430\u0440\u043e\u043b\u044f\u043c, \u0432 \u043a\u0440\u0430\u0439\u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430. \u0410 \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u0430 \u043f\u043e\u0434 root-\u043e\u043c.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 root \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c <em>su<\/em>. <em>sudo<\/em> \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e: \u0441\u043b\u043e\u0436\u043d\u0435\u0439\u0448\u0430\u044f overengineered \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u043a\u043e\u043c\u0443, \u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438\u0437-\u0437\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442. \u0423 \u043c\u0435\u043d\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u0436\u0438\u0437\u043d\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0442\u0434\u0430\u0447\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0445\u043e\u0434\u0430 \u043f\u043e\u0434 root-\u043e\u043c. \u0418 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u043b\u0430\u0441\u044c <em>doas<\/em> \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439, \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0438\u0437 OpenBSD. <em>doas<\/em> \u044d\u0442\u043e <em>sudo<\/em> \u043a\u0430\u043a\u0438\u043c \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b\u0442\u044c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<p>  \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b OpenSSH \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432:<\/p>\n<pre> ----- ~\/.ssh\/config ----- Protocol 2 IdentitiesOnly yes Compression no  Host *     HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,                       ssh-ed25519,                       ssh-rsa-cert-v01@openssh.com,ssh-rsa     KexAlgorithms curve25519-sha256@libssh.org,                   diffie-hellman-group-exchange-sha256,                   diffie-hellman-group-exchange-sha1,                   diffie-hellman-group14-sha1     Ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes128-ctr     MACs umac-128-etm@openssh.com,          hmac-sha2-512-etm@openssh.com,          hmac-sha2-256-etm@openssh.com,          umac-128@openssh.com,          hmac-sha2-512,          hmac-sha2-256,          hmac-sha1     ControlMaster auto     ControlPath ~\/.ssh\/sockets\/%r@%h-%p     ControlPersist 60 <\/pre>\n<p>  <em>Compression<\/em> \u0443 \u043c\u0435\u043d\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u043f\u043e\u0436\u0430\u0440\u043d\u044b\u0439 \u2014 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u0436\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (<em>scp<\/em>), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0431\u043e \u043d\u0435\u0441\u0436\u0438\u043c\u0430\u0435\u043c\u044b, \u043b\u0438\u0431\u043e \u0431\u0443\u0434\u0443\u0442 \u043b\u0443\u0447\u0448\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 (\u043d\u0435 \u0443\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u0432 CPU) \u0441\u0436\u0430\u0442\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0447\u0435\u0440\u0435\u0437 <em>zstd<\/em>-pipe. \u041a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c <em>tmux<\/em>.<\/p>\n<p>  \u0418\u0437 \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0435 \u043a *25519 \u0438\u043b\u0438 *448 \u043a\u0440\u0438\u0432\u044b\u043c \u2014 \u0437\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\/\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c. \u041a ChaCha20-Poly1305 \u0448\u0438\u0444\u0440\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0435 AEAD \u0440\u0435\u0436\u0438\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u044b AES, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0438\u0437 <em>MACs<\/em> \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e <em>aes*-ctr<\/em> \u0440\u0435\u0436\u0438\u043c \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 AEAD.<\/p>\n<p>  SHA2-512 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e SHA2-256, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 64-\u0431\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HMAC-SHA1, \u0432\u0435\u0434\u044c SHA1 is already broken? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f HMAC \u2014 SHA1 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d, \u043a\u0430\u043a \u0438 MD5.<\/p>\n<p>  <em>Control*<\/em> \u043e\u043f\u0446\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0434\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 SSH \u0441\u0435\u0441\u0441\u0438\u044f \u0434\u043e \u043c\u0430\u0448\u0438\u043d\u044b, \u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0432\u044b\u0437\u043e\u0432\u044b <em>scp<\/em> \u043d\u0430 \u043d\u0435\u0451 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0432\u0435\u0434\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u044f \u0441 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043c\u0430\u0441\u043e\u043a \u043f\u043e\u0434\u0441\u0435\u0442\u0438, PTR \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043b\u044e\u0431\u043b\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"http:\/\/jodies.de\/ipcalc\" rel=\"nofollow noopener noreferrer\">sipcalc<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0443.<\/p>\n<p>  \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0449\u0438\u0439 DNS \u0441\u0435\u0440\u0432\u0435\u0440 <a href=\"https:\/\/unbound.net\/\" rel=\"nofollow noopener noreferrer\">Unbound<\/a>. \u041d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 VPN-\u0430 \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 DNS \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u0445\u043e\u0447\u0443: \u0437\u0430\u0447\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0443 \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e?<\/p>\n<pre> ----- \/usr\/local\/etc\/unbound\/unbound.conf ----- server:   do-daemonize: no   interface: ::1  forward-zone:   name: &quot;vpn.arbeit.ru&quot;   forward-addr: 2001:470::XXX  forward-zone:   name: &quot;arbeit.ru&quot;   forward-addr: 10.X.Y.Z  forward-zone:   name: &quot;.&quot;   forward-addr: 2001:470::XXX <\/pre>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0435\u0445 \u0437\u043e\u043d\u0430\u0445 \u043d\u0443\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0441 \u043c\u043e\u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e <em>2001:470::XXX<\/em> \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u0440\u043e\u043c\u0435 <em>arbeit.ru<\/em> \u0437\u043e\u043d\u044b, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c override \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0451\u043d, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u0443\u0440\u0438\u0446\u044b \u0438 \u044f\u0439\u0446\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0430\u0440\u043d\u043e\u0433\u043e DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/www.nlnetlabs.nl\/projects\/nsd\/\" rel=\"nofollow noopener noreferrer\">NSD<\/a>. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 BIND! \u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f master\u0438\u0434\u0451\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 IPsec \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430. \u041d\u043e NSD \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u2014 \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c \u0441\u0442\u043e\u0438\u0442 <a href=\"http:\/\/curvedns.on2it.net\/\" rel=\"nofollow noopener noreferrer\">CurveDNS<\/a> <a href=\"http:\/\/dnscurve.org\/\" rel=\"nofollow noopener noreferrer\">DNSCurve<\/a>-\u0441\u0435\u0440\u0432\u0435\u0440, \u043e\u0442\u0434\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 WHOIS, \u043e\u0442\u0432\u0435\u0442\u044b. \u0411\u0443\u0434\u0443\u0447\u0438 \u0448\u0438\u0444\u0440\u043e\u043f\u0430\u043d\u043a\u043e\u043c, \u043d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u044e DNSSEC.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 NTP \u0441\u0435\u0440\u0432\u0435\u0440\u0430\/\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f <a href=\"https:\/\/chrony.tuxfamily.org\/\" rel=\"nofollow noopener noreferrer\">chrony<\/a>: \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 (\u0441\u0443\u0434\u044f \u043f\u043e \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u043e\u0442 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445 <em>ntpd<\/em> \u043d\u0430 \u043d\u0435\u0433\u043e). \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 OpenSSH, \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e relay \u0438 DNS \u044f \u0432 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e NTP, \u0438\u0431\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u0435\u043d \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u043e\u0433\u0443 \u043f\u043e\u043d\u044f\u0442\u044c \u0438 \u043f\u0440\u0438\u043a\u0438\u043d\u0443\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0438\u0437-\u0437\u0430 \u0441\u0431\u0438\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<h2>Jail<\/h2>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Jail-\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/www.mumble.info\/\" rel=\"nofollow noopener noreferrer\">Mumble<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Qt \u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 GUI. \u041e\u043d \u0441\u0442\u043e\u0438\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Jail-\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u0434\u0438 \u043e\u0434\u043d\u043e\u0439, \u0438\u0437\u0440\u0435\u0434\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0442\u044f\u043d\u0443\u0442\u044c \u0442\u044f\u0436\u0435\u043b\u0435\u0439\u0448\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 Qt. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432 chroot-\u0435, \u043d\u043e Jail-\u043e\u043c \u0435\u0433\u043e \u0435\u0449\u0451 \u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u044e \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e.<\/p>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Jail-\u0430: <em>\/jail\/skel<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u044e \u0447\u0435\u0440\u0435\u0437 ZFS (<em>zfs clone<\/em>) \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e Jail-\u0430. <em>mount_nullfs<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043c\u043e\u0433\u0443 \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>\/usr\/ports\/distfiles<\/em> \u0432 <em>\/jail\/XXX\/usr\/ports\/distfiles<\/em>, \u0434\u0430\u0432\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044e \u0434\u043e \u043a\u044d\u0448\u0430 \u0443\u0436\u0435 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432.<\/p>\n<p>  \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u0447\u0442\u043e \u0432 Jail-\u0430\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0441\u0435\u0442\u044c\u044e. \u0418 \u043c\u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u0440\u043e\u0449\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u044e \u0435\u0441\u043b\u0438 \u0443 Jail \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0422\u043e \u0447\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>VIMAGE<\/em> \u0432 FreeBSD. \u0410 \u0442\u0430\u043a\u0436\u0435, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c Jail \u0432 bridge \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u0434\u043b\u044f \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f <em>epair<\/em> \u043f\u0430\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a bridge. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 shell-\u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Jail-\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre> ----- \/etc\/jail.conf ----- mount.devfs; allow.raw_sockets; allow.chflags = 1; exec.clean; exec.start = &quot;\/bin\/sh \/etc\/rc&quot;; exec.stop = &quot;\/bin\/sh \/etc\/rc.shutdown&quot;; path = &quot;\/jails\/${name}&quot;; host.hostname = &quot;${name}.stargrave.org&quot;;  mumble {     devfs_ruleset = 14;     vnet = new;     vnet.interface = epairb_${name};     exec.prestart += &quot;\/jail\/net-jail-epair.sh ${name} ;                         ifconfig bridge0 addm epaira_${name}&quot;;     exec.poststop += &quot;ifconfig epaira_${name} destroy&quot;; }  builder {     vnet = new; } <\/pre>\n<pre> ----- \/jail\/net-jail-epair.sh ----- #!\/bin\/sh -ex name=$1 ifconfig epaira_$name &amp;&amp; exit || : epair=$(ifconfig epair create) ifconfig $epair name epaira_$name ifconfig ${epair%a}b name epairb_$name ifconfig epaira_$name up <\/pre>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0440\u043e\u0434\u043d\u043e\u0439 <em>bhyve<\/em>. \u0421\u0430\u043c\u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043d\u0430 ZVOL \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 ZFS-\u0430 \u0438\u0437-\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e overhead. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Ubuntu \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0435\u0451 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0431\u044b\u043b \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre> bhyve -m 2G -w -H \\     -s 0,hostbridge \\     -s 4,ahci-hd,\/dev\/zvol\/zroot\/ubuntu \\     -s 5,virtio-net,tap0 \\     -s 29,fbuf,tcp=127.0.0.1:5900,w=800,h=600,wait \\     -s 30,xhci,tablet \\     -s 31,lpc -l com1,stdio \\     -l bootrom,\/usr\/local\/share\/uefi-firmware\/BHYVE_UEFI.fd ubuntu bhyvectl --destroy --vm=ubuntu <\/pre>\n<p>  UEFI firmware \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c UEFI-aware \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0432 UEFI \u0440\u0435\u0436\u0438\u043c\u0435 \u0442\u043e\u0436\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0443 \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0441 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u0438 XrandR, \u043a\u0440\u043e\u043c\u0435 VESA \u0440\u0435\u0436\u0438\u043c\u0430. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e IPv6 VNC \u0432\u0438\u0434\u0435\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0441\u0442\u0438.<\/p>\n<h2>\u0414\u0435\u043c\u043e\u043d\u044b<\/h2>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0434\u0435\u043c\u043e\u043d\u044b \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c <a href=\"http:\/\/cr.yp.to\/daemontools.html\" rel=\"nofollow noopener noreferrer\">daemontools<\/a>. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u044f\u0445, \u043f\u043e\u0441\u044b\u043b\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 PID-\u043e\u0432, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (CPU, \u043f\u0430\u043c\u044f\u0442\u044c), \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u2014 \u0432\u0441\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0421\u0438.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>lighttpd<\/em> (web-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u043d\u043e\u044e \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c) \u043c\u043e\u0436\u0435\u0442 \u0443\u0439\u0442\u0438 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u0441\u0436\u0438\u0433\u0430\u044e\u0449\u0438\u0439 CPU \u2014 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043f\u0440\u0438\u0431\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e. \u041f\u043b\u044e\u0441 \u0432\u044b\u043f\u043b\u0451\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0436\u0443\u0440\u043d\u0430\u043b \u0432 stderr, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0431\u044b \u043d\u0435 \u043f\u0440\u043e\u0447\u044c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0436\u0443\u0440\u043d\u0430\u043b. \u0425\u043e\u0447\u0443 \u0435\u0449\u0451 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c? \u0410 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0435\u0449\u0451 \u0438 \u0440\u043e\u0442\u0438\u0440\u0443\u044f \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u0442\u0430\u043c\u043f?<\/p>\n<pre> ----- \/var\/service\/lighttpd\/run ----- #!\/bin\/sh -e cfg=\/home\/lighttpd\/etc\/lighttpd.conf cmd=\/home\/lighttpd\/lighttpd\/sbin\/lighttpd exec 2&gt;&amp;1 $cmd -f $cfg -tt exec softlimit -t 300 $cmd -D -f $cfg <\/pre>\n<pre> ----- \/var\/service\/lighttpd\/log\/run ----- #!\/bin\/sh -e exec setuidgid lighttpd multilog t .\/main <\/pre>\n<p>  \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e <em>inetd<\/em> \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438, \u0442\u043e \u0438 \u043e\u043d \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u043d\u0430 <a href=\"http:\/\/cr.yp.to\/ucspi-tcp.html\" rel=\"nofollow noopener noreferrer\">UCSPI-TCP<\/a> \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434 <em>daemontools<\/em>. \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, <em>inetd<\/em>-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0441 UCSPI-TCP \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c:<\/p>\n<pre> ----- \/var\/service\/phlog-ipv6 ----- #!\/bin\/sh -e uid=`id -u lighttpd` gid=`id -g git` addr=`cat addr` exec tcpserver -DRH -u $uid -g $gid -l 0 $addr gopher \\   \/home\/sgblog\/sgblog -gopher \/home\/sgblog\/gopher.hjson <\/pre>\n<p>  \u0410\u0434\u0440\u0435\u0441 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0447\u0442\u043e\u0431\u044b <em>run<\/em> \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 <em>\/var\/service<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445. <em>tcpserver<\/em> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u044f \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u0421\u0438.<\/p>\n<p>  <em>daemontools<\/em> \u043f\u043e\u0434\u0445\u043e\u0434 (\u043a \u043d\u0435\u043c\u0443 \u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 <em>runit<\/em>, <em>s6<\/em>) \u0441\u0447\u0438\u0442\u0430\u044e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0438\u0437 \u0432\u0441\u0435\u0445 \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043b. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438. \u0412\u0435\u0434\u044c \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0442\u0443\u0442 \u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0437\u0430 \u0441\u0447\u0451\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442.<\/p>\n<h2>MTA<\/h2>\n<p>  \u041a\u0430\u043a \u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0439 Unix \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0443 \u043c\u0435\u043d\u044f \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f email \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u0412\u0441\u044e \u0436\u0438\u0437\u043d\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"http:\/\/www.postfix.org\/\" rel=\"nofollow noopener noreferrer\">Postfix<\/a> MTA \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u043c\u044b\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0435, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043a\u0440\u043e\u043c\u0435 <a href=\"https:\/\/www.opensmtpd.org\/\" rel=\"nofollow noopener noreferrer\">OpenSMTPD<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0449\u0435, \u043d\u043e \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043d\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/mlmmj.org\/\" rel=\"nofollow noopener noreferrer\">mlmmj<\/a> (\u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0438\u0437 \u0432\u0441\u0435\u0445 \u0447\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b, \u0436\u0430\u043b\u0435\u044e \u0447\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b \u043d\u0430 \u043d\u0435\u0433\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0441 GNU Mailman-\u0430), \u0434\u0432\u0438\u0436\u043e\u043a \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430, forwarding \u043f\u0438\u0441\u0435\u043c \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u044f\u0449\u0438\u043a\u0438. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0440\u0435\u0442 pipeline, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 reverse DNS, SPF, OpenDKIM, graylisting \u0438 \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0434\u043b\u044f \u0431\u043e\u0440\u044c\u0431\u044b \u0441\u043e \u0441\u043f\u0430\u043c\u043e\u043c. \u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043c\u043e\u0451\u043c \u0448\u043b\u044e\u0437\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f relay-\u0435\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043c\u0430\u0448\u0438\u043d \u0432 \u0441\u0435\u0442\u0438.<\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Postfix \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u0433\u0434\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0438 \u043a\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f SMTP relay-\u0435\u043c:<\/p>\n<pre> ----- \/usr\/local\/etc\/postfix\/main.cf ----- inet_interfaces = localhost relayhost = [mail2.stargrave.org] <\/pre>\n<p>  \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u0435\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445: \u043f\u043e\u0447\u0442\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u043f\u043e SMTP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443, \u0430 \u0447\u0435\u0440\u0435\u0437 NNCP \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442.<\/p>\n<pre> ----- \/usr\/local\/etc\/postfix\/master.cf ----- nncp      unix  -       n       n       -       -       pipe   flags=Fqhu user=stargrave argv=nncp-exec -quiet $nexthop sendmail $recipient <\/pre>\n<pre> ----- \/usr\/local\/etc\/postfix\/main.cf ----- default_transport = nncp:gw <\/pre>\n<pre> ----- \/usr\/local\/etc\/nncp.hjson ----- neigh: { gw: { ..., exec: { sendmail: [&quot;\/usr\/local\/etc\/nncp-sendmail.sh&quot;] } } } <\/pre>\n<pre> ----- \/usr\/local\/etc\/nncp-sendmail.sh ----- #!\/bin\/sh -e tmp=`mktemp` trap &quot;rm -f $tmp&quot; HUP PIPE INT QUIT TERM EXIT cat &gt; $tmp sendmail -f &quot;`reformail -x Return-Path: &lt; $tmp`&quot; $@ &lt; $tmp <\/pre>\n<p>  \u0412\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0447\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 <em>nncp-exec<\/em> \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0435\u0440\u0435\u0437 store-and-forward \u0438\u043b\u0438 online (\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c) \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0441\u0442 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u0436\u0430\u0442\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e (\u0435\u0449\u0451 \u0438 \u0442\u0440\u0430\u0444\u0438\u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u044f, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e SMTP!). \u041f\u0440\u0438\u0451\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <em>sendmail<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 <em>nncp-toss<\/em>, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 NNCP \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  <em>nncp-sendmail.sh<\/em> \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e <em>Return-Path<\/em> \u043f\u043e\u043b\u044f, \u0438\u043d\u0430\u0447\u0435, \u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 <em>sendmail<\/em> \u0432\u044b\u0437\u043e\u0432\u0430, \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u0430. \u042d\u0442\u0430 \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0446\u0435\u043d\u043d\u0430, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043d\u0435\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f \u043e \u043d\u043e\u043c\u0435\u0440\u0430\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u043d\u0430 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0441\u043b\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>Return-Path: &lt;dev+bounces-29073-XXX=stargrave.org@suckless.org&gt;<\/em>).<\/p>\n<p>  \u0414\u043e NNCP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0432\u044f\u0437\u043a\u0443 \u0438\u0437 UUCP \u0438 SSH (\u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 UUCP \u0434\u0435\u043c\u043e\u043d\u0430\u043c\u0438). \u0410 \u0435\u0449\u0451 \u043f\u0440\u0435\u0436\u0434\u0435 \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 SMTP, \u0432 \u043d\u0430\u0434\u0435\u0436\u0434\u0435 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 timeout-\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438 \u0438 \u043f\u043e\u0447\u0442\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u0451\u0440\u0442\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u0430\u043c\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u043e\u043c \u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. UUCP \u0440\u0435\u0448\u0430\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 timeout-\u043e\u0432. NNCP \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0435\u0449\u0451 \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>  \u041d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b POP3 \u0438\u043b\u0438 IMAP4 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u2014 \u044d\u0442\u043e \u0443\u0434\u0435\u043b \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0445 \u043d\u0435-Unix \u0441\u0438\u0441\u0442\u0435\u043c. \u0422\u043e\u043b\u044c\u043a\u043e SMTP \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0434\u0440\u0443\u0433\u0443 \u0434\u0440\u0443\u0433\u0443 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u044f\u0449\u0438\u043a\u0438, \u043f\u0443\u0441\u043a\u0430\u0439 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 TCP \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u044b!<\/p>\n<p>  \u041d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043f\u043e\u0447\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0434\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 POP3), \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c Postfix \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0448\u043b\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 NNCP \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0441 \u043c\u043e\u0438\u043c relay-\u0435\u043c:<\/p>\n<pre> ----- \/usr\/local\/etc\/postfix\/main.cf ----- sender_dependent_relayhost_maps = hash:\/usr\/local\/etc\/postfix\/relayhost_maps sender_dependent_default_transport_maps = hash:\/usr\/local\/etc\/postfix\/transport_maps smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:\/usr\/local\/etc\/postfix\/sasl_passwd smtp_use_tls = yes <\/pre>\n<pre> ----- \/usr\/local\/etc\/postfix\/transport_maps ----- stargrave@arbeit.ru smtp <\/pre>\n<pre> ----- \/usr\/local\/etc\/postfix\/relayhost_maps ----- stargrave@arbeit.ru [mail.arbeit.ru]:587 <\/pre>\n<h2>MUA<\/h2>\n<p>  \u0420\u0430\u0437 \u0443\u0436 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b \u0438 MTA \u0438 MRA \u0438 MDA, \u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0443 \u043a MUA. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"http:\/\/www.mutt.org\/\" rel=\"nofollow noopener noreferrer\">Mutt<\/a>, \u0445\u043e\u0442\u044f \u043f\u0440\u0435\u0436\u0434\u0435 \u0431\u044b\u043b \u0437\u043d\u0430\u043a\u043e\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 <a href=\"http:\/\/heirloom.sourceforge.net\/mailx.html\" rel=\"nofollow noopener noreferrer\">Heirloom mailx<\/a> \u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 <a href=\"https:\/\/www.sdaoden.eu\/code.html\" rel=\"nofollow noopener noreferrer\">S-nail<\/a> \u0432\u0435\u0440\u0441\u0438\u0435\u0439. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0434\u0438\u0440\u043a\u0430 \u043a S-nail: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 PGP-MIME \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0423 S-nail \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 threading-\u0430 \u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a (Mail-Followup-To \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a), \u0447\u0435\u043c \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u044b\u0435 GUI \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b. Mutt \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435\u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0434\u0451\u043d\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0447\u0442\u043e\u0439, \u043d\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u043f\u0440\u0438 <a href=\"http:\/\/kroah.com\/log\/blog\/2019\/08\/14\/patch-workflow-with-mutt-2019\/\" rel=\"nofollow noopener noreferrer\">\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Linux<\/a>.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 MDA \u043f\u043e\u0447\u0442\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 \u0432 Maildir \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0421 \u043d\u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043c\u043e\u043d\u043e\u0444\u0430\u0439\u043b\u043e\u0432 mbox.<\/p>\n<pre> ----- ~\/.mutt\/muttrc ----- set folder = &quot;~\/mail&quot; set mbox_type = maildir set spoolfile = =mbox set record = =sent-`date &quot;+%y-%m&quot;` set postponed = =postponed set certificate_file = ~\/.mutt\/certificates set net_inc = 1 set edit_headers = yes set charset = &quot;utf-8&quot; set pager_stop = yes set sort = &quot;threads&quot; set sort_aux = &quot;last-date-received&quot; set pager_index_lines = 6 set timeout = 60 set rfc2047_parameters set reply_to = yes set fcc_clear = yes set user_agent = yes set signature = ~\/.signature set hostname = &quot;stargrave.org&quot; set realname = &quot;Sergey Matveev&quot; set query_command=&quot;mu cfind --format=mutt-ab '%s'&quot; set forward_format = &quot;Fwd: %s&quot; set indent_string = &quot;&gt;&quot; set attribution = &quot;*** %n [%{%Y-%m-%d %H:%M}]:&quot; set index_format = &quot;%4C %Z[%1H] %{%m-%d} [%N] %-15.15L (%?l?%4l&amp;%4c?)%?M?[#%02M]?%?Y?[%Y]? %s&quot; set pipe_decode = yes set crypt_protected_headers_write = yes set print_command=&quot;cat &gt; \/tmp\/mail-printed&quot;  macro index &lt;F1&gt; &quot;&lt;next-unread-mailbox&gt;&lt;enter&gt;&quot; &quot;Go to new mail&quot; macro index &lt;F5&gt; &quot;:set mbox_type = mbox\\n&quot; &quot;mbox mailbox type&quot;  macro index &lt;F8&gt; &quot;&lt;shell-escape&gt;mu find --clearlinks --format=links --linksdir=~\/mail\/search &quot; &quot;mu find&quot; macro index &lt;F9&gt; &quot;&lt;change-folder-readonly&gt;~\/mail\/search&lt;enter&gt;&quot; &quot;mu find results&quot;  macro pager \\cu |urlview\\n  macro index \\cb &lt;decrypt-copy&gt; macro pager \\cb &lt;decrypt-copy&gt;  macro index \\ce &lt;next-entry&gt; macro index \\cy &lt;previous-entry&gt; macro pager \\ce &lt;next-line&gt; macro pager \\cy &lt;previous-line&gt;  alternative_order text\/plain text\/enriched text\/html auto_view text\/html unignore \\     Mail-Followup-To \\     List-Id \\     Reply-To \\     Mail-Reply-To \\     Organization \\     OpenPGP \\     Return-Path \\     X-Mailer \\     User-Agent \\     Message-Id  fcc-hook .* $record folder-hook . &quot;set sort = threads; push &lt;collapse-all&gt;&quot;  source ~\/.mutt\/mailboxes source ~\/.mutt\/accounts\/rc  # set mime_forward = yes # set mime_forward_rest = yes <\/pre>\n<ul>\n<li><em>set record<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043f\u043e\u0447\u0442\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u0430\u0445 \u043f\u043e\u0431\u0438\u0442\u044b\u0445 \u043f\u043e \u043c\u0435\u0441\u044f\u0446\u0430\u043c.<\/li>\n<li><em>set edit_headers<\/em> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043f\u0438\u0441\u0435\u043c. \u041d\u0435\u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c <em>Reply-To<\/em>.<\/li>\n<li><em>set sort<\/em> \u0438 <em>set sort_aux<\/em> \u0437\u0430\u0434\u0430\u044e\u0442 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u0438\u0441\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u043f\u043e \u0442\u0440\u0435\u0434\u0430\u043c \u0438 \u0434\u0430\u0442\u0430\u043c.<\/li>\n<li><em>set rfc2047_parameters<\/em> \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u043d\u0443\u0436\u0435\u043d \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b MUA. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 MIME \u0447\u0430\u0441\u0442\u044f\u0445.<\/li>\n<li><em>set reply_to<\/em> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 <em>Reply-To<\/em> \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u043c (\u043d\u0435 \u0432 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0443) \u043e\u0442\u0432\u0435\u0442\u0435, \u0430 \u043d\u0435 \u0431\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 <em>From<\/em>. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/li>\n<li><em>set fcc_clear<\/em> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u044f\u0449\u0438\u043a\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0447\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u0442\u043e \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u041f\u043b\u044e\u0441 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u0431\u044b\u043b\u0438 \u0441\u043b\u0435\u043f\u044b \u043a \u0442\u0435\u043b\u0443 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.<\/li>\n<li><em>set query_command<\/em> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u044e \u043f\u043e\u0447\u0442\u0443 <a href=\"https:\/\/www.djcbsoftware.nl\/code\/mu\/\" rel=\"nofollow noopener noreferrer\">Mu helper<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 Mutt-\u0434\u0440\u0443\u0436\u0435\u043b\u044e\u0431\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0442\u043e \u0432\u0432\u043e\u0436\u0443 \u0435\u0433\u043e \u0438\u0441\u043a\u043e\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u043d\u0430\u0436\u0438\u043c\u0430\u044e Ctrl-T \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/li>\n<li><em>set attribution<\/em> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0434\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0434 \u0446\u0438\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0442\u0435\u043b\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f: \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c, \u0438\u043c\u044f \u0438 \u0434\u0430\u0442\u0430. \u0421\u0447\u0438\u0442\u0430\u044e \u0432\u0430\u0436\u043d\u044b\u043c \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0434\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u043d\u0435 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0431\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043a\u0430\u043a \u043c\u043d\u0435 \u0431\u044b, \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0440\u043e\u0434\u043d\u043e\u043c, \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u043a\u0438\u0442\u0430\u0435\u0446 \u0438 \u044f \u0431\u044b \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u043b \u0447\u0442\u043e \u0442\u0430\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043e: \u0434\u0430\u0442\u0430 \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0440\u0443\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e? \u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 \u043a <em>From<\/em> \u043f\u043e\u043b\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0435 \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u0446 \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c (\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430).<\/li>\n<li><em>set crypt_protected_headers_write<\/em> \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0442\u0438\u043f\u0430 <em>Subject<\/em> \u0432 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0442\u0435\u043b\u043e PGP-MIME \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430, \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 MUA \u0441\u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438.<\/li>\n<li>\u041d\u0430\u0436\u0430\u0442\u0438\u0435 F1 \u043f\u0440\u044b\u0433\u0430\u0435\u0442 \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u043d\u0435\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0447\u0442\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0439 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u0438.<\/li>\n<li>\u041d\u0430\u0436\u0430\u0442\u0438\u0435 F8 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043d\u0435 \u0432\u0431\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043b\u044f <em>mu<\/em> \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 (\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430) \u0434\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u0441\u0435\u043c. \u0410 F9 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442 \u043c\u0435\u043d\u044f \u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a. \u041d\u0435\u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\/\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0438\u0441\u0435\u043c \u0441\u0430\u043c\u043e\u0433\u043e Mutt, \u043d\u043e \u043e\u043d\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u044f\u0442\u0441\u044f \u0441 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e \u0438, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0432\u0441\u0435\u0439 \u043a\u043e\u0440\u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 (\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u043e\u0442-\u0432\u043e\u0442 \u043f\u043e\u0447\u0442\u0438 \u0443\u0436\u0435 \u043a\u0430\u043a \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u043f\u0438\u0441\u0435\u043c.<\/li>\n<li><em>set pipe_decode<\/em> \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 MIME \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0438\u0445 \u043f\u043e\u0434\u0430\u0447\u0435\u0439 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 pipe. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0438\u0441\u0435\u043c \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u2014 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430.<\/li>\n<li><em>fcc-hook<\/em> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043a\u043e\u043f\u0438\u0438 \u043f\u0438\u0441\u0435\u043c \u0432 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a.<\/li>\n<li><em>folder-hook\u2026 collapse-all<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u043e \u0442\u0440\u0435\u0434\u0430\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u043d\u044b \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0438 \u0438 \u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0434\u043e\u0432.<\/li>\n<li><em>set mime_forward*<\/em> \u043e\u043f\u0446\u0438\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u0435\u043b\u0430\u0442\u044c forward \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 RFC822 MIME \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0435\u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0441\u0435\u043c, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u043c\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e.<\/li>\n<li><em>macro * \\ce \u0438 \\cy<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 bind Ctrl-Y \u0438 Ctrl-E \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043b\u0435\u0441\u043e\u043c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0442\u0440\u044d\u043a\u0431\u043e\u043b\u0430, \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0438 \u043f\u0438\u0441\u044c\u043c\u0430\u043c \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430.<\/li>\n<li><em>macro * \\cb<\/em> \u0434\u0435\u043b\u0430\u0435\u0442 bind Ctrl-B \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u043f\u0438\u0441\u044c\u043c\u0430. \u042d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<\/li>\n<\/ul>\n<pre> ----- ~\/.mutt\/mailboxes ----- mailboxes =mbox \\     =arbeit \\     =blog-comment \\     [...]     =zsh  folder-hook =blog-comment &quot;set sort = date&quot; folder-hook =monitoring &quot;set sort = date&quot;  set my_month_prev = `date -j -v -1m &quot;+%y-%m&quot;` set my_month_curr = `date &quot;+%y-%m&quot;`  mailboxes \\     =arbeit-$my_month_prev \\     =arbeit-$my_month_curr \\     =sent-$my_month_prev \\     =sent-$my_month_curr \\     =back-$my_month_prev \\     =back-$my_month_curr  folder-hook =sent-$my_month_prev &quot;set sort = date-sent&quot; folder-hook =sent-$my_month_curr &quot;set sort = date-sent&quot; <\/pre>\n<p>  \u0422\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043c\u0435\u043d\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0438 \u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0412 <em>mailboxes<\/em> \u044f\u0449\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f <em>y<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439. \u0412\u0441\u0435 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0435 \u044f\u0449\u0438\u043a\u0438 \u0443 \u043c\u0435\u043d\u044f \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u00ab\u0432\u0441\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u044b\u00bb \u0438 \u043d\u0430 \u00ab\u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446\u00bb. \u041f\u043b\u044e\u0441 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u0438\u0441\u0435\u043c, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0434\u0430\u0442\u0435.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432\u0441\u044f\u043a\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438:<\/p>\n<pre> ----- ~\/.mutt\/accounts\/rc ----- macro index &lt;F2&gt; &quot;:source ~\/.mutt\/accounts\/stargrave.org\\n&quot; &quot;Profile: stargrave.org&quot; macro index &lt;F3&gt; &quot;:source ~\/.mutt\/accounts\/arbeit.ru\\n&quot; &quot;Profile: arbeit.ru&quot; macro index &lt;F4&gt; &quot;:source ~\/.mutt\/accounts\/XXX.net\\n&quot; &quot;Profile: XXX.net&quot;  alternates stargrave@stargrave.org junk@stargrave.org admin@cypherpunks.ru [...]  source ~\/.mutt\/accounts\/stargrave.org <\/pre>\n<pre> ----- ~\/.mutt\/accounts\/stargrave.org ----- source ~\/.mutt\/accounts\/clearing set from = &quot;Sergey Matveev &lt;stargrave@stargrave.org&gt;&quot; my_hdr OpenPGP: id=AE1A8109E49857EF\\; url=http:\/\/openpgpkey.stargrave.org\/.well-known\/...  set pgp_autosign = no set pgp_sign_as = 0x6B350BA5 <\/pre>\n<pre> ----- ~\/.mutt\/accounts\/arbeit.ru ----- source ~\/.mutt\/accounts\/clearing set from = &quot;Sergey Matveev &lt;stargrave@arbeit.ru&gt;&quot; set signature = ~\/.mutt\/accounts\/arbeit.signature set smtp_url = &quot;smtp:\/\/localhost\/&quot;  alternates stargrave@arbeit.ru my_hdr OpenPGP: id=... my_hdr Organization: My lovely work  set pgp_autosign = yes set pgp_sign_as = 0xXXX  mailboxes imaps:\/\/stargrave@mail.arbeit.ru\/ <\/pre>\n<pre> ----- ~\/.mutt\/accounts\/clearing ----- unmy_hdr Organization OpenPGP set pgp_autosign = no unset smtp_url unset smtp_pass set signature = ~\/.signature <\/pre>\n<p>  \u0412 <em>~\/.mutt\/colour<\/em> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a \u0432\u0437\u044f\u043b \u043a\u0430\u043a\u0443\u044e-\u0442\u043e default \u0442\u0435\u043c\u0443 \u0438\u0437 \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u0442\u043e \u0442\u0430\u043a \u0435\u0451 \u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b \u043d\u0438 \u0440\u0430\u0437\u0443. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 URL \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b Gopher \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0432\u0435\u0434\u044c, \u0434\u0430\u0436\u0435 \u0443 \u043c\u0435\u043d\u044f, \u043a\u0440\u043e\u043c\u0435 \u0431\u043b\u043e\u0433\u0430 \u0435\u0441\u0442\u044c \u0438 phlog:<\/p>\n<pre> ----- ~\/.mutt\/colour ----- color body brightgreen default &quot;(http|https|ftp|news|telnet|finger|gopher):\/\/[^ \\&quot;\\t\\r\\n]*&quot; <\/pre>\n<p>  \u0412 <em>~\/.mutt\/lists<\/em> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430\u0445:<\/p>\n<pre> ----- ~\/.mutt\/lists ----- lists goredo-devel@lists.cypherpunks.ru lists uucp-general@gnu.org [...] lists zsh-announce@zsh.org  subscribe goredo-devel@lists.cypherpunks.ru subscribe uucp-general@gnu.org [...] subscribe zsh-workers@zsh.org  lists locals@arbeit.ru subscribe locals@arbeit.ru <\/pre>\n<p>  \u0417\u043d\u0430\u043d\u0438\u0435 \u043e \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0435 (<em>lists<\/em>) \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043f\u0438\u0441\u044c\u043c\u0430. \u0410 \u0437\u043d\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u043b\u0438 \u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u043c (<em>subscribe<\/em>), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <em>Mail-Followup-To<\/em> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043f\u0440\u0438 \u043e\u0442\u0432\u0435\u0442\u0435 \u0432 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0443.<\/p>\n<p>  <em>~\/.mutt\/gpg.rc<\/em> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e <em>gpg.rc<\/em> \u0444\u0430\u0439\u043b\u0430 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u044b\u0437\u043e\u0432\u0430 GnuPG \u0438\u0437 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Mutt. \u041d\u043e \u043a\u043e \u0432\u0441\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 <em>$my_keyrings<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f:<\/p>\n<pre> set my_keyrings = &quot;--keyring ~\/.gnupg\/arbeit.kbx --keyring ~\/keyrings\/mein.kbx ...&quot; <\/pre>\n<p>  \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u043e\u0438\u0441\u043a \u043a\u043b\u044e\u0447\u0435\u0439 \u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u043d\u0438\u0446.<\/p>\n<p>  \u0414\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043f\u043e\u0447\u0442\u044b, \u043a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <em>mu<\/em>. \u0412\u0430\u0436\u043d\u044b\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e <em>fsync<\/em> \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043d\u0438\u0436\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0424\u0421 \u0434\u0430\u0436\u0435 \u043d\u0430 SSD. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u043b\u0430\u044e \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u043e\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 <em>\/tmp<\/em> (<em>tmpfs<\/em>): <em>mu index &#8212;muhome \/tmp\/mu<\/em>, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0411\u0414 \u043d\u0430 \u0434\u0438\u0441\u043a. \u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u044f\u0449\u0438\u043a\u0438 \u0441 \u043d\u0435\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u044e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u044e <em>.noindex<\/em> \u0444\u043b\u0430\u0433\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043d\u0438\u0445.<\/p>\n<p>  Mutt \u043d\u0435 \u0434\u0435\u0440\u0436\u0443 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c. \u041a\u0430\u043a \u0436\u0435 \u0443\u0437\u043d\u0430\u044e \u043e \u043d\u043e\u0432\u044b\u0445 \u043f\u0438\u0441\u044c\u043c\u0430\u0445? \u041e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0438\u0441\u0435\u043c \u0432\u043d\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043c\u043d\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <em>zsh<\/em>:<\/p>\n<pre> ----- ~\/.zshrc ----- mailpath=(     ~\/mail\/mbox&quot;?Neue Nachrichten in =mbox&quot;     ~\/mail\/arbeit&quot;?Neue Nachrichten in =arbeit&quot; ) <\/pre>\n<p>  \u0414\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043d\u0430 \u0432\u0441\u0435\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0435 (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445).<\/p>\n<pre> ----- ~\/.login_conf ----- me:charset=UTF-8:lang=de_DE.UTF-8: <\/pre>\n<p>  \u041e\u0431\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u043e\u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0443\u0437\u043d\u0430\u044e \u0432\u044b\u0437\u044b\u0432\u0430\u044f <em>inc<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre> ----- ~\/bin\/inc ----- #!\/usr\/bin\/env zsh setopt EXTENDED_GLOB res=() cd $MAILDIR for mbox (mbox *~mbox(\/)) {     [[ -e $mbox\/.inc ]] || continue     news=($mbox\/new\/*(N))     [[ ${#news} != 0 ]] &amp;&amp; res=($res $mbox:${#news}) } print $res <\/pre>\n<p>  \u041e\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0432\u043e\u0434\u043a\u0443 \u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u043e\u0432\u044b\u0445 (<em>new<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0432 Maildir) \u043f\u0438\u0441\u0435\u043c \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u0430\u0445 \u0441 <em>.inc<\/em> \u0444\u043b\u0430\u0433\u043e\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c:<\/p>\n<pre> mbox:1 cryptome:10 fbsd:2 nbsd:1 obsd:2 <\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430, Mutt \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043f\u0438\u0441\u044c\u043c\u0430 \u0432 <em>cur<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e Maildir-\u0430 \u0438 \u0438\u0437 <em>inc<\/em>-\u0441\u0432\u043e\u0434\u043a\u0438 \u043e\u043d\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u044e\u0442. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0447\u0430\u0441\u0442\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <em>inc<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0435 \u0432\u0432\u043e\u0436\u0443, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044e F1 \u0432 <em>zsh<\/em>:<\/p>\n<pre> ----- ~\/.zshrc ----- bindkey -s &quot;^[OP&quot; &quot; inc\\n&quot; # F1 <\/pre>\n<p>  \u041f\u0440\u043e\u0431\u0435\u043b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043d\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u0430. \u041e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0432 statusbar <em>dwm<\/em>? \u041f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u2014 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0435\u0442, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0442\u0443\u0434\u0430 \u0431\u0440\u043e\u0441\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u0434.<\/p>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f <em>arr<\/em> \u0438 <em>sent<\/em> \u0430\u043b\u0438\u0430\u0441\u0430\u043c\u0438:<\/p>\n<pre> ----- ~\/.zshrc ----- alias arr=&quot;mutt -f =arbeit -e 'source ~\/.mutt\/accounts\/arbeit.ru'&quot; alias sent=&quot;mutt -f =sent-\\`date '+%y-%m'\\`&quot; <\/pre>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f scoring \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0438 \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u041d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043c\u043e\u0433\u043b\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434 \u043f\u043e\u043b\u0441\u043e\u0442\u043d\u0438 \u043f\u0438\u0441\u0435\u043c \u0437\u0430 \u0447\u0430\u0441 \u043e\u0442 Redmine: \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0448\u0443\u0441\u0442\u0440\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0440\u0435\u0434\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e\u0439 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e MDA \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043b \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043f\u043e\u0447\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 Perl \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0443\u044e Redmine-\u043e\u043c, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c Mutt \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 score \u0438 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.<\/p>\n<h2>WWW<\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0447\u0442\u043e \u043d\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u043b \u0432 Mutt \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u2014 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0441 bind-\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0430 pipe \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/sigpipe\/urlview\" rel=\"nofollow noopener noreferrer\">urlview<\/a> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 Ctrl-U \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430. \u0427\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c URL \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0438\u0441\u044c\u043c\u0435. \u0412\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439? \u041d\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0434\u043e\u043b\u0433\u043e. \u0418\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430? Overengineering. <em>urlview<\/em> \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0451 \u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 URL \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u043d\u044e \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 URL. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430:<\/p>\n<pre> ----- ~\/.urlview ----- COMMAND \/home\/stargrave\/bin\/www %s &amp; <\/pre>\n<pre> ----- ~\/bin\/www ----- #!\/bin\/sh  [ -e \/tmp\/stargrave-flags\/WG ] &amp;&amp; [ -n &quot;$1&quot; ] &amp;&amp; {     exec $HOME\/local\/bin\/xombrero -n &quot;$1&quot; 2&gt;\/dev\/null }  term() {     DISPLAY=:0 CMD=&quot;tmux attach-session -t www&quot; CMDTITLE=&quot;Terminal9&quot; \\         $HOME\/bin\/dwm-term &amp; }  if tmux has-session -t www 2&gt; \/dev\/null ; then     attached=`tmux list-sessions -F &quot;#{session_attached}&quot; -f &quot;#{==:#{session_name},www}&quot;`     [ &quot;$attached&quot; != &quot;0&quot; ] || {         term &amp;         sleep 0.5     }     tmux new-window -t www &quot;lynx $@&quot; else     tmux new-session -d -s www &quot;sleep 0.5 ; lynx $@&quot;     tmux set-option -t www default-command lynx     term &amp; fi <\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 <em>WG<\/em> \u0444\u043b\u0430\u0433\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b, \u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/en.wikipedia.org\/wiki\/Xombrero\" rel=\"nofollow noopener noreferrer\">xombrero<\/a> GUI \u0431\u0440\u043e\u0443\u0437\u0435\u0440. \u0410 \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0442\u043e \u0432 \u043d\u0451\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f tab \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c URL-\u043e\u043c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e <em>tmux<\/em> \u0441 <em>www<\/em> \u0441\u0435\u0441\u0441\u0438\u0435\u0439. \u042d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <em>Terminal9<\/em> \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0438 Xombrero, \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c <em>dwm<\/em>-\u043e\u043c \u043f\u043e\u043c\u0435\u0449\u0451\u043d \u043d\u0430 9-\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b, \u0433\u0434\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u044b. \u0415\u0441\u043b\u0438 <em>tmux<\/em> \u0441\u0435\u0441\u0441\u0438\u044f <em>www<\/em> \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u0432 \u043d\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e. \u041d\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0432 \u044d\u0442\u043e\u043c <em>tmux<\/em> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 <em>lynx<\/em>. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043c\u0435\u043d\u044f multi-tab \u0431\u0440\u043e\u0443\u0437\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 <em>www<\/em> \u0431\u0435\u0437 <em>urlview<\/em>, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e <em>www<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/tools.suckless.org\/dmenu\/\" rel=\"nofollow noopener noreferrer\">dmenu<\/a>.<\/p>\n<p>  \u0414\u0430, \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>lynx<\/em>, \u0438\u0431\u043e \u043d\u0435 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442 \u0438 \u0443\u0434\u043e\u0431\u043d\u043e. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0432 HTML \u0444\u043e\u0440\u043c\u0430\u0442\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Python), \u0432 Lynx \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c advanced mode, \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c UTF-8 \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443, \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c vi-\u0440\u0435\u0436\u0438\u043c \u043a\u043b\u0430\u0432\u0438\u0448. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u043e\u043b\u0435\u0441\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438, \u0434\u0435\u043b\u0430\u044e bind \u043a\u043b\u0430\u0432\u0438\u0448:<\/p>\n<pre> ----- ~\/.lynx.cfg ----- KEYMAP:^E:DOWN_TWO KEYMAP:^Y:UP_TWO <\/pre>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432 Lynx \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043c\u0435\u043d\u044e, \u043d\u043e \u043e\u043f\u0446\u0438\u044f \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u043e \u043d\u0430 \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0434\u0438\u0441\u043a. \u041d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0440\u0435\u0448\u0438\u043b\u0438. \u041d\u043e \u0431\u043b\u0430\u0433\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435:<\/p>\n<pre> ----- ~\/.lynx.cfg ----- MAKE_LINKS_FOR_ALL_IMAGES:TRUE <\/pre>\n<p>  \u0412 \u0444\u0430\u0439\u043b\u0435 \u0437\u0430\u043a\u043b\u0430\u0434\u043e\u043a (<em>~\/.lynx_bookmarks.html<\/em>) \u0443 \u043c\u0435\u043d\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c, \u0441\u0430\u0439\u0442\u044b \u043f\u043e\u0433\u043e\u0434\u044b \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438 \u0432 Xombrero \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u043e\u0432 \u044f \u043e\u0434\u043d\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0441\u0440\u0430\u0437\u0443 \u043c\u043e\u0433\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c Python, PostgreSQL, whatever \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e\u0441\u044f \u043d\u0430 \u0436\u0451\u0441\u0442\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0435 (\u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0436\u0435 \u043c\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438\u043b\u0438 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0443\u0431\u0435\u0440\u0451\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e?).<\/p>\n<pre> ----- ~\/.zshenv ----- export WWW_HOME=file:\/\/\/home\/stargrave\/.lynx_bookmarks.html export SSL_CERT_FILE=\/usr\/local\/openssl\/cert.pem export LYNX_CFG=~\/.lynx.cfg <\/pre>\n<p>  \u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f <em>~\/doc<\/em> \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u043a\u043d\u0438\u0433\u0430\u043c\u0438 \u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 ZFS dataset \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c gzip \u0441\u0436\u0430\u0442\u0438\u0435\u043c (\u043c\u043e\u044f \u0432\u0435\u0440\u0441\u0438\u044f ZFS \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Zstandard), \u0438\u0431\u043e \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e, \u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 read-only. \u0425\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0436\u0430\u0442\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 online \u0432\u0438\u0434\u0435, \u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0440\u0443\u044e \u0441\u0430\u0439\u0442 (\u0447\u0430\u0441\u0442\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439) \u0447\u0435\u0440\u0435\u0437 <em>wget &#8212;mirror<\/em> (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435). \u0421\u043e\u0444\u0442 \u0431\u0435\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e <em>nginx<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0432 \u0441\u0432\u043e\u0438 tarball \u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 online. \u042d\u0442\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043d\u0430\u043f\u043b\u0435\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<p>  \u041f\u0440\u0438\u0451\u043c cookie \u0443 \u043c\u0435\u043d\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043e\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0430\u0439\u0442\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0432 \u043d\u0438\u0445:<\/p>\n<pre> ----- ~\/.lynx.cfg ----- INCLUDE:\/home\/stargrave\/.lynx_cookies.cfg <\/pre>\n<pre> ----- ~\/.lynx_cookies.cfg ----- COOKIE_REJECT_DOMAINS:wikipedia.org,en.wikipedia.org,ru.wikipedia.org,github.com,... <\/pre>\n<p>  \u0412 Lynx \u0435\u0441\u0442\u044c jump \u0444\u0430\u0439\u043b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u0441\u044b\u043b\u043e\u043a.<\/p>\n<pre> ----- ~\/.lynx.cfg ----- JUMPFILE:\/home\/stargrave\/.lynx_jumps.html <\/pre>\n<pre> ----- ~\/.lynx_jumps.html ----- &lt;html&gt; &lt;head&gt;     &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text\/html; charset=utf-8&quot;&gt; &lt;\/head&gt; &lt;body&gt; &lt;dl compact&gt; &lt;dt&gt;gg&lt;dd&gt;&lt;a href=&quot;https:\/\/www.google.com\/search?q=%s&quot;&gt;Google&lt;\/a&gt;&lt;\/dd&gt; &lt;dt&gt;py&lt;dd&gt;&lt;a href=&quot;https:\/\/pypi.org\/project\/%s\/&quot;&gt;PyPI&lt;\/a&gt;&lt;\/dd&gt; &lt;dt&gt;rfc&lt;dd&gt;&lt;a href=&quot;https:\/\/tools.ietf.org\/html\/rfc%s&quot;&gt;RFC&lt;\/a&gt;&lt;\/dd&gt; &lt;dt&gt;s&lt;dd&gt;&lt;a href=&quot;https:\/\/lite.duckduckgo.com\/lite\/?q=%s&quot;&gt;DuckDuckGo&lt;\/a&gt;&lt;\/dd&gt; &lt;dt&gt;we&lt;dd&gt;&lt;a href=&quot;https:\/\/en.wikipedia.org\/wiki\/%s&quot;&gt;WikiEN&lt;\/a&gt;&lt;\/dd&gt; &lt;dt&gt;wr&lt;dd&gt;&lt;a href=&quot;https:\/\/ru.wikipedia.org\/wiki\/%s&quot;&gt;WikiRU&lt;\/a&gt;&lt;\/dd&gt; &lt;\/dl&gt; &lt;\/body&gt; &lt;\/html&gt; <\/pre>\n<p>  \u041d\u0430\u0436\u0430\u0432 <em>J<\/em> \u0432\u0430\u0441 \u0441\u043f\u0440\u043e\u0441\u044f\u0442 \u043a\u0430\u043a\u043e\u0439 jump \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <em>s<\/em>, Enter, \u0434\u0430\u043b\u0435\u0435 \u0432\u0432\u043e\u0434\u0438\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, Enter, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 DuckDuckGo. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c RFC 1234? J, rfc, Enter, 1234, Enter. \u0420\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f Wikipedia? J, wr, Enter, \u0425\u0430\u0431\u0440, Enter. \u0412 Xombrero \u0438\u043b\u0438 Pentadactyl \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0434\u043b\u044f Firefox \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u044f Enter, \u0430 \u0441\u0442\u0430\u0432\u044f \u043f\u0440\u043e\u0431\u0435\u043b, \u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d.<\/p>\n<p>  \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u0432 <em>tmux<\/em> \u043e\u043a\u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0431\u043e\u043b\u0435\u0435 \u0432\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u0447\u0435\u043c \u0433\u043e\u043b\u044b\u0439 <em>lynx<\/em>. \u0425\u043e\u0447\u0435\u0442\u0441\u044f title HTML \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 tab-\u0430\u0445 GUI \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u043e\u0432. \u0418\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Lynx \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u043b escape \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u0438\u043c\u044f \u043e\u043a\u043d\u0430 (\u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0438\u0436\u0435). \u0415\u0449\u0451 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<p>  Xombrero \u0431\u0440\u043e\u0443\u0437\u0435\u0440 \u043c\u043d\u0435 \u043f\u0440\u0438\u0433\u043b\u044f\u043d\u0443\u043b\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438 Firefox \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043c\u0435\u043d\u044f\u0435\u043c \u0432 \u043f\u043b\u0430\u043d\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432 \u043d\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 Pentadactyl must-have \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u041f\u043e\u0442\u043e\u043c Firefox \u0441\u0442\u0430\u043b \u043b\u043e\u043c\u0430\u0442\u044c \u0441\u0432\u043e\u0439 API \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043c\u0430\u0445\u043d\u0443\u043b\u0438 \u0440\u0443\u043a\u043e\u0439. \u0423\u0436\u0435 \u0434\u0430\u0432\u043d\u043e Firefox \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043d\u043e\u0439 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f. Xombrero \u0438\u043c\u0435\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u0435\u0439\u0448\u0435\u0435 vi-like \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u0441\u0441\u044b\u043b\u043e\u043a (\u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 Pentadactyl), \u043a\u0443\u0447\u0443 privacy-securing \u0444\u0438\u0447, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439, X.509 certificate pinning, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 HSTS, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0445 \u043d\u0435 \u0433\u0440\u0443\u0436\u0443), \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c JavaScript \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 (JavaScript \u0432\u043a\u043b\u044e\u0447\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u043d\u0438\u043c \u043d\u0435 \u0445\u043e\u0436\u0443), \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c CSS \u0434\u043b\u044f \u0442\u0451\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 (\u0447\u0442\u043e\u0431\u044b \u0431\u0435\u043b\u044b\u0439 \u0444\u043e\u043d \u043d\u0435 \u0431\u0438\u043b \u043f\u043e \u0433\u043b\u0430\u0437\u0430\u043c), \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a (\u043a\u0430\u043a jump \u0432 Lynx) \u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u044e \u0441\u0440\u0430\u0437\u0443. \u041d\u043e \u0430\u0432\u0442\u043e\u0440 \u0435\u0433\u043e \u0437\u0430\u0431\u0440\u043e\u0441\u0438\u043b, WebKit \u0434\u0432\u0438\u0436\u043e\u043a \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0440 \u0438 \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u043d\u0451\u043c \u0434\u0430\u0436\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f (CSS) \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0445\u043e\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0432\u043c\u0435\u043d\u044f\u0435\u043c\u043e.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 Lynx, \u0430 \u043d\u0435 Links, Links2, ELinks, w3m? \u041f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u043a \u0435\u0433\u043e \u0442\u0438\u043f\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e. Links \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 Gopher. ELinks \u2014 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u0435\u043d, \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b CSS \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. w3m \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0434\u0430 \u0438 \u043e\u043d \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c (Lynx \u043d\u0430 \u0435\u0433\u043e \u0444\u043e\u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0440\u0430\u0441\u043f\u0443\u0445\u0448\u0438\u043c \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u043c).<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 Unicode \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 w3m \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u0441\u0451 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442, \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0430\u0431\u043b\u0438\u0446, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 rowspan\/colspan, center \u0438 border=1. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 w3m \u0443 \u043c\u0435\u043d\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0442\u043e\u0438\u0442, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0442\u0430\u0431\u043b\u0438\u0446: <em>w3m [-cols XX] XXX.html &gt; dump<\/em>.<\/p>\n<h2>PGP<\/h2>\n<p>  \u0412 Mutt \u0431\u044b\u043b\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e GnuPG \u0438 OpenPGP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0430\u0440\u0445\u0430\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0434\u0430\u0436\u0435 \u0431\u043b\u0438\u0437\u043a\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u044d\u0442\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e OpenBSD-\u0448\u043d\u044b\u0439 <em>signify<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432. \u0425\u043e\u0442\u044f, \u043f\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u0441\u0430\u043c\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f <em>signify<\/em> \u0431\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c OpenPGP \u043a\u043b\u044e\u0447\u0430\u043c\u0438.<\/p>\n<p>  \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0445\u0438\u0442\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 GnuPG \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442. \u0412 \u043f\u043e\u0447\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e PGP-MIME, \u0438\u0431\u043e clearsign PGP \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043a\u043e\u0432\u0435\u0440\u043a\u0430\u043d \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u0441\u043e\u0444\u0442\u043e\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u043d\u0435 \u043f\u0440\u043e ASCII \u0434\u0430\u043d\u043d\u044b\u0435 (\u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430). \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c <em>-z 0<\/em> \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044f \u043d\u0443\u0436\u043d\u0430, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 <em>zstd<\/em> \u0432\u044b\u0437\u043e\u0432.<\/p>\n<p>  \u042f \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u044e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u043a\u043b\u044e\u0447\u043e\u043c \u0442\u0430\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u0443\u0434\u0430\u043b\u0438\u043b UID, \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442. \u0410 \u0441\u0442\u0430\u0440\u044b\u0435, \u0443\u0436\u0435 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0451\u043b \u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430 \u043d\u0435\u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u043b\u044e\u0441 \u043b\u044e\u0434\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u0439\u043c\u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0432\u0448\u0443\u044e\u0441\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043a \u043c\u043e\u0435\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 \u2014 \u043c\u043d\u0435 \u044d\u0442\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u0412\u0435\u0434\u044c \u0443\u0436\u0435 \u0436\u0435 \u0431\u044b\u043b \u043f\u0440\u0435\u0446\u0435\u0434\u0435\u043d\u0442 \u0441 \u00ab\u043e\u0442\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c\u00bb \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u0447\u0435\u0440\u0435\u0437 DANE (DNS) \u0438 WKD (\u043e\u0441\u043e\u0431\u044b\u0435 HTTPS URL-\u044b).<\/p>\n<pre> ----- ~\/.gnupg\/gpg.conf ----- charset utf-8 no-auto-key-retrieve keyserver hkps:\/\/hkps.pool.sks-keyservers.net no-secmem-warning no-greeting no-emit-version default-key AE1A8109E49857EF keyid-format 0xlong photo-viewer sxiv %i  trust-model tofu+pgp auto-key-locate dane wkd hkps:\/\/hkps.pool.sks-keyservers.net local  aead-algo OCB personal-aead-preferences OCB EAX personal-cipher-preferences TWOFISH AES256 CAMELLIA256 \\     AES192 CAMELLIA192 AES CAMELLIA128 CAST5 BLOWFISH IDEA 3DES personal-digest-preferences SHA512 SHA256 RIPEMD160 personal-compress-preferences ZLIB ZIP Uncompressed default-preference-list [\u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435] cert-digest-algo SHA512  group myself=AE1A8109E49857EF <\/pre>\n<pre> ----- ~\/.zshrc ----- export GPG_TTY=$(tty) <\/pre>\n<p>  TOFU (trust on first use) \u0441\u0447\u0438\u0442\u0430\u044e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u0434\u0435\u0435\u0439. \u0425\u043e\u0442\u044f \u0442\u0435\u043f\u0435\u0440\u044c, \u043a\u0440\u043e\u043c\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u043a \u043d\u0438\u043c, \u043d\u0443\u0436\u043d\u043e \u0432 GnuPG \u0435\u0449\u0451 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 TOFU \u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0441\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043e\u043b\u043e \u0442\u0440\u0451\u0445 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 AEAD \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b OCB \u0434\u0430\u0451\u0442 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u041c\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u044e\u0447 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 DSA-3072 \u043a\u043b\u044e\u0447 \u0438 RSA-4096 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438. \u041a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 tarball-\u043e\u0432 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 RSA-2048. \u0421\u0435\u0439\u0447\u0430\u0441 \u0431\u044b \u043d\u0435 \u0441\u0442\u0430\u043b \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043b\u0438\u0431\u043e ed25519\/curve25519, \u043b\u0438\u0431\u043e ed448\/cv448 \u2014 \u043e\u043d\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0437\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c RSA\/DSA \u043a\u043b\u044e\u0447\u0435\u0439 \u0442\u0430\u043a\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0435\u0433\u0443 \u0441\u043b\u043e\u043c\u044f \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u0445 \u043f\u0435\u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u0430 \u0438 \u0436\u0430\u043b\u043a\u043e \u0442\u0435\u0440\u044f\u0442\u044c \u043a\u0443\u0447\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u043b\u044e\u0447\u0435, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D1%82%D0%BE%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD,_%D0%A0%D0%B8%D1%87%D0%B0%D1%80%D0%B4_%D0%9C%D1%8D%D1%82%D1%82%D1%8C%D1%8E\" rel=\"nofollow noopener noreferrer\">\u0420\u0438\u0447\u0430\u0440\u0434\u0430 \u0421\u0442\u043e\u043b\u043b\u043c\u0430\u043d\u0430<\/a>, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0440\u043e\u0438\u043b <a href=\"http:\/\/www.cypherpunks.ru\/KSP.html\" rel=\"nofollow noopener noreferrer\">\u0432\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u0438<\/a> \u043a\u043b\u044e\u0447\u0435\u0439 (keysigning party, KSP).<\/p>\n<p>  \u042f \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e \u043a\u043b\u044e\u0447\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043a\u043b\u044e\u0447\u043d\u0438\u0446\u0430\u043c: \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0432 KSP, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430. \u041f\u043b\u044e\u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u043d\u0438\u0446\u044b \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0442\u0438\u043f\u0430 Debian \u0438\u043b\u0438 GNU \u2014 \u043a\u043b\u044e\u0447\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044e. \u0412 \u043a\u043b\u044e\u0447\u043d\u0438\u0446\u0430\u0445 \u043f\u043e\u0434 \u043c\u043e\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 332 \u043a\u043b\u044e\u0447\u0430. \u0418 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c email \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0438\u0434\u0451\u0442 \u0432 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 GnuPG \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439. \u0410 \u043a\u0430\u043a Lynx \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a? \u0410 Mutt? \u0412\u0441\u0435 \u043e\u043d\u0438 \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0432 <em>~\/.mailcap<\/em> \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439:<\/p>\n<pre> ----- ~\/.mailcap ----- text\/html; \/usr\/local\/bin\/lynx -noreferer -partial \\     -assume_charset=%{charset} -dump %s; copiousoutput; nametemplate=%s.html application\/pdf; \/home\/stargrave\/bin\/zat '%s'; test=test -n &quot;$DISPLAY&quot; image\/gif; \/usr\/local\/bin\/sxiv '%s'; test=test -n &quot;$DISPLAY&quot; image\/jpeg; \/usr\/local\/bin\/sxiv '%s'; test=test -n &quot;$DISPLAY&quot; image\/png; \/usr\/local\/bin\/sxiv '%s'; test=test -n &quot;$DISPLAY&quot; image\/webp; \/usr\/local\/bin\/sxiv '%s'; test=test -n &quot;$DISPLAY&quot; <\/pre>\n<p>  \u0417\u0430 \u0441\u0447\u0451\u0442 <em>text\/html<\/em>, Mutt \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u0447\u0451\u0440\u0442\u043e\u0432\u044b HTML \u043f\u0438\u0441\u044c\u043c\u0430. \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e, \u043f\u0440\u043e\u0448\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0443\u0432\u0430\u0436\u0430\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u0438 \u043d\u0435 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u0438\u0445 \u0431\u043e\u043b\u0435\u0435. Mutt-\u0443 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430\u043c\u0438 \u043e MIME \u0442\u0438\u043f\u0435 \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<pre> ----- ~\/.mime.types ----- application\/gzip gz application\/pdf pdf image\/jpeg jpeg image\/jpeg jpg image\/png png image\/webp webp <\/pre>\n<h2>IRC<\/h2>\n<p>  \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0447\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b, web-\u0431\u0440\u043e\u0443\u0437\u0435\u0440\u044b \u0442\u043e\u0436\u0435. \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0437\u0430 \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c \u0432\u0441\u044f\u043a\u043e\u0435: mICQ \u0434\u043b\u044f ICQ, MCabber \u0438 \u0442\u044c\u043c\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 XMPP \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, PSYC, Tox. \u0418 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 IRC. \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0432\u0438\u0436\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0433\u043e \u0447\u0435\u043c IRC \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0415\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u0430. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0438 \u043d\u0435 \u0445\u043e\u0442\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u041d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f Slack. \u041d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 Mattermost. \u0412\u0435\u0437\u0434\u0435 \u0432 \u043d\u0438\u0445 \u0445\u043e\u0434\u0438\u043b \u0447\u0435\u0440\u0435\u0437 IRC-\u043c\u043e\u0441\u0442. \u0414\u043b\u044f Mattermost \u044d\u0442\u043e <a href=\"https:\/\/github.com\/42wim\/matterircd\" rel=\"nofollow noopener noreferrer\">matterircd<\/a>. \u0414\u0430 \u0438 \u0432 XMPP \u0445\u043e\u0434\u0438\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.bitlbee.org\/\" rel=\"nofollow noopener noreferrer\">BitlBee<\/a>, \u0442\u043e\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f IRC-\u043c\u043e\u0441\u0442\u043e\u043c. \u0421\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 XMPP \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0438\u0431\u043e \u0438\u0437-\u0437\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432 \u043b\u044e\u0434\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b\u0438 \u0432 \u0446\u0435\u043d\u0437\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0433\u0434\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\/\u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u043e\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f. \u0412 IRC (\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0441\u0442\u043e\u0432) \u043c\u043e\u0436\u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b OTR \u043d\u0430\u0442\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u0445. \u0417\u0430\u0434\u0430\u0447\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 IRC \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0435\u043c\u043e\u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0438 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f (\u043c\u043e\u0439 <a href=\"http:\/\/www.git.cypherpunks.ru\/?p=goircd.git;a=blob;f=README\" rel=\"nofollow noopener noreferrer\">goircd<\/a> \u0434\u0430\u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442).<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/irssi.org\/\" rel=\"nofollow noopener noreferrer\">irssi<\/a> \u043a\u043b\u0438\u0435\u043d\u0442. \u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<pre> ----- ~\/.irssi\/config ----- aliases = { wc = &quot;window close&quot;; qmsg = &quot;quote privmsg $0 :$1-&quot;; }; settings = {   &quot;fe-text&quot; = {     actlist_sort = &quot;refnum&quot;;     paste_join_multiline = &quot;no&quot;;     paste_detect_time = &quot;0&quot;;     paste_use_bracketed_mode = &quot;yes&quot;;   };   &quot;fe-common\/core&quot; = {     autolog = &quot;yes&quot;;     beep_msg_level = &quot;MSGS NOTICES INVITES DCC DCCMSGS HILIGHT PUBLIC&quot;;     autolog_path = &quot;~\/secure\/irclogs\/$tag\/$0.log&quot;;     beep_when_window_active = &quot;yes&quot;;     hilight_nick_matches_everywhere = &quot;yes&quot;;   };   core = {     real_name = &quot;Sergey Matveev&quot;;     user_name = &quot;stargrave&quot;;     nick = &quot;stargrave&quot;;     timestamp_format = &quot;%H:%M:%S&quot;;   }; }; logs = { }; servers = (...); chatnets = {...}; hilights = ( { text = &quot;stargrave&quot;; nick = &quot;yes&quot;; word = &quot;yes&quot;; } ); keyboard = (   { key = &quot;^Y&quot;; id = &quot;command&quot;; data = &quot;SCROLLBACK GOTO -2&quot;; },   { key = &quot;^E&quot;; id = &quot;command&quot;; data = &quot;SCROLLBACK GOTO +2&quot;; },   { key = &quot;^L&quot;; id = &quot;command&quot;; data = &quot;WINDOW LAST&quot;; }, ); <\/pre>\n<pre> ----- ~\/.zshenv ----- export IRCNAME=&quot;Sergey Matveev&quot; export IRCNICK=&quot;stargrave&quot; <\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e Ctrl-L \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0449\u0443\u044e \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u0438 \u043d\u0430 Ctrl-Y\/E binding-\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043b\u0435\u0441\u043e\u043c \u0442\u0440\u044d\u043a\u0431\u043e\u043b\u0430. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 beep \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u043e\u043a\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c (\u0442\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435) (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435). \u0410 <em>qmsg<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043d\u043e \u0431\u0435\u0437 \u0435\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u043a\u043d\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043b\u043e\u0433\u0438\u043d\u0430 \u0432 <em>matterircd<\/em> \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 NickServ \u0431\u043e\u0442\u0443.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e <em>irssi<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d OTR \u043f\u043b\u0430\u0433\u0438\u043d, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 \u043b\u044e\u0431\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u0439 end-to-end \u043a\u0430\u043d\u0430\u043b \u0441\u0432\u044f\u0437\u0438, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0435\u0449\u0451 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0430 \u043d\u0430\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438. OTRv3 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0440\u0445\u0430\u0438\u0447\u043d\u044b\u0435 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u043d\u043e \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b, \u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 (\u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438). \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 OTRv3 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432 \u0441\u043e\u0444\u0442\u0435.<\/p>\n<p>  \u0412 <em>~\/.irssi\/scripts\/autorun <\/em> \u0441\u0442\u043e\u044f\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/irssi\/scripts\/blob\/master\/scripts\/go.pl\" rel=\"nofollow noopener noreferrer\">go.pl<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 <em>\/go<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043e\u043a\u043d\u0430 \u0433\u0434\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0435\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f.<\/li>\n<li><a href=\"https:\/\/github.com\/irssi\/scripts\/blob\/master\/scripts\/logresume.pl\" rel=\"nofollow noopener noreferrer\">logresume.pl<\/a> \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043e\u043a\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u0443\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044f \u043e \u0447\u0451\u043c \u0431\u044b\u043b \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437.<\/li>\n<li><a href=\"https:\/\/github.com\/irssi\/scripts\/blob\/master\/scripts\/nickcolor.pl\" rel=\"nofollow noopener noreferrer\">nickcolor.pl<\/a> \u0440\u0430\u0437\u0443\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 nick-\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439.<\/li>\n<\/ul>\n<p>  \u041d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Mattermost. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 \u043d\u0451\u043c \u0444\u0430\u0439\u043b\u044b \u0447\u0435\u0440\u0435\u0437 IRC \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043c \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 API-driven \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u0411\u043b\u0430\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <a href=\"http:\/\/www.git.stargrave.org\/?p=mmfileget.git;a=blob;f=README;hb=HEAD\" rel=\"nofollow noopener noreferrer\">\u0443\u0442\u0438\u043b\u0438\u0442\u0443<\/a> \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 URL:<\/p>\n<pre> ----- ~\/work\/mmfileget\/main.go ----- import &quot;github.com\/mattermost\/mattermost-server\/v5\/model&quot; [...] Client := model.NewAPIv4Client(&quot;https:\/\/mm.arbeit.ru&quot;) Client.Login(&quot;stargrave&quot;, &quot;password&quot;) info, resp := Client.GetFileInfo(fileId) if info == nil {     fmt.Fprintln(os.Stderr, resp)     os.Exit(1) } filename := info.Name if len(os.Args) &gt; 2 {     filename = os.Args[2] } else {     fmt.Fprintln(os.Stderr, &quot;Name:&quot;, info.Name)     fmt.Fprintln(os.Stderr, &quot;Type:&quot;, info.MimeType)     fmt.Fprintln(os.Stderr, &quot;Size:&quot;, info.Size)     fmt.Fprintln(os.Stderr, &quot;Download? Ctrl-D\/C&quot;)     os.Stdin.Read(make([]byte, 1)) } data, _ = Client.GetFile(fileId) if err = ioutil.WriteFile(filename, data, os.FileMode(0666)); err != nil {     panic(err) } <\/pre>\n<h2>st<\/h2>\n<p>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0441\u044c \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 X11 \u0441\u0435\u0441\u0441\u0438\u0438. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <em>dwm<\/em> \u043c\u043e\u0433\u0443 \u043b\u0438\u0431\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 (Alt-Shift-Enter), \u043b\u0438\u0431\u043e <em>dmenu<\/em> (Alt-P) \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0447\u0442\u043e, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043b\u0438\u0431\u043e <em>www<\/em> \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430+<em>tmux<\/em>+Lynx, \u043b\u0438\u0431\u043e <em>xombrero<\/em> GUI \u0431\u0440\u043e\u0443\u0437\u0435\u0440, \u043b\u0438\u0431\u043e \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 <em>passman<\/em>, \u043b\u0438\u0431\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u044d\u043a\u0440\u0430\u043d\u0430 <em>mylock<\/em>.<\/p>\n<p>  \u0423\u0439\u043c\u0443 \u043b\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <a href=\"https:\/\/st.suckless.org\/\" rel=\"nofollow noopener noreferrer\">st<\/a> (suckless terminal). \u0412 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e. Resize, UTF-8, ANSI \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430 X11, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 urgency \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u043b\u043e\u0432\u043b\u0435 bell\/alert \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, OSC \u043a\u043e\u0434\u044b (\u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 title \u043e\u043a\u043d\u0430, \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u0431\u0443\u0444\u0435\u0440\u043e\u043c \u043e\u0431\u043c\u0435\u043d\u0430), bracketed paste \u0440\u0435\u0436\u0438\u043c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 alternate screen. \u0412 \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0432\u0438\u0436\u0443 \u0435\u0449\u0451 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0444\u0438\u0448\u043a\u0438, \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u041e\u0434\u0438\u043d \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0431\u044b\u043b \u0437\u0430\u0440\u044f\u0434\u043a\u0443 \u043e\u0442 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u043c, \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u043b \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043b\u043e\u0447\u0435\u0439 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445. \u041a\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c, \u0430 \u043a\u0442\u043e-\u0442\u043e \u043d\u0435\u0442. \u0413\u0434\u0435-\u0442\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043b\u043e\u0432\u043e, \u0430 \u0433\u0434\u0435-\u0442\u043e \u044d\u0442\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0438\u043d\u0430\u0447\u0435. \u041a\u0442\u043e-\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u0430 \u043a\u0442\u043e-\u0442\u043e \u043d\u0435\u0442. \u0418 \u044d\u0442\u0438 \u043c\u0435\u043b\u043e\u0447\u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u043d\u043e \u0431\u044c\u044e\u0442 \u043f\u043e \u0440\u0443\u043a\u0430\u043c \u0441 \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0446\u0432\u0435\u0442\u043e\u0432, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0447\u0442\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0435:<\/p>\n<pre> ----- ~\/src\/suckless\/st\/config.h ----- static char *font = &quot;Inconsolata LGC:pixelsize=16:antialias=false&quot;; static int borderpx = 0; static char *shell = &quot;\/bin\/zsh&quot;; wchar_t *worddelimiters = L&quot; \u2192\u2502&quot;; char *termname = &quot;screen-256color&quot;; static unsigned int mouseshape = XC_left_ptr;  static Shortcut shortcuts[] = {     \/* mask                 keysym          function        argument *\/     [...]     { MODKEY|ShiftMask,     XK_Insert,      clippaste,      {.i =  0} }, };  static Key key[] = {     \/* keysym           mask            string      appkey appcursor *\/     [...]     { XK_Menu,          XK_NO_MOD,      &quot;^B&quot;,    0,    0},     { XK_Super_R,       XK_NO_MOD,      &quot;^A&quot;,    0,    0},     { XK_Scroll_Lock,   XK_NO_MOD,      &quot;^A[&quot;,   0,    0}, }; <\/pre>\n<ul>\n<li>\u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0432\u0441\u044f\u043a\u0438\u0435 \u0448\u0440\u0438\u0444\u0442\u044b, \u043d\u043e <em>Inconsolata LGC<\/em> \u0431\u0435\u0441\u0441\u043c\u0435\u043d\u043d\u044b\u0439 \u043b\u0438\u0434\u0435\u0440 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f. \u0421\u0440\u0435\u0434\u0438 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u043c\u043d\u0435 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438\u0441\u044c <a href=\"https:\/\/typeof.net\/Iosevka\/\" rel=\"nofollow noopener noreferrer\">Iosevka<\/a> \u0438 <a href=\"https:\/\/github.com\/fcambus\/spleen\" rel=\"nofollow noopener noreferrer\">Spleen<\/a>. \u041d\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0436 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043d \u0441\u0432\u043e\u0438\u043c \u0443\u0437\u043a\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443.<\/li>\n<li>\u0412 <em>worddelimiters<\/em> \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0443 \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0451\u0440\u0442\u043e\u0447\u043a\u0443: \u043e\u0431\u0430 Unicode \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Vim \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438, \u043a\u043e\u0438\u0445 \u043f\u043e\u043b\u043d\u043e \u0432 Go \u043a\u043e\u0434\u0435, \u0430 \u0432\u0442\u043e\u0440\u044b\u043c <em>tmux<\/em> \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u043a\u043d\u0430. \u0415\u0441\u043b\u0438 \u0431\u044b \u0438\u0445 \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0442\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043f\u043e \u0441\u043b\u043e\u0432\u0443 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b \u0431\u044b \u044d\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0442\u043e\u0436\u0435.<\/li>\n<li>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <em>st<\/em>, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0440\u043e\u0441 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0438 \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 <em>screen-256color<\/em>.<\/li>\n<li>\u0424\u043e\u0440\u043c\u0430 <em>XC_left_ptr<\/em> \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043c\u044b\u0448\u043a\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0447\u0435\u043c \u00abI-beam\u00bb, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0451\u0440\u0433\u0430\u0442\u044c \u043c\u044b\u0448\u043a\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0443\u0440\u0441\u043e\u0440.<\/li>\n<li>\u0412 <em>shortcuts<\/em> \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d binding \u043d\u0430 Alt+Shift+Insert, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u00abclipboard\u00bb X11 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0448\u0442\u0430\u0442\u043d\u044b\u0439 Shift+Insert \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 primary \u0431\u0443\u0444\u0435\u0440\u0430.<\/li>\n<li>\u041c\u043e\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0433\u043e\u0440\u0434\u043e\u0441\u0442\u044c \u044d\u0442\u043e binding \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b Menu \u043d\u0430 \u043f\u043e\u0441\u044b\u043b\u043a\u0443 Ctrl-B, \u0430 \u043f\u0440\u0430\u0432\u043e\u0433\u043e Super (\u0442\u0430\u043c \u0433\u0434\u0435 \u0447\u0430\u0441\u0442\u043e \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u043e\u0442\u0438\u043f Windows) \u043d\u0430 \u043f\u043e\u0441\u044b\u043b\u043a\u0443 Ctrl-A. \u0418\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u043d\u0435\u043d\u0430\u0432\u0438\u0436\u0443 \u043d\u0430\u0436\u0438\u043c\u0430\u043d\u0438\u0435 Ctrl \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u0438\u0431\u043e \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f: \u043c\u043e\u0439 \u043c\u0438\u0437\u0438\u043d\u0435\u0446 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a \u0441\u0435\u0431\u0435 (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 FPS \u0438\u0433\u0440\u0430\u0445 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 Ctrl \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043b\u044e\u0434\u0435\u0439) \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0431\u0440\u043e\u043c \u043b\u0430\u0434\u043e\u043d\u0438. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u043f\u043e\u0447\u0435\u043c\u0443, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u044f \u043d\u0435 \u0443\u0432\u0430\u0436\u0430\u043b Emacs, \u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u0431\u044b \u043d\u0430 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437-\u0437\u0430 \u0443\u043b\u044c\u0442\u0440\u0430 \u0447\u0430\u0441\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438.\n<p>  Ctrl-A \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a prefix \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e <em>tmux<\/em>, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a Ctrl-B \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f prefix-\u043e\u043c \u0432 \u043d\u0451\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 <em>tmux<\/em>-\u0430\u0445 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. Tmux \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0434\u043b\u044f prefix-\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0441 Ctrl. Super+C \u2014 \u0432\u043e\u0442 \u0443 \u043c\u0435\u043d\u044f \u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0432 <em>tmux<\/em>. Menu+C \u2014 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u043e \u0432 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c <em>tmux<\/em>. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0430\u043c\u043e\u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u041a\u041f\u0414 \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c, \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0434\u0432\u043e\u0439\u043d\u043e\u0439 prefix \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c\u0443 <em>tmux<\/em>: Ctrl-B+Ctrl-B+C, \u043f\u044f\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u0439, \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e!<\/li>\n<li><em>ScrollLock<\/em> \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 Ctrl-A+[, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0431\u0443\u0444\u0435\u0440\u0443 \u0432 <em>tmux<\/em>. \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 binding \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430 <em>tmux<\/em>? \u0415\u0441\u043b\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c, \u0442\u043e ScrollLock \u0443 \u043c\u0435\u043d\u044f \u0442\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0440\u0435\u0434\u043a\u043e.<\/li>\n<\/ul>\n<p>  \u0421 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438, <em>st<\/em> \u0441\u0442\u0430\u043b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\/\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a \u0442\u0435\u043a\u0441\u0442\u0443 (italic, underline, inverse \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435). \u0410 \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u044f\u044f \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u0432\u0438\u0434\u0435\u0442\u044c italic \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u0436\u0451\u043b\u0442\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u044b\u043b\u043e\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0416\u0451\u043b\u0442\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0418\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u043a\u0443\u0440\u0441\u0438\u0432\u0430 \u2014 \u043d\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0448\u0442\u0430\u0442\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f XTerm \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0431\u044b\u043b\u0430 \u0431\u044b:<\/p>\n<pre> XTerm.vt100.colorITMode: true XTerm.vt100.colorIT: yellow <\/pre>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <em>dwm<\/em> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442:<\/p>\n<pre> ----- ~\/bin\/dwm-term ----- #!\/bin\/sh [ -n &quot;$CMD&quot; ] || CMD=tmux [ -z &quot;$CMDTITLE&quot; ] || CMDTITLE=&quot;-t $CMDTITLE&quot; exec $HOME\/bin\/st $@ $CMDTITLE -e $CMD 2&gt;\/dev\/null <\/pre>\n<p>  \u0427\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u0427\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <em>www<\/em> \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <em>tmux<\/em>, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u043b\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a <em>zsh<\/em> (\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u00ab\u0447\u0438\u0441\u0442\u044b\u0439\u00bb st+zsh, \u0442\u043e \u0447\u0435\u0440\u0435\u0437 <em>dmenu<\/em> \u0432\u044b\u0437\u044b\u0432\u0430\u044e <em>st<\/em>).<\/p>\n<h2>tmux<\/h2>\n<p>  \u042f \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0436\u0438\u0437\u043d\u0438 \u0431\u0435\u0437 <em>tmux<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0430\u0451\u0442 \u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u043d\u0451\u043c, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430, tab-\u044b (\u043d\u0435 \u0432\u043f\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0436\u0435 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430!), \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u2014 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043b\u044e\u0434\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442. GNU Screen \u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043c\u043e\u043d\u0441\u0442\u0440 (\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430), \u0435\u0449\u0451 \u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0444\u0438\u0447.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, <em>tmux<\/em> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f read-only \u043f\u043e\u043a\u0430\u0437\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b (\u043f\u0430\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435). \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043f\u043e\u0434\u0441\u0443\u043d\u0443\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u0438 SSH \u043b\u043e\u0433\u0438\u043d\u0435 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 read-only \u0440\u0435\u0436\u0438\u043c\u0435 \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 <em>tmux<\/em> \u0441\u043e\u043a\u0435\u0442\u0443, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432 \u043f\u0440\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043d\u0435\u0433\u043e:<\/p>\n<pre> ----- ~guest\/.ssh\/config ----- restrict,pty,command=&quot;tmux -S \/tmp\/arbeit.sock attach-session -r&quot; \\     ssh-ed25519 ... colleague@arbeit.ru <\/pre>\n<p>  \u041e\u0442 suckless \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <em>abduco<\/em> \u0438 <em>dvtm<\/em> \u043a\u0430\u043a \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u041d\u043e, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0442\u0430\u043c \u043d\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 copy-paste \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430. \u0425\u043e\u0442\u044f \u0438\u0434\u0435\u044e \u0443\u0432\u0430\u0436\u0430\u044e, \u0432\u0441\u044f\u043a\u043e \u043b\u0443\u0447\u0448\u0435 GNU Scre\u0435n.<\/p>\n<p>  \u0410 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0430\u0447\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>tmux<\/em> \u043f\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c: \u0431\u044b\u043b \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0443\u0447\u0443 \u0434\u0435\u043c\u043e\u043d\u043e\u0432, \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0443\u0447\u0443 \u043b\u043e\u0433\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043a\u0430\u043a-\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u043a\u0443\u0447\u0438 \u043e\u043a\u043e\u043d, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u0431\u0438\u0442\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0441\u0441\u0438\u0438 \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u043e\u043a\u043d\u0430\u043c\u0438: root shell \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 pane, \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f email, \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c <em>newsboat<\/em>, \u043e\u043a\u043d\u043e \u0441 distributed.net \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0442\u0430\u043c \u0435\u0449\u0451 \u0431\u044b\u043b\u043e \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f:<\/p>\n<pre> ----- ~\/bin\/start-root ----- #!\/bin\/zsh  paste() {     local pane=&quot;$1&quot;     local cmd=&quot;$2&quot;     tmux set-buffer &quot;$cmd&quot;     tmux paste-buffer -t &quot;$pane&quot;     tmux delete-buffer     tmux send-keys -t &quot;$pane&quot; Enter }  tmux has-session -t root &amp;&amp; exit tmux new-session -d -s root tmux rename-window -t root:1 su tmux split-window -t root:1 tmux split-window -h -t root:1 tmux split-window -h -t root:1.0  paste root:1.0 &quot;ssh-add&quot; paste root:1.1 &quot;su -&quot; paste root:1.2 &quot;su -&quot; paste root:1.3 &quot;su -&quot; tmux new-window -t root:2 -n email tmux new-window -t root:3 -n rss paste root:3 &quot;newsboat&quot; tmux new-window -t root:4 -n dnetc paste root:4 &quot;cd dnetc&quot; tmux select-window -t root:1.0  CMD=&quot;tmux attach-session -t root&quot; CMDTITLE=&quot;Terminal1&quot; ~\/bin\/dwm-term &amp; <\/pre>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043c\u0430\u0448\u0438\u0441\u0442\u044b\u0435 \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0445\u043e\u0442\u044f \u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0434\u0435\u0432\u044f\u0442\u044c \u043e\u043a\u043e\u043d, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u041f\u043e\u0447\u0435\u043c\u0443 \u0434\u0435\u0432\u044f\u0442\u044c? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f prefix+\u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>  \u0411\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0447\u0430\u044f\u043d\u043d\u043e \u0437\u0430\u043a\u0440\u043e\u044e \u043e\u043a\u043d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 (\u0444\u043e\u043a\u0443\u0441 \u0431\u044b\u043b \u043d\u0435 \u0442\u0430\u043c \u0433\u0434\u0435 \u043d\u0430\u0434\u043e). \u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0443\u0436\u043d\u043e\u0439 <em>tmux<\/em> \u0441\u0435\u0441\u0441\u0438\u0438 \u043b\u0435\u0433\u043a\u043e: Alt-P, \u043f\u0438\u0448\u0443 dwm-term-session (\u0438\u043c\u044f \u0434\u043e\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f tab-\u043e\u043c), \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 (\u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u0435\u0451 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440), Enter.<\/p>\n<pre> ----- ~\/bin\/dwm-term-session ----- #!\/bin\/sh CMD=&quot;tmux attach-session -t $@&quot; $HOME\/bin\/dwm-term &amp; <\/pre>\n<p>  \u041f\u043e\u043a\u0430\u0436\u0443 \u043a\u043e\u043d\u0444\u0438\u0433 <em>tmux<\/em> \u0447\u0430\u0441\u0442\u044f\u043c\u0438:<\/p>\n<pre> ----- ~\/.tmux.conf ----- set-option -g mode-keys vi set-option -g base-index 1 set-option -g default-terminal &quot;screen-256color&quot; set-option -g escape-time 1 set-option -g repeat-time 0 set-option -g history-limit 20000 set-option -g renumber-windows on <\/pre>\n<ul>\n<li>vi-\u0440\u0435\u0436\u0438\u043c \u0432\u0432\u043e\u0434\u0430.<\/li>\n<li>\u041d\u0430\u0447\u0430\u043b\u043e \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u043a\u043e\u043d \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u0418\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u043e\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u043e\u0442 1\/2\/3.<\/li>\n<li><em>escape-time<\/em> \u0438 <em>repeat-time<\/em> \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b\u00bb \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043a\u043e\u0433\u0434\u0430 <em>tmux<\/em> \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0435\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 prefix. \u0423 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u0438\u0445 use-case-\u043e\u0432 \u043d\u0435\u0442, \u0430 \u0432\u043e\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0435\u043d\u044f \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442.<\/li>\n<li><em>renumber-windows<\/em> \u043f\u0435\u0440\u0435\u043d\u0443\u043c\u0435\u0440\u0443\u0435\u0442 \u043e\u043a\u043d\u0430 \u043a\u043e\u0433\u0434\u0430 \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/li>\n<\/ul>\n<pre> ----- ~\/.tmux.conf ----- set-option -g prefix C-a unbind-key C-b bind-key C-a send-prefix bind-key -n C-PgUp previous-window bind-key -n C-PgDn next-window bind-key -n S-PgUp copy-mode -u <\/pre>\n<ul>\n<li>\u0422\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 prefix \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. Emacs \u0438\u043b\u0438 GNU Screen \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 Ctrl-A \u0443 \u043c\u0435\u043d\u044f \u043d\u0438 \u0441 \u0447\u0435\u043c \u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442. \u0417\u0430\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 <em>tmux<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b.<\/li>\n<li>Ctrl-PageUp\/PageDown \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0442\u0443\u0434\u0430-\u043e\u0431\u0440\u0430\u0442\u043d\u043e tab-\u044b. \u041f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u043e \u0432\u0440\u0435\u043c\u0451\u043d \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c <em>urxvt<\/em>.<\/li>\n<li>Shift-PageUp \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 scrollback \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0432\u044b\u0448\u0435. \u0423\u043b\u044c\u0442\u0440\u0430 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u044b\u0432\u043e\u0434 \u0443\u0431\u0435\u0436\u0430\u043b \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u044d\u043a\u0440\u0430\u043d\u0430.<\/li>\n<\/ul>\n<pre> ----- ~\/.tmux.conf ----- bind '&quot;' split-window -c &quot;#{pane_current_path}&quot; bind % split-window -h -c &quot;#{pane_current_path}&quot; bind c new-window -c &quot;#{pane_current_path}&quot; <\/pre>\n<p>  \u042d\u0442\u043e \u0432\u0441\u0451 \u0448\u0442\u0430\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f pane-\u043e\u0432 \u0438 tab-\u043e\u0432. \u041e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c <em>pane_current_path<\/em>, \u0447\u0442\u043e\u0431\u044b \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0435 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0430 \u043d\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439. \u042d\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435! \u041d\u0430\u0445\u043e\u0436\u0443\u0441\u044c \u0432 <em>~\/foo\/bar\/baz<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u0440\u044f\u0434\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c: \u0441\u043e\u0437\u0434\u0430\u044e pane \u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0441\u044c \u0432 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<pre> ----- ~\/.tmux.conf ----- bind ] paste-buffer -p <\/pre>\n<p>  \u0428\u0442\u0430\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430, \u043d\u043e \u0441 <em>-p<\/em> \u043e\u043f\u0446\u0438\u0435\u0439, \u0434\u0435\u043b\u0430\u044e\u0449\u0435\u0439 bracketed paste. \u0423\u0434\u0440\u0443\u0447\u0430\u0435\u0442 \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043b\u044e\u0434\u0435\u0439 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u044d\u0442\u043e\u0442 paste. \u0423\u0436\u0430\u0441\u0430\u044e\u0441\u044c \u043a\u043e\u0433\u0434\u0430 \u0432 Vim \u043e\u0442\u0434\u0430\u044e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <em>:set paste<\/em>, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u0442\u043e\u043c <em>:set nopaste<\/em>. \u0423 \u043a\u043e\u0433\u043e-\u0442\u043e, \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c paste \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u0431\u0438\u0442\u044b\u0439 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435. \u0410 \u0447\u0430\u0449\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a: \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0441\u0442, \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0432\u0441\u044f\u043a\u0438\u043c\u0438 autoindent-\u0430\u043c\u0438 \u043a\u043e\u0440\u0451\u0436\u0438\u0442\u0441\u044f, \u0430 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f as-is), \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0442\u043c\u0435\u043d\u0443, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 paste \u0440\u0435\u0436\u0438\u043c, \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0438 \u0442.\u0434\u2026 \u0418 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u0445\u0443\u0434\u0448\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u0438\u0431\u043e \u0435\u0441\u043b\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0442\u043e \u043e\u0442\u043c\u0435\u043d\u0430 \u0443\u0431\u0435\u0440\u0451\u0442 \u0435\u0433\u043e \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435.<\/p>\n<p>  Bracketed paste \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u0435 escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0423\u0432\u0438\u0434\u0435\u0432 \u0438\u0445, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u00ab\u0441\u044b\u0440\u043e\u0433\u043e\u00bb \u0442\u0435\u043a\u0441\u0442\u0430, \u0430 \u043d\u0435 \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u0432\u0432\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u041d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0440\u0435\u0434\u043a\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u00ab\u0441\u043f\u043e\u0441\u043e\u0431\u00bb \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0433\u0434\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0443\u0432\u0438\u0434\u0438\u0442 \u043b\u0438\u0448\u043d\u0438\u0435 escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. Vim, <em>zsh<\/em> (\u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a), <em>irssi<\/em> \u0435\u0433\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 GNU Readline \u0438\u043b\u0438 libedit.<\/p>\n<pre> ----- ~\/.tmux.conf ----- set-option -g status-style &quot;bg=black,fg=white&quot; set-option -g status-left &quot;#S&gt;&quot; set-option -g status-right &quot;#T&quot; set-option -g status-justify centre  set-window-option -g automatic-rename on set-window-option -g window-status-format &quot;#I:#W:#T#F&quot; set-window-option -g window-status-style &quot;bg=green fg=black&quot; set-window-option -g window-status-current-format &quot;#I:#W#F&quot; set-window-option -g window-status-current-style &quot;bg=red&quot; set-window-option -g window-status-last-style &quot;bg=cyan&quot; <\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0446\u0432\u0435\u0442\u043e\u0432 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043d\u0430 tab-\u0430\u0445 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c: \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u043e\u043a\u043d\u043e \u0441 alert\/urgency. \u0418\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u044d\u0442\u043e \u043d\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u0442\u0443\u0442 \u2014 <em>automatic-rename<\/em>. \u0415\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u044b\u0435 OSC escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u043d\u0435\u043a\u0438\u0439 title \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041e\u043f\u0446\u0438\u044f <em>tmux<\/em> \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u0435 tab \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0412 tab-\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>vim<\/em>), \u0430 \u0435\u0433\u043e title \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u0432 \u0443\u0433\u043b\u0443 (\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e <em>mysetup.html<\/em>). \u0410 tab \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438 \u0438\u043c\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 title (<em>vim:mysetup.html<\/em>). \u042d\u0442\u043e \u00ab\u0440\u0430\u0437\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u00bb \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 tab-\u044b \u0433\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u043a\u0443\u0447\u0430 <em>vim<\/em>-\u043e\u0432 \u0441 \u0434\u043b\u0438\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<pre> ----- ~\/.tmux.conf ----- bind-key b set-option status <\/pre>\n<p>  \u0422\u0443\u0442 prefix+B \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043a\u0440\u044b\u0442\u0438\u044f\/\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f <em>tmux<\/em>. \u041d\u0435\u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u0435\u0451 \u0441 \u0433\u043b\u0430\u0437 \u0434\u043e\u043b\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u043e\u0437\u043e\u043b\u0438\u043b\u0430 \u0438\u0445, \u043e\u0442\u043d\u0438\u043c\u0430\u044f \u0446\u0435\u043b\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430. \u0410 Alt+b \u0443\u0431\u0435\u0440\u0451\u0442 \u0435\u0449\u0451 \u0438 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f <em>dwm<\/em>, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b.<\/p>\n<pre> ----- ~\/.tmux.conf ----- bind-key y {     capture-pane -J     save-buffer \/tmp\/tmux-buffer     delete-buffer     split-window 'vim -c &quot;set listchars=&quot; -c &quot;match ExtraWhitespace \/\/&quot; \/tmp\/tmux-buffer' } bind-key Y {     capture-pane -J -S - -E -     save-buffer \/tmp\/tmux-buffer     delete-buffer     split-window 'vim -c &quot;set listchars=&quot; -c &quot;match ExtraWhitespace \/\/&quot; \/tmp\/tmux-buffer' } <\/pre>\n<p>  Prefix+y \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043e\u0442\u043a\u0440\u044b\u0432 \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 Vim-\u043e\u043c \u043d\u0430 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0427\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u0430\u043a-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0441 \u043d\u0438\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. Prefix+Y \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430.<\/p>\n<pre> ----- ~\/.tmux.conf ----- bind-key u {     capture-pane -J     save-buffer \/tmp\/tmux-buffer     delete-buffer     display-popup -KE -w 100% -R &quot;urlview \/tmp\/tmux-buffer&quot; } <\/pre>\n<p>  \u0412\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0447\u0442\u043e \u0432 Mutt, \u043d\u0430\u0436\u0430\u0432 Ctrl-B \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c <em>urlview<\/em> \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0441\u0441\u044b\u043b\u043e\u043a \u0438\u0437 \u043f\u0438\u0441\u044c\u043c\u0430. Prefix+u \u0432 <em>tmux<\/em> \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430. \u041f\u0440\u0438\u0447\u0451\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 <em>urlview<\/em> \u043e\u043d \u0432 popup-\u0435: \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0441\u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0438\u0441\u0443\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043e\u043a\u043d\u043e.<\/p>\n<pre> ----- ~\/.tmux.conf ----- bind-key t display-menu \\     music t &quot;display-popup -KE -w 100% -R ~\/bin\/tmux-menu-music.sh&quot; \\     pass p &quot;display-popup -KE -R ~\/bin\/tmux-menu-pass-session.sh&quot; \\     dict d &quot;display-popup -KE -h 100% -R ~\/bin\/tmux-menu-dict.sh&quot; \\     calc c &quot;display-popup -KE -R ~\/bin\/tmux-menu-calc.sh&quot; \\     cal l &quot;display-popup -R \\&quot;cal -3N\\&quot;&quot; \\     top o &quot;display-popup -KE -h 100% -R \\&quot;top -s 1\\&quot;&quot; <\/pre>\n<p>  \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043c\u043e\u0433\u0443 \u0436\u0438\u0442\u044c. \u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u043e\u043c\u043e\u0434\u043d\u0430\u044f \u0444\u0438\u0448\u043a\u0430 <em>tmux<\/em>: \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u043d\u044e (\u043f\u043e\u0432\u0435\u0440\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043e\u043a\u043e\u043d), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0447\u0442\u043e-\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u043c \u043f\u043e\u043a\u0430\u0437\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e). \u0423 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0435\u0441\u0442\u044c \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0443 \u043c\u0435\u043d\u044f \u2014 \u043f\u043e\u043a\u0430\u0437 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f. \u0420\u0430\u0437 \u043e\u043d \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439, \u0440\u0430\u0437 \u043f\u043e\u043a\u0430\u0437 \u043c\u0435\u043d\u044e \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 <em>t<\/em> \u043a\u043b\u0430\u0432\u0438\u0448\u0435, \u0442\u043e \u0438 \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u0442\u043e\u0436\u0435 \u043d\u0430 <em>t<\/em>, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0436\u0430\u0442\u044c Super+t+t.<\/p>\n<pre> ----- ~\/bin\/tmux-menu-music.sh ----- #!\/bin\/sh tmux has-session -t music || {     tmux new-session -d -s music -c ~\/tmp\/music     tmux set-option -t music status off } exec tmux attach-session -t music <\/pre>\n<p>  \u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044c \u0443 \u043c\u0435\u043d\u044f \u2014 \u044d\u0442\u043e <em>tmux<\/em> \u0441\u0435\u0441\u0441\u0438\u044f \u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439. \u0413\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0438 <em>cmus<\/em> \u0438 <em>moc<\/em> \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0438\u0445 \u0431\u044b\u043b\u0430 gapless playback \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u041d\u043e \u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043d\u0430 <em>mpv<\/em> \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c gapless \u0440\u0435\u0436\u0438\u043c, \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<pre> ----- ~\/bin\/tmux-menu-pass-session.sh ----- #!\/bin\/sh while tmux has-session -t pass ; do echo waiting... ; sleep 1 ; done tmux new-session -d -s pass rlwrap --history-filename \/dev\/null ~\/bin\/tmux-menu-pass.sh tmux set-option -t pass status off exec tmux attach-session -t pass <\/pre>\n<pre> ----- ~\/bin\/tmux-menu-pass.sh ----- #!\/bin\/sh while :; do     echo -n &quot;&gt; &quot;     read pass     passman has &quot;$pass&quot; &amp;&amp; break done exec passman &quot;$pass&quot; &gt;\/dev\/null <\/pre>\n<p>  Popup \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0442\u043e \u0436\u0434\u0451\u043c \u043f\u043e\u043a\u0430 \u043e\u043d \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442. \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u0441 \u0432\u0432\u043e\u0434\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0449\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 shell \u0441\u043a\u0440\u0438\u043f\u0442 <a href=\"http:\/\/www.git.stargrave.org\/?p=passman.git;a=blob;f=passman\" rel=\"nofollow noopener noreferrer\">passman<\/a>. \u0421\u0430\u043c\u0438 \u043f\u0430\u0440\u043e\u043b\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432: <em>\u0414\u041e\u041c\u0415\u041d\/\u041b\u041e\u0413\u0418\u041d\/passwd<\/em> \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 (\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0432 tmpfs \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c GnuPG \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>~\/.passmandb\/habr.ru\/stargrave+habrahabr@stargrave.org\/passwd<\/em> \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0425\u0430\u0431\u0440. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0449\u0443 <em>passman habr<\/em>, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u043b\u043e\u0433\u0438\u043d \u0438 \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043c\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442 <em>habr.ru\/stargrave+habrahabr@stargrave.org<\/em>. \u041d\u043e \u0435\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u044e \u0437\u0430\u043f\u0440\u043e\u0441 <em>passman free<\/em>, \u0442\u043e \u043c\u043d\u0435 \u0432\u044b\u0432\u0435\u0434\u0443\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b:<\/p>\n<pre> freenode\/stargrave freenet bugs.freebsd.org\/stargrave@stargrave.org <\/pre>\n<p>  \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0432 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u041f\u0440\u0438 \u0443\u0441\u043f\u0435\u0445\u0435, \u0432 primary X11 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u043d, \u0430 \u0432 clipboard \u0431\u0443\u0444\u0435\u0440 \u0443\u0436\u0435 \u0441\u0430\u043c \u043f\u0430\u0440\u043e\u043b\u044c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043f\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434 \u0438 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u0431\u0443\u0444\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u2014 \u0434\u0430\u0431\u044b \u0442\u0430\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f \u0432\u0435\u0447\u043d\u043e. \u0414\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 Shift+Insert \u0438 Alt+Shift+Insert-\u043e\u043c \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0438 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c. \u0410 \u0432 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0442\u0440\u0435\u0442\u044c\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043c\u044b\u0448\u043a\u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442 \u043b\u043e\u0433\u0438\u043d, \u0430 Ctrl-V \u043f\u0430\u0440\u043e\u043b\u044c. \u0415\u0441\u043b\u0438 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e passman \u0447\u0435\u0440\u0435\u0437 <em>dmenu<\/em>. <em>passman gen<\/em> \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c. \u0417\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 <em>mkdir+echo<\/em>. \u0422\u0430\u043a\u0438\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0451\u043d, \u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043d \u043c\u0435\u043d\u0435\u0435 50 \u0441\u0442\u0440\u043e\u043a POSIX shell \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u041f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u044f\u043a\u0438\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0436\u0435, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, GnuPG \u0438 SSH \u043a\u043b\u044e\u0447\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0444\u0440\u0430\u0437\u044b, \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 100\u00b120 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/p>\n<pre> ----- ~\/bin\/tmux-menu-dict.sh ----- #!\/bin\/sh word=$(rlwrap -S &quot;&gt; &quot; head -1) sdcv &quot;$word&quot; | exec less <\/pre>\n<pre> ----- ~\/.zshenv ----- export STARDICT_DATA_DIR=$HOME\/dic export SDCV_HISTSIZE=0 <\/pre>\n<p>  \u041f\u043e\u0438\u0441\u043a \u0441\u043b\u043e\u0432\u0430 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u0445. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"http:\/\/dushistov.github.io\/sdcv\/\" rel=\"nofollow noopener noreferrer\">sdcv<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0438 StarDict \u0441\u043b\u043e\u0432\u0430\u0440\u0438, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0435 \u0441 SourceForge.net. \u0417\u0430\u0447\u0435\u043c \u0442\u0443\u0442 <em>rlwrap<\/em>? \u041f\u0440\u043e\u0441\u0442\u043e <em>read<\/em> \u0432\u044b\u0437\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u043f\u043b\u043e\u0445\u043e \u0434\u0440\u0443\u0436\u0438\u0442 \u0441 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 (\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 readline wrapper \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0430 \u043d\u0430 \u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0435 \u0443\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0447\u0438\u0441\u0442\u044b\u0439 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<pre> ----- ~\/bin\/tmux-menu-calc.sh ----- #!\/bin\/sh tmux has-session -t calc || {     tmux new-session -d -s calc ~\/bin\/zc     tmux set-option -t calc status off } exec tmux attach-session -t calc <\/pre>\n<pre> ----- ~\/bin\/zc ----- #!\/bin\/sh # natural logarithm: 1000lLx 10lLx \/p # sum of everything in stack: lSxp pre=&quot;5k 10o \\     [1-d2+\/d2*Skd*Sy0Ss10K^Sp[d1r\/lk*ls+lsrdss-lp*d*1[s_q]s_&gt;_lkly*sk2+lfx] \\     Sf1lfxLsLkLyLpLfs_s_s_s_]sL \\     [0d[+2z&gt;a]salax]sS &quot; exec rlwrap \\     --history-filename \/tmp\/.dc_history \\     --substitute-prompt &quot;&gt; &quot; \\     --prompt-colour=red \\     --wait-before-prompt -1 \\     --pre-given &quot;$pre&quot; dc <\/pre>\n<p>  \u0410 \u044d\u0442\u043e \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0435\u0439 \u043c\u0435\u0447\u0442\u044b. \u0415\u0449\u0451 \u0432 \u0448\u043a\u043e\u043b\u0435 \u0445\u043e\u0442\u0435\u043b \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%9A-52\" rel=\"nofollow noopener noreferrer\">\u041c\u041a-52<\/a>: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0441\u0442\u0435\u043a\u043e\u0432\u044b\u0439 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0441\u043a\u043e\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0435\u0439. <em>dc<\/em>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 PDP-11 \u0435\u0449\u0451 \u0434\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f Unix, \u043a\u0430\u043a \u0440\u0430\u0437 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c, \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0432 \u043b\u044e\u0431\u043e\u0439 POSIX \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0451\u043c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u043b\u044e\u0448\u0435\u043a \u2014 \u0441\u044b\u0440\u043e\u0439 \u0432\u0432\u043e\u0434 \u0438\u0437 stdin. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u043c\u043b\u044f\u044e \u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432 \u0432 <em>rlwrap<\/em>.<\/p>\n<p>  \u0412\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0448\u0442\u0430\u0442\u043d\u043e \u043d\u0435\u0442 \u0432 <em>dc<\/em>. \u0413\u0434\u0435-\u0442\u043e \u043d\u0430\u0448\u0451\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0443\u044e \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e \u0435\u0451 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <em>L<\/em>. \u0410 \u0447\u0435\u0440\u0435\u0437 \u0444\u043e\u0440\u043c\u0443\u043b\u044b, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0435\u0451 \u0441\u043e \u0448\u043a\u043e\u043b\u044b, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u044b \u0438 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044e. \u041f\u043b\u044e\u0441 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u044d\u043a\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <em>S<\/em>. \u0412\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e \u0432 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e, \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043f\u043e\u043b\u044c\u0441\u043a\u0443\u044e \u043d\u043e\u0442\u0430\u0446\u0438\u044e, \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445\/\u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u041f\u0440\u0435\u0436\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 <em>zsh<\/em> \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 <em>zcalc<\/em>. \u0412 \u043d\u0451\u043c \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c RPN \u0440\u0435\u0436\u0438\u043c, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0436\u0430\u0442\u0438\u044f Enter \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u044a\u0435\u0434\u0430\u0435\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0415\u0449\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Python, \u043d\u043e \u043b\u044e\u0442\u043e \u043d\u0435\u0433\u043e\u0434\u043e\u0432\u0430\u043b \u0438\u0437-\u0437\u0430 \u0435\u0433\u043e \u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0439 \u043d\u0430 \u0433\u043b\u0430\u0437.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0435\u043d\u044e: \u043f\u043e\u043a\u0430\u0437 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u043d\u0430 \u0442\u0440\u0438 \u043c\u0435\u0441\u044f\u0446\u0430 \u0438 \u043f\u043e\u043a\u0430\u0437 <em>top<\/em>.<\/p>\n<h2>cd<\/h2>\n<pre> ----- ~\/.tmux.conf ----- bind-key o display-menu \\     find o &quot;display-popup -KE -w 100% -R \\&quot;~\/bin\/tmux-fzf.zsh find '#{pane_current_path}'\\&quot;&quot; \\     buf-files f &quot;display-popup -KE -w 100% -R \\&quot;~\/bin\/tmux-fzf.zsh buf-files '#{pane_current_path}'\\&quot;&quot; \\     git-files g &quot;display-popup -KE -w 100% -R \\&quot;~\/bin\/tmux-fzf.zsh git-files '#{pane_current_path}'\\&quot;&quot; \\     git-branches b &quot;display-popup -KE -w 100% -R \\&quot;~\/bin\/tmux-fzf.zsh git-branches '#{pane_current_path}'\\&quot;&quot; \\     git-commits c &quot;display-popup -KE -w 100% -R \\&quot;~\/bin\/tmux-fzf.zsh git-commits '#{pane_current_path}'\\&quot;&quot; <\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043c\u0435\u043d\u044e <em>tmux<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f fuzzy finder <em>fzf<\/em> \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<pre> ----- ~\/bin\/tmux-fzf.zsh ----- #!\/usr\/bin\/env zsh  cd $2 set -e tmp=`mktemp` trap &quot;rm -f $tmp&quot; HUP PIPE INT QUIT TERM EXIT  case $1 in (find)     find . -mindepth 1 -path &quot;*\/.git&quot; -prune -o \\         \\( -type f -o -type d -o -type l \\) -print |     cut -c3- | fzf -m --preview=&quot;less -N -S {}&quot; |     while read fn ; do print ${(q)fn} ; done &gt; $tmp     ;; (buf-files)     tmux capture-pane -J     tmux save-buffer $tmp.capture     trap &quot;rm -f $tmp.capture&quot; HUP PIPE INT QUIT TERM EXIT     tmux delete-buffer     pe &lt; $tmp.capture &gt; $tmp     ;; (git-files) git status --short | fzf -m | perl -npe 's\/^\\s*\\S+\\s+\/\/' &gt; $tmp ;; (git-branches) { git branch ; git branch --remote } | fzf &gt; $tmp ;; (git-commits)     git --no-pager log --oneline -n 20 | perl -ne &quot;print \\&quot;@~\\$n \\$_\\&quot;; \\$n++&quot; |     fzf --reverse | cut -w -f1 &gt; $tmp     ;; (*) echo unknown command ; sleep 1 ; exit ;; esac  [ -s $tmp ] || exit tmux set-buffer &quot;`perl -npe 's\/\\n\/ \/g' $tmp`&quot; tmux paste-buffer tmux delete-buffer <\/pre>\n<p>  <em>fzf<\/em> \u043d\u0430\u0447\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u043f\u0440\u0435\u0436\u0434\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043b \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f: \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c <em>cd<\/em>. \u042d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u0438\u0449\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u041d\u043e \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0448\u043b\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0436\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, fuzzy \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. <em>fzf<\/em> \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e \u0432\u044b\u0431\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<ul>\n<li><em>find<\/em> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u0449\u0435\u0442 \u0444\u0430\u0439\u043b\u044b, \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0443\u043b\u044c\u0442\u0438\u0432\u044b\u0431\u043e\u0440\u0430, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f <em>less<\/em>-\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0444\u0430\u0439\u043b\u0430. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f <em>zsh<\/em> \u0438\u043b\u0438 <em>tmux<\/em> \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0441 <em>fzf<\/em>? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0442\u0430\u043c \u043a\u0443\u0447\u0430 hard-code-\u0430 \u043d\u0430 <em>bash<\/em> \u2014 \u043e\u0442\u0431\u0438\u0432\u0430\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, <em>zsh<\/em> \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u0442\u044a\u0435\u0434\u0430\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043a\u0430\u0437\u0430 <em>fzf<\/em>, \u0430 \u0434\u043b\u044f <em>tmux<\/em>-\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 split, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c, \u0438\u0437-\u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043e\u043a\u043d\u0430, \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u0432\u0435\u0440\u043a\u0430\u043d\u044c\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u043e\u043a\u043d\u0430\u0445. <em>fzf<\/em> \u0432 popup \u043e\u043a\u043d\u0435 \u043b\u0438\u0448\u0451\u043d \u044d\u0442\u0438\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432.<\/li>\n<li><em>buf-files<\/em> \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0438\u0449\u0435\u0442 \u0432 \u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0435 \u0432\u0441\u0451 \u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c:\n<pre> ----- ~\/bin\/pe ----- #!\/bin\/zsh typeset -A seen path-extractor | while read fn ; do     [[ $seen[$fn] -eq 1 ]] &amp;&amp; continue     seen+=($fn 1)     print $fn done | fzf -m <\/pre>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u043f\u0440\u043e <em>fzf<\/em>. \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b: \u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0442\u043a\u043d\u0443\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439 \u0432 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u043a\u0430\u043a \u0432 Plan 9) \u0438 \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0441\u044f \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0448\u0435\u043b \u043d\u0430 <a href=\"https:\/\/github.com\/edi9999\/path-extractor\" rel=\"nofollow noopener noreferrer\">path-extractor<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0443, \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0430\u0432\u0438\u043b \u0435\u0451 \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0430 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443, \u043f\u043e\u0442\u043e\u043c \u043f\u0438\u043b\u0438\u043b \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u0438\u0448\u0451\u043b \u043a <em>fzf<\/em> \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0410 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0443 \u043c\u0435\u043d\u044f, \u0443\u0432\u0438\u0434\u0435\u0432 <a href=\"https:\/\/github.com\/facebook\/pathpicker\/\" rel=\"nofollow noopener noreferrer\">PathPicker<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0443.<\/li>\n<li><em>git-files<\/em> \u0434\u0430\u0451\u0442 \u0432\u044b\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 <em>git status<\/em>. \u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044e. \u041d\u0430\u0431\u0438\u0440\u0430\u0435\u043c <em>git add<\/em> (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043d\u0430\u0431\u0438\u0440\u0430\u044e <em>Ga<\/em>), \u0434\u0430\u043b\u044c\u0448\u0435 \u0436\u043c\u0451\u043c Super+o+g, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441 \u0444\u0430\u0439\u043b\u044b, Enter, \u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b \u0441 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043c\u0451\u043d \u043a \u0443\u0436\u0435 \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 <em>git add<\/em>. Commit \u0438 profit!<\/li>\n<li><em>git-branches<\/em> \u0434\u0430\u0451\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c git \u0432\u0435\u0442\u043a\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 remote-\u043e\u0432.<\/li>\n<li><em>git-commits<\/em> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, \u043d\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <em>@~XXX<\/em> \u043d\u043e\u0442\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u044d\u0448\u0430. \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0430 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e rebase \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0445\u044d\u0448\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432.<\/li>\n<\/ul>\n<pre> ----- ~\/.zshrc ----- export FZF_DEFAULT_OPTS=&quot;--color=16 --info=inline&quot; cf() {     local dir=$(find -L ${1:-.} -mindepth 1 -path &quot;*\/\\.git&quot; -prune -o -type d -print |         fzf --height 40% --reverse --preview=&quot;tree -CN {}&quot;)     [[ -z $dir ]] || { print -s cd $dir ; cd $dir } } <\/pre>\n<p>  <em>cf<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043a\u0430\u043a \u0438 <em>cd<\/em>, \u043d\u043e \u043e\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 <em>find+fzf<\/em>. \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 <em>tmux<\/em> popup-\u043e\u043c \u0438\u0449\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0432\u0435\u0437\u0434\u0435 \u0443\u0434\u043e\u0431\u0435\u043d. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0442\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <em>print -s<\/em> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e <em>zsh<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <em>cf XXX<\/em>.<\/p>\n<p>  \u0420\u0430\u0437 \u044d\u0442\u043e <em>zsh<\/em> \u043a\u043e\u0434, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 globbing-\u0430, \u044d\u043a\u043e\u043d\u043e\u043c\u044f \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b? \u0417\u0430\u0441\u0430\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 real-time, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a <em>find<\/em> \u0432\u0441\u0451 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043d\u0430 \u043b\u0435\u0442\u0443 \u0438 <em>fzf<\/em> \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0436\u0438\u0432\u0443\u044e, \u043f\u043e\u0440\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u044f \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a\u0443\u0434\u0430-\u0442\u043e \u043d\u0435\u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>  \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f <em>fzf<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e 16 \u0446\u0432\u0435\u0442\u043e\u0432, \u043a\u0430\u043a \u0438 \u0434\u043b\u044f Vim. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u043e\u043b\u0443\u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u0435\u0434\u043d\u044b\u0435 \u0431\u043b\u0451\u043a\u043b\u044b\u0435 \u0443\u043d\u044b\u043b\u044b\u0435 256-\u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043f\u043b\u043e\u0445\u0438\u043c \u0437\u0440\u0435\u043d\u0438\u0435\u043c. \u041b\u044e\u0431\u043b\u044e \u043a\u043e\u0433\u0434\u0430 \u0446\u0432\u0435\u0442\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u044f\u0440\u043a\u0438\u0435 \u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d\u043e \u044f\u0440\u043a\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u2014 \u0442\u043e \u0438\u0437\u0434\u0430\u043b\u0435\u043a\u0430 \u0443\u0432\u0438\u0436\u0443. \u0410 \u0431\u043b\u0435\u0434\u043d\u044b\u0435 256+ \u0446\u0432\u0435\u0442\u0430 \u0431\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u00ab\u0437\u0435\u043b\u0451\u043d\u044b\u0439 vs \u0441\u0430\u043b\u0430\u0442\u043e\u0432\u044b\u0439\u00bb. <em>info=inline<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u043f\u043e\u043c\u0435\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0438\u0441\u043a\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0432\u043e\u0434\u0430.<\/p>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u0435\u0439\u0448\u0438\u0445 \u0444\u0438\u0447 <em>zsh<\/em> \u2014 <em>autopushd<\/em>. \u041c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>bash<\/em> \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u0445\u0430\u043a\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>autopushd<\/em>, \u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0448\u043b\u043e: \u0433\u0434\u0435-\u0442\u043e \u0434\u0430 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0432\u044b\u043b\u0430\u0437\u0438\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0443 \u0437\u0430\u0431\u044b\u043b \u0437\u0430 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u044c\u044e). \u041d\u0443 \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u0436\u0435 \u043c\u043d\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 <em>pushd<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>cd<\/em>? \u0421\u043c\u044b\u0441\u043b <em>autopushd<\/em> \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 <em>cd<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <em>pushd<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432 \u0441\u0442\u044d\u043a\u0435. <em>popd<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u044d\u043a\u0430. <em>cd &#8212;<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u0442\u0443\u0434\u0430-\u043e\u0431\u0440\u0430\u0442\u043d\u043e. <em>pushd+popd<\/em> (<em>autopushd<\/em>) \u044d\u0442\u043e life-changing \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u0443\u0435\u0442.<\/p>\n<p>  \u041d\u043e \u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u043d\u0438\u0432, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 <em>popd<\/em> \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0441\u044c \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c! \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044e F4 \u0438 \u0434\u0430\u0436\u0435 \u0444\u0430\u043a\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <em>popd<\/em> \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f.<\/p>\n<pre> ----- ~\/.zshrc ----- popdquiet() { popd ; zle reset-prompt } zle -N popdquiet bindkey &quot;^[OS&quot; popdquiet # F4 <\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0441\u044c \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c <em>cd ..<\/em>! \u0417\u043d\u0430\u044e \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u044e\u0434\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0430\u043b\u0438\u0430\u0441\u044b \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u00ab\u0442\u043e\u0447\u0435\u043a\u00bb (<em>cd&#8230;.<\/em>) \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 n-\u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0432\u044b\u0448\u0435. \u042f \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044e F2, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430\u0432\u0435\u0440\u0445 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c \u0441\u0435\u0439\u0447\u0430\u0441. \u042d\u0442\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u043c <em>cd&#8230;..<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0449\u0451 \u0438 \u043b\u0435\u0433\u043a\u043e \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0440\u043e\u0432\u043d\u0435\u0439:<\/p>\n<pre> ~ |0-% cd ~pyg\/pygost\/asn1schemas autoenv: \/home\/stargrave\/work\/pygost\/.autoenv.zsh pygost\/asn1schemas 1|0-% \/home\/stargrave\/work\/pygost\/pygost        # F2! ~pyg\/pygost 1|0-% \/home\/stargrave\/work\/pygost                      # F2! ~pyg 1|0-% autoenv: \/home\/stargrave\/work\/pygost\/.autoenv_leave.zsh # F2! \/home\/stargrave\/work ~\/work |0-% \/home\/stargrave                                        # F2! ~ |0-% <\/pre>\n<pre> ----- ~\/.zshrc ----- cddotdot() { cd .. ; pwd ; zle reset-prompt } zle -N cddotdot bindkey &quot;^[OQ&quot; cddotdot # F2 <\/pre>\n<p>  \u041d\u043e \u0447\u0430\u0441\u0442\u043e \u043c\u044b \u043d\u0435 \u043f\u043e\u043c\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u043c \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>find<\/em> \u2014 \u043d\u043e \u0434\u043e\u043b\u0433\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c recursive globbing \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0438\u043f\u0430 <em>ls **\/*whatever*<\/em>. \u041d\u043e \u0442\u043e\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c. \u0421\u0434\u0435\u043b\u0430\u043b \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre> ----- ~\/.zshrc ----- f() { find . -name &quot;*$1*&quot; -print } <\/pre>\n<p>  \u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0445\u043e\u0442\u044c \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441 \u00abfoo\u00bb \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043f\u043e \u0432\u0441\u0435\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043c\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0431\u0440\u0430\u0442\u044c <em>f foo<\/em>. <em>print -C 1 **$1*<\/em> \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 F2\/F4 \u0441 <em>fzf<\/em>? \u0414\u043b\u044f \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u2014 \u043d\u0435\u0442. \u0412\u043e\u0442 \u0435\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442 XXX, \u0436\u0438\u0432\u0443\u0449\u0438\u0439 \u0432 <em>~\/work\/arbeit.ru\/XXX\/src<\/em>. \u0418 \u0435\u0441\u043b\u0438 \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e, \u0442\u043e \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043c\u043e\u0433\u0443 \u043d\u0430\u0439\u0442\u0438 <em>cd<\/em> \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 <em>zsh<\/em>. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430?<\/p>\n<pre> ----- ~\/.zshrc ----- while read w ; do     w=(${(s\/=\/)w})     hash -d ${w[1]}=${~${w[2]}} done &lt; ~\/.zhashd <\/pre>\n<pre> ----- ~\/.zhashd ----- pyg=~\/work\/pygost pyd=~\/work\/pyderasn XXX=~\/work\/arbeit.ru\/XXX\/src <\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432 XXX \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0433\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430\u0431\u0440\u0430\u0432 <em>cd ~XXX<\/em>. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e <em>~XXX<\/em>, \u0430 \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043f\u0443\u0442\u044c \u0434\u043e <em>&#8230;\/XXX\/src<\/em>. \u041c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0438 \u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0438\u0436\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0443\u0442\u0438: <em>vi ~XXX\/tests\/*bar.py<\/em>. \u0426\u0438\u043a\u043b \u0432 <em>.zshrc<\/em> \u0441\u0434\u0435\u043b\u0430\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c <em>hash -d XXX=\/path\/to\/XXX<\/em> \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 <em>~\/.zhashd<\/em>.<\/p>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/github.com\/rupa\/z\/\" rel=\"nofollow noopener noreferrer\">z<\/a> \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0438\u0445 \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u044f. \u041d\u043e \u0438\u0437-\u0437\u0430 \u043d\u0435\u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u0443\u0434\u0430 \u0432\u0441\u0451 \u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043f\u0430\u0434\u0443, \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b \u044d\u0442\u0443 \u0437\u0430\u0442\u0435\u044e.<\/p>\n<h2>git<\/h2>\n<p>  \u0420\u0430\u0437 \u0443\u0436\u0435 \u043d\u0430\u0447\u0430\u043b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c git \u0432 \u043c\u0435\u043d\u044e <em>tmux<\/em>, \u0442\u043e \u0434\u043e\u0431\u044c\u044e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0430\u043b\u0438\u0430\u0441\u043e\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a:<\/p>\n<pre> ----- ~\/.zshrc ----- alias Ga=&quot;git add&quot; alias Gb=&quot;git branch&quot; alias Gc=&quot;git checkout&quot; alias Gd=&quot;git diff&quot; alias Gdc=&quot;git diff --cached&quot; alias Gs=&quot;git show --show-signature&quot; alias Gm=&quot;git diff --name-only --diff-filter=M&quot; alias Gam=&quot;git commit --amend&quot; alias Gl=&quot;git log --oneline --graph --decorate=short&quot; alias Gld=&quot;git log --format=format:'%ai %Cgreen%h%Creset %s'&quot; bindkey -s &quot;^[OR&quot; &quot; git status --short\\n&quot; # F3 alias gg=&quot;git grep &quot; <\/pre>\n<pre> ----- ~\/.gitconfig | git config -l ----- alias.wt=worktree alias.unchanged=update-index --assume-unchanged <\/pre>\n<ul>\n<li>\u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u043d\u0430 git \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u044d\u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u044b\u0445 \u0447\u0442\u043e \u043b\u044e\u0434\u0438 \u0441\u0435\u0431\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442. \u0423 \u043c\u0435\u043d\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e. \u0421\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u0435\u0449\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u0430\u043b\u0438\u0430\u0441\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0430\u043b\u0438\u0430\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0430\u043c\u043e\u0433\u043e git, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044e\u0449\u0438\u0439 <em>git<\/em> \u043f\u0440\u0435\u0444\u0438\u043a\u0441.<\/li>\n<li>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u2014 \u0430\u0440\u0445\u0438\u0447\u0430\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u041f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0438\u0430\u0441 <em>Gt<\/em> \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c. \u041e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435 F3 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0441\u0432\u043e\u0434\u043a\u0443.<\/li>\n<li>\u041f\u043e\u0438\u0441\u043a \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f. \u0410 <em>git grep<\/em> \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c <em>grep<\/em>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0447\u0430\u0441\u0442\u043e, \u0447\u0442\u043e \u0438 <em>gg<\/em> \u0430\u043b\u0438\u0430\u0441 \u0441\u0434\u0435\u043b\u0430\u043b.<\/li>\n<\/ul>\n<pre> ----- ~\/.git-ignore ----- *.gch *.o *.pyc *.swp .autoenv.zsh .autoenv_leave.zsh .redo .tags start.sh <\/pre>\n<pre> ----- ~\/.gitconfig | git config -l ----- core.excludesfile=\/home\/stargrave\/.git-ignore <\/pre>\n<p>  \u042d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445.<\/p>\n<pre> ----- ~\/.gitconfig | git config -l ----- color.diff=auto color.status=auto color.branch=auto color.interactive=auto <\/pre>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0446\u0432\u0435\u0442\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u043e.<\/p>\n<pre> ----- ~\/.gitconfig | git config -l ----- advice.pushupdaterejected=false advice.detachedhead=false help.autocorrect=never <\/pre>\n<p>  \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u00ab\u043d\u043e\u0432\u0438\u0447\u043a\u0430\u00bb \u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u0435 \u0438\u0437\u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u043a\u043e\u0433\u0434\u0430 \u0432 \u0447\u0451\u043c-\u0442\u043e \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c. \u0410\u0432\u0442\u043e\u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f \u043c\u043d\u0435 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u0434\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043c\u043c\u0430\u043d\u0434.<\/p>\n<pre> ----- ~\/.gitconfig | git config -l ----- core.quotepath=false core.whitespace=blank-at-eol, space-before-tab, tab-in-indent, blank-at-eof format.useautobase=true grep.linenumber=true init.defaultbranch=master log.date=iso8601 notes.displayref=* push.default=current diff.tool=vimdiff merge.tool=vimdiff <\/pre>\n<ul>\n<li><em>quotepath<\/em> \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430. \u0418\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u044e \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b.<\/li>\n<li><em>whitespace<\/em> \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 whitespace-\u044b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432 diff.<\/li>\n<li><em>useautobase<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 hint-\u0430 \u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0432 \u043f\u0430\u0442\u0447\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 <em>format-patch<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439. \u041d\u0435 \u0437\u043d\u0430\u044e \u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u0438 merge.<\/li>\n<li><em>linenumber<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u043a\u0430\u0437 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 <em>git grep<\/em>.<\/li>\n<li><em>defaultbranch<\/em> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u0434\u0438\u043e\u0442\u0441\u043a\u0438\u043c \u0432\u0435\u044f\u043d\u0438\u044f\u043c \u0417\u0430\u043f\u0430\u0434\u0430.<\/li>\n<li><em>iso8601<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/li>\n<li><em>displayref<\/em> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 (notes) \u0438\u0437 \u0432\u0441\u0435\u0445 namespace-\u043e\u0432. \u041c\u043d\u043e\u0433\u0438\u0435 \u043b\u044e\u0434\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0441 notes-\u0430\u043c\u0438, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0441 \u043d\u0438\u043c\u0438.<\/li>\n<li><em>vimdiff<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 merge.<\/li>\n<\/ul>\n<pre> ----- ~\/.gitconfig | git config -l ----- pull.ff=only <\/pre>\n<p>  \u0412\u0430\u0436\u043d\u0430\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e\u0433\u043e merge \u043f\u043e\u0441\u043b\u0435 <em>git pull<\/em>. \u0412\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u0434 \u0447\u0451\u0442\u043a\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 merge, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043d\u0435\u0443\u043c\u0435\u043b\u044b\u0445 \u0440\u0443\u043a\u0430\u0445 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u043c\u0435\u0441\u0438\u0432\u043e.<\/p>\n<pre> ----- ~\/.gitconfig | git config -l ----- rerere.enabled=true <\/pre>\n<p>  <em>rerere<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b. \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 rebase-\u0430\u0445. \u0425\u043e\u0442\u044f \u0431\u044b\u043b\u0438 \u0438 \u0441\u043b\u0443\u0447\u0430\u0438 \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 <em>rerere<\/em> \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u043e \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b.<\/p>\n<pre> ----- ~\/.gitconfig | git config -l ----- diff.algorithm=histogram diff.colormoved=default diff.colormovedws=allow-indentation-change <\/pre>\n<p>  <em>histogram<\/em> \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u043b\u0443\u0447\u0448\u0438\u0435 diff-\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u2014 \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e. \u0410 <em>colormoved<\/em> \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0428\u0442\u0430\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u0432\u043e\u0442 \u043e\u0442\u0441\u044e\u0434\u0430 \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u0443\u0441\u043e\u043a, \u0430 \u0441\u044e\u0434\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u0443\u0441\u043e\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u2014 \u0438 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435. \u0421 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0434\u0430\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 indentation \u043d\u0435 \u0441\u043c\u0443\u0442\u0438\u0442 git \u043e\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<pre> ----- ~\/.gitconfig | git config -l ----- core.pager=diff-highlight | $PAGER <\/pre>\n<p>  \u0412 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 git \u0435\u0441\u0442\u044c <em>contrib\/diff-highlight<\/em> \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043b\u044f diff \u0432\u044b\u0432\u043e\u0434\u0430. \u0428\u0442\u0430\u0442\u043d\u043e git \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0431\u044b\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e: \u0432\u043e\u0442 \u0435\u0451 \u0441\u0442\u0430\u0440\u0430\u044f, \u0430 \u0432\u043e\u0442 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u0438. \u041f\u043e\u0434\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0434\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u0432\u0430 \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f! \u0421 \u044d\u0442\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u0438\u043d\u0432\u0435\u0440\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435.<\/p>\n<p>  \u042f \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>git bundle<\/em> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0430\u0447\u0435\u043a \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 store-and-forward \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 NNCP. \u0427\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u043f\u0435\u0440\u0435\u043a\u0438\u043d\u0443\u0442\u044c bundle \u0447\u0435\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0438\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0438\u043b\u0438 \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0445 \u0438 \u043f\u0440\u0430\u0432\u0430\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435 <em>.git<\/em> \u0432 <em>tar<\/em>.<\/p>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0445\u043e\u0441\u0442\u044f\u0442\u0441\u044f \u043d\u0430 GitHub, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\u041e\u043d \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u041f\u041e (\u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 JavaScript \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c). \u041a\u043e\u0433\u0434\u0430 \u0442\u043e, \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0440\u0430\u0431\u043e\u0442\u0430\u043b.<\/li>\n<li>\u0415\u0433\u043e terms of service \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043a\u0430\u043a \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 copyleft \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u043c\u0438 \u0442\u0438\u043f\u0430 GNU GPL. \u0410 \u044f \u044f\u0440\u044b\u0439 \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a copyleft.<\/li>\n<li>\u0422\u043e\u0442 \u043a\u0442\u043e \u043a\u0430\u043a-\u043b\u0438\u0431\u043e (\u0434\u0430\u0436\u0435 \u0431\u0443\u0434\u0443\u0447\u0438 \u0442\u0443\u0440\u0438\u0441\u0442\u043e\u043c) \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u041a\u0440\u044b\u043c\u043e\u043c, \u0418\u0440\u0430\u043d\u043e\u043c \u0438\u043b\u0438 \u0421\u0438\u0440\u0438\u0435\u0439 \u2014 \u043d\u0430 \u0440\u0430\u0437 \u0434\u0432\u0430, \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0431\u0430\u043d\u0435\u043d, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430. \u041e\u0442\u043d\u043e\u0448\u0443\u0441\u044c \u043a \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043b\u044e\u0434\u0435\u0439.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0430\u0442\u0447\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u0448\u0442\u0430\u0442\u043d\u044b\u043c Linux \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: <em>git format-patch<\/em> \u0438 <em>git send-email<\/em>. \u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0442\u043e \u043e\u0442\u0441\u044b\u043b\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438.<\/p>\n<h2>zsh<\/h2>\n<p>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0441\u044c \u043a <em>zsh<\/em> \u0438, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440? \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <em>tcsh<\/em>, <em>bash<\/em> \u0438 <em>zsh<\/em>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438 <em>ksh<\/em>. <em>bash<\/em> \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043b\u0438\u0434\u0435\u0440 \u043f\u043e \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0418\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0443\u043f\u0430\u044f \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443 <em>zsh<\/em>. \u041d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c <em>bash<\/em>.<\/p>\n<p>  \u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u0438\u0431\u043e \u043d\u0430 POSIX shell, \u043b\u0438\u0431\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 99% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0436\u0443 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 <em>#!\/bin\/bash<\/em>, \u0442\u043e \u0432 \u043d\u0451\u043c \u0438\u043b\u0438 \u0443\u0436\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 POSIX compatible \u043a\u043e\u0434, \u043b\u0438\u0431\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 POSIX. \u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0431\u0435\u0437\u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u0434\u0430\u0436\u0435 \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u0438\u0448\u0443\u0442. \u0414\u0430, shell \u0432 \u0446\u0435\u043b\u043e\u043c \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u043d\u0435 \u043b\u044e\u0431\u044f\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0435\u0433\u043e, \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e. \u041e\u0442\u0441\u044e\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: <em>#!\/bin\/bash<\/em> \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043b\u043e\u0445\u043e\u0439 \u043d\u0435\u0433\u0440\u0430\u043c\u043e\u0442\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0432\u0441\u0435\u0433\u0434\u0430 \u0438 \u0432\u0435\u0437\u0434\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041d\u043e \u043d\u0435 \u0434\u0430\u0440\u043e\u043c \u0432 Debian \u0438 AltLinux \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438 \u0434\u0436\u0438\u0445\u0430\u0434 \u043f\u0440\u043e\u0442\u0438\u0432 \u0431\u0430\u0448\u0438\u0437\u043c\u043e\u0432.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c POSIX shell \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0442\u043e <em>bash<\/em> \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u0435\u043d \u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435 \u0448\u0443\u0441\u0442\u0440. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 shell, \u0442\u043e, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 <em>bash<\/em> \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0435\u0433\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438: \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e GNU \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>  \u0421 <em>zsh<\/em> \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: 99.99% \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0442\u0435\u043c\u0443 \u00abwhy zsh?\u00bb, \u00abzsh vs bash\u00bb \u0431\u0443\u0434\u0443\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0448\u0442\u0443\u043a\u0430\u0445 \u0442\u0438\u043f\u0430 <em>oh-my-zsh<\/em> \u0438 \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 completer-\u043e\u0432. \u0418 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u0434\u043e\u043c. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0441\u0435 \u044d\u0442\u0438 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 completer \u043c\u043e\u0433\u0443\u0442 \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432\u0438\u0434\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u0430\u043a \u043b\u044e\u0434\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442, \u0437\u0430\u043c\u0435\u0447\u0430\u044e, \u0447\u0442\u043e \u043e\u043d\u0438 \u0438\u043b\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u0440\u0430\u0437\u0443\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u044f\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f completer-\u0430. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u043b\u044e\u0434\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u0435\u0431\u0440\u044f\u0445 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 completer-\u043e\u0432 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u043d\u0438\u0445: \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0438\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0438\u043b\u0438 man \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0438\u043c\u0435\u043d\u0438.<\/p>\n<p>  <em>zsh<\/em> \u0438\u043c\u0435\u0435\u0442 \u0443\u0431\u0435\u0440-\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u043c\u043e\u0449\u043d\u0435\u0439\u0448\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 completion! \u041a \u043d\u0435\u0439 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439. \u041d\u043e \u0440\u0435\u0434\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b \u043f\u043e\u0432\u044b\u0448\u0430\u043b\u0438 \u041a\u041f\u0414 \u0431\u0435\u0437 \u0442\u043e\u0440\u043c\u043e\u0437\u043e\u0432. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432\u0443\u0430\u043b\u0438\u0440\u0443\u044e\u0442 \u043d\u0435\u0437\u043d\u0430\u043d\u0438\u0435 \u041e\u0421 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f. \u00ab\u0421\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u00bb \u043d\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0442\u0430\u043a \u043a\u0430\u043a completer \u043d\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0441 \u0444\u0438\u0447\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0434\u0435\u043b\u0430\u044e\u0442 \u043c\u0435\u0434\u0432\u0435\u0436\u044c\u044e \u0443\u0441\u043b\u0443\u0433\u0443. \u041d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u0438\u0434\u0435\u043e \u0432 YouTube \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442.<\/p>\n<p>  <em>zsh<\/em> \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0431\u043e\u0433\u0430\u0442\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u0430\u0441\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u043b\u044e\u0448\u0435\u043a \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0431\u043e\u0433\u0430\u0442\u0435\u0439\u0448\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 substitution, history\/filename\/process\/whatever expansion, pattern matching, globbing \u0438 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u0443\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/zsh.sourceforge.io\/Guide\/zshguide.html\" rel=\"nofollow noopener noreferrer\">User&#8217;s guide to Z-Shell<\/a> \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c <em>print ${array[&reg;${(l.${#${(O@)array\/\/?\/X}[1]}..?.)}]}<\/em> \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0410 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/strcat.de\/zsh\/\" rel=\"nofollow noopener noreferrer\">zsh tips and tricks<\/a>, <a href=\"https:\/\/grml.org\/zsh\/zsh-lovers.html\" rel=\"nofollow noopener noreferrer\">zsh-lovers<\/a>, <a href=\"http:\/\/zzapper.co.uk\/zshtips.html\" rel=\"nofollow noopener noreferrer\">ZZapper&#8217;s tips<\/a>. \u0412\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u044f\u0442 \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0437\u0430 \u0441\u0447\u0451\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0418 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0437\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0443\u0440\u0441\u043e\u0440 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0442\u043e \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0442\u0430\u043a. \u0410 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 <em>zsh<\/em> \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0447\u0435\u043c \u0432 POSIX shell, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437-\u0437\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 <em>bash<\/em> \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041d\u043e, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f <em>virtualenv-wrapper<\/em> Python-\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u043d\u0451\u043c \u2014 \u0447\u0451\u0440\u0442 \u0443\u0436 \u0441 \u043d\u0438\u043c\u0438, \u0438\u0431\u043e <em>zsh<\/em> \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 <em>bash<\/em> \u043a\u043e\u0434\u043e\u043c, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f. \u0415\u0441\u043b\u0438 \u0431\u044b \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <em>zsh<\/em>, \u0442\u043e \u043c\u043e\u0439 \u0431\u044b \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0432\u0435\u0440\u0441\u0438\u0439 <em>ksh<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u043e\u0436\u0435 \u043c\u0430\u0441\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0443\u0434\u043e\u0431\u0441\u0442\u0432 \u0438 Bourne\/POSIX-like \u044f\u0437\u044b\u043a, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0447\u0443\u0436\u0434\u043e\u0433\u043e (\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e) <em>tcsh<\/em>. \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 <em>zsh<\/em> \u043d\u0435 \u0441\u0442\u0430\u0432\u043b\u044e, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0433\u043e\u043b\u044b\u0439 <em>\/bin\/sh<\/em> \u2014 \u0432\u0441\u0451 \u0436\u0435 \u0442\u0430\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041a <a href=\"https:\/\/fishshell.com\/\" rel=\"nofollow noopener noreferrer\">FISH<\/a> \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u044e \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 shell \u0432\u0441\u0435\u0440\u044c\u0451\u0437 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u043c\u043e\u0433\u0443: \u0431\u0435\u0433\u043b\u044b\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c \u0432\u0438\u0436\u0443 \u0447\u0442\u043e \u0432 \u043d\u0451\u043c \u0441\u043a\u0443\u0434\u043d\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043b\u044f substitution, expansion \u0438 globbing. \u041c\u043e\u0433\u0443 \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f, \u0438\u0431\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u043d\u043e \u0435\u0433\u043e \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 POSIX \u0432\u0441\u0451 \u0436\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0438 <em>tcsh<\/em>.<\/p>\n<p>  \u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0432 <em>zsh<\/em> \u043d\u0435\u0442 \u0442\u0440\u0451\u0445 \u0444\u0438\u0447 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 FISH-\u0435\u043c:<\/p>\n<ul>\n<li>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. \u0421\u043b\u0443\u0436\u0438\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043a\u043e\u0434\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u043f\u043e\u043c\u043e\u0447\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0418 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u2014 \u044d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442! \u0411\u043b\u0430\u0433\u043e \u0447\u0442\u043e \u0438\u0437-\u0437\u0430 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 <em>zsh<\/em> \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 <a href=\"https:\/\/github.com\/zsh-users\/zsh-syntax-highlighting\" rel=\"nofollow noopener noreferrer\">\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/a>:\n<pre> ----- ~\/.zshrc ----- ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets) . ~\/work\/zsh-syntax-highlighting\/zsh-syntax-highlighting.zsh typeset -A ZSH_HIGHLIGHT_STYLES ZSH_HIGHLIGHT_STYLES[assign]=&quot;fg=yellow&quot; ZSH_HIGHLIGHT_STYLES[commandseparator]=&quot;fg=red&quot; ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=&quot;fg=green,bold&quot; ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=&quot;fg=green&quot; ZSH_HIGHLIGHT_STYLES[globbing]=&quot;fg=magenta&quot; ZSH_HIGHLIGHT_STYLES[global-alias]=&quot;fg=yellow,bold&quot; ZSH_HIGHLIGHT_STYLES[history-expansion]=&quot;fg=magenta&quot; ZSH_HIGHLIGHT_STYLES[redirection]=&quot;fg=red&quot; ZSH_HIGHLIGHT_STYLES[path]=&quot;fg=white,underline&quot; ZSH_HIGHLIGHT_STYLES[path_pathseparator]=&quot;fg=white,bold,underline&quot; <\/pre>\n<p>  \u0412\u0441\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438, \u043a\u0440\u043e\u043c\u0435 \u043e\u0434\u043d\u043e\u0439, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u044e\u0442 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0445 \u043c\u0435\u043d\u044f \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u0426\u0435\u043d\u043d\u0435\u0439\u0448\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d!<\/li>\n<li>Autosuggestions \u0444\u0443\u043d\u043a\u0446\u0438\u044f: \u043a\u043e\u0433\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0415\u0441\u043b\u0438 shell \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 Up \u043e\u043d \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u043d\u0430 \u0443\u0436\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435, \u0442\u043e \u0441 autosuggestions, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442\u043e \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0435\u0449\u0451 \u043d\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u044f Up. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u043e\u0433\u043e-\u0434\u0432\u0443\u0445 \u043d\u0430\u0436\u0430\u0442\u0438\u0439: \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043d\u0430\u0436\u0430\u0442\u044c Up \u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, Down \u0447\u0442\u043e\u0431\u044b \u00ab\u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u00bb \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a \u043d\u0435\u0434\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0443. \u041d\u043e \u044d\u0442\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0432 \u0442\u043e\u043c \u043b\u0438 \u043c\u044b \u00ab\u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f\u00bb \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e! \u0427\u0443\u0434\u043e\u0432\u0438\u0449\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\n<pre> ----- ~\/.zshrc ----- . ~\/work\/zsh-autosuggestions\/zsh-autosuggestions.zsh ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=&quot;fg=cyan&quot; <\/pre>\n<p>  <\/li>\n<li>Substring \u043f\u043e\u0438\u0441\u043a \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439. \u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0448\u0443 \u0432 <em>zsh history<\/em> \u0440\u0430\u0437\u0434\u0435\u043b\u0435.<\/li>\n<\/ul>\n<h2>zsh completion<\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0447\u0435\u043c <em>zsh<\/em> \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0435\u0439 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u2014 \u0435\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 completion-\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 completer:<\/p>\n<pre> ----- ~\/.zshrc ----- zstyle &quot;:completion:*:functions&quot; ignored-patterns &quot;_*&quot; zstyle &quot;:completion:*&quot; matcher-list &quot;&quot; 'm:{a-z\\-}={A-Z\\_}' 'r:|?=** m:{a-z\\-}={A-Z\\_}' _mycomp () {     [[ ${words[1]} != man ]] || { _man &amp;&amp; return 0 }     [[ $CURRENT -eq 1 ]] &amp;&amp; _command_names || _files &amp;&amp; return 0     # MAGIC_EQUAL_SUBST {{{     [[ $PREFIX = *\\=* ]] || return 1     compstate[parameter]=${PREFIX%%\\=*}     compset -P 1 &quot;*=&quot;     _value     # }}} } zstyle &quot;:completion:*&quot; completer _mycomp _parameters autoload -U compinit ; compinit -d \/tmp\/.zcompdump zstyle &quot;:completion:*:default&quot; list-colors &quot;&quot; autoload -U complist <\/pre>\n<p>  \u041d\u0430 \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0442\u043e\u043d\u0443\u0432 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 completion \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043e \u0432\u0441\u0435\u043c\u0438 completer-\u0430\u043c\u0438 \u043c\u0435\u043d\u044f \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442: \u043e\u043d\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442. \u0415\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u2014 \u043d\u0435\u0433\u043e\u0434\u0443\u044e.<\/p>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u043f\u0443\u0442\u0438 \u0434\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c tab-\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 interactive shell-\u0430\u0445. \u0421 \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c completion \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e fuzzy-like \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u0443\u044e completion \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0440\u043c\u043e\u0437\u043e\u0432, \u043e\u043d\u0430 \u0435\u0449\u0451 \u0438 \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u0448\u0430\u0435\u0442 \u0436\u0438\u0442\u044c: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0445\u043e\u0447\u0443 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <em>.info<\/em> \u0444\u0430\u0439\u043b \u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e <em>info \u041f\u0423\u0422\u042c<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c tab-\u0430, \u0442\u0430\u043a \u043a\u0430\u043a completer \u0434\u043b\u044f <em>info<\/em> \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u0449\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0432 <em>INFOPATH<\/em>. \u0412\u043a\u043b\u044e\u0447\u0438\u0432 \u0442\u043e\u043b\u044c\u043a\u043e completer \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u2014 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412-\u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0445, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u043a\u0438\u0445-\u043d\u0438\u0431\u0443\u0434\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 <em>&#8212;prefix=<\/em> \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0435\u0439, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0441\u043b\u0438\u0442\u043d\u043e \u043a \u044d\u0442\u043e\u043c\u0443 \u0437\u043d\u0430\u043a\u0443 \u0440\u0430\u0432\u043d\u043e. \u0414\u043b\u044f \u0448\u0442\u0430\u0442\u043d\u044b\u0445 completer-\u043e\u0432 \u0435\u0441\u0442\u044c <em>MAGIC_EQUAL_SUBST<\/em> \u043e\u043f\u0446\u0438\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u044d\u0442\u043e, \u043d\u043e \u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 completer-\u043e\u0432! \u0412\u0441\u0435 \u044d\u0442\u0438 \u0445\u043e\u0442\u0435\u043b\u043a\u0438 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u0443\u0441\u043a\u0435 \u043a\u043e\u0434\u0430 \u0432\u044b\u0448\u0435.<\/p>\n<ul>\n<li><em>ignored-patterns<\/em> \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 completer-\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c, \u044d\u043a\u043e\u043d\u043e\u043c\u044f \u0432\u0440\u0435\u043c\u044f.<\/li>\n<li><em>matcher-list<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c fuzzy-like matching \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432. \u0423\u043b\u044c\u0442\u0440\u0430\u043f\u043e\u0432\u044b\u0448\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u2014 \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0434\u0438 \u043d\u0435\u0451 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 <em>zsh<\/em>.\n<p>  \u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0430: \u043d\u0430\u0431\u0440\u0430\u0432 <em>s\/2\/r2s\/auth\/init<\/em>, \u043d\u0430\u0436\u0430\u0432 tab, \u0432\u0441\u044f \u044d\u0442\u0430 \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0430 \u043d\u0435\u0434\u043e-\u043f\u0443\u0442\u0435\u0439 \u0440\u0430\u0441\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 <em>src\/rik2utils\/rik2s\/request_auther\/__init__.py<\/em>. <em>\/n\/s\/m\/omegaParac\/death<\/em> \u0440\u0430\u0441\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 <em>\/net\/storage\/music\/Deathspell_Omega-2010-Paracletus\/04.Dearth.wv<\/em>. \u042d\u0442\u043e \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0438\u0432\u0430\u043d\u0438\u044f tab-\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0442\u0443\u0440\u0431\u0430\u0446\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439! \u0412 src \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <em>rik2s<\/em> \u0438 <em>rik2c<\/em> (\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u044e\u0431\u043e\u0435 \u0434\u043e\u0431\u0438\u0432\u0430\u043d\u0438\u0435 tab-\u043e\u043c \u043f\u0443\u0442\u0438 <em>rik2<\/em> \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0435 <em>s<\/em> \u0438\u043b\u0438 <em>c<\/em>, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u043c \u044f\u0432\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0410 <em>zsh<\/em> matcher \u0443\u0432\u0438\u0434\u0438\u0442 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <em>rik2s<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441 <em>auth<\/em> \u0438\u043c\u0435\u043d\u0435\u043c, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0435\u0449\u0451 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c <em>*init*<\/em>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 shell-\u0430\u0445 \u043f\u043e\u0441\u043b\u0435 tab-\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0435\u0449\u0451 \u0438 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u044d\u0448, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u043e\u0445\u043e\u0434 \u0432\u0433\u043b\u0443\u0431\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/li>\n<li><em>_mycomp<\/em> \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 completer:\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0438\u0434\u0451\u0442 <em>man<\/em>, \u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f <em>_man<\/em> completer \u2014 \u0432\u043e\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a man-\u043e\u0432 \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>man git-<\/em>, tab, \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0441\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 man-\u044b \u0438, \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043c\u0430\u043d\u0434\u044b git-\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0435\u0439 \u0434\u043e man \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043d\u0435 <em>MANPATH<\/em> \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u043d\u0430\u0448\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f completion-\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0432\u0432\u043e\u0434\u0438\u043c<br \/>  \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f completer \u0438\u043c\u0451\u043d \u043a\u043e\u043c\u0430\u043d\u0434.<\/li>\n<li>\u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f completer \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432.<\/li>\n<li>\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f <em>MAGIC_EQUAL_SUBST<\/em> \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u0441\u043b\u043e\u0432\u0435 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0440\u0430\u0432\u043d\u043e, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0435\u0439.<\/li>\n<\/ul>\n<p>  <\/li>\n<li><em>completer<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 <em>_mycomp<\/em> \u0438 <em>_parameters<\/em>, \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0438\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/li>\n<li><em>compinit<\/em> \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 completion \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 tmpfs. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435) \u0444\u0430\u0439\u043b\u044b, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0437\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/li>\n<li><em>complist<\/em> \u0438 <em>list-colors<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0446\u0432\u0435\u0442\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 completion \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e: \u0432\u044b\u0431\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043a\u0443\u0447\u0435\u0439 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0448 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043b \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0443\u0442\u044c \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c tab \u0441\u043d\u043e\u0432\u0430.<\/li>\n<\/ul>\n<h2>zsh history<\/h2>\n<p>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0441\u044c \u043a substring \u043f\u043e\u0438\u0441\u043a\u0443 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u043a\u0430\u043a \u0432 FISH. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0445\u043e\u0447\u0443 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <em>vpxenc<\/em>, \u0441, \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0439\u0441\u044f, <em>foo=bar<\/em> \u043e\u043f\u0446\u0438\u0435\u0439. \u041d\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u043d\u044e \u0432 \u043a\u0430\u043a\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f (\u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0443 \u043c\u0435\u043d\u044f \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u044b <em>\u0414\u0410_\u0415\u0429\u0401=\u041f\u0415\u0420\u0415\u041c\u0415\u041d\u041d\u0410\u042f_\u041e\u041a\u0420\u0423\u0416\u0415\u041d\u0418\u042f ffmpeg\u2026 | vpxenc &#8230;<\/em>). \u0412 FISH, \u0435\u0441\u043b\u0438 \u0432\u0432\u043e\u0434\u0438\u0442\u044c <em>vpxenc foo=bar<\/em>, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u044d\u0442\u0438\u043c \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044f \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043c\u0435\u0441\u0442\u0430 \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b <em>vpxenc<\/em> \u0438 <em>foo=bar<\/em>.<\/p>\n<p>  \u0414\u043b\u044f <em>zsh<\/em> \u0441\u0434\u0435\u043b\u0430\u043b\u0438 <a href=\"https:\/\/github.com\/zsh-users\/zsh-history-substring-search\" rel=\"nofollow noopener noreferrer\">zsh-history-substring-search<\/a> \u043f\u043b\u0430\u0433\u0438\u043d. \u0412\u0441\u0451 \u0431\u044b \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u043c\u0435\u043d\u044f \u043e\u043d \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442, \u043a\u0430\u043a, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0438 \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u043b \u0431\u044b FISH: \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043d\u0435 substring \u043f\u043e\u0438\u0441\u043a. \u042f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u043f\u043e\u0438\u0441\u043a\u0430 \u0445\u043e\u0447\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c. \u0418 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u044d\u0442\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u0442\u043e \u043e\u0434\u0438\u043d, \u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0431\u0438\u0440\u0430\u044e <em>foo<\/em> \u0438 Up, \u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0443 \u0447\u0442\u043e\u0431\u044b \u043c\u043d\u0435 \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 <em>foo<\/em>, \u0430 \u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0434\u0435 \u044d\u0442\u043e\u0442 <em>foo<\/em> \u0431\u0443\u0434\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  \u041f\u043b\u044e\u0441 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e \u0433\u043e\u0434\u043d\u043e \u043b\u0438 \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b, \u0438\u043b\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043d\u0430\u043a\u043e\u043b\u0435\u043d\u043e\u0447\u043d\u044b\u043c \u043c\u0435\u0441\u0438\u0432\u043e\u043c \u043b\u0438\u0448\u044c \u0431\u044b \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u0437\u0430\u0434\u0430\u0447\u0443. \u0418 <em>zsh-history-substring-search<\/em> \u0443\u0436 \u0431\u043e\u043b\u044c\u043d\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 (\u043a \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439 \u043d\u0435\u0442).<\/p>\n<p>  \u042f \u0432 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u00ab\u043f\u043e\u0438\u0441\u043a\u00bb, \u043a\u0430\u043a \u044f \u0435\u0433\u043e \u0432\u0438\u0436\u0443, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u043d\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0439:<\/p>\n<pre> ----- ~\/.zshrc ----- autoload -U history-search-end zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end bindkey &quot;^[[A&quot; history-beginning-search-backward-end bindkey &quot;^[[B&quot; history-beginning-search-forward-end  beginning-history-incremental-pattern-search-backward() {     zle history-incremental-pattern-search-backward ${BUFFER:gs\/ \/*\/} } zle -N beginning-history-incremental-pattern-search-backward bindkey &quot;^[[1;2A&quot; beginning-history-incremental-pattern-search-backward bindkey -M isearch &quot;^[[A&quot; history-incremental-pattern-search-backward bindkey -M isearch &quot;^[[B&quot; history-incremental-pattern-search-forward <\/pre>\n<p>  \u0421 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u0447\u0435\u043a, \u043d\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0430\u0434\u043e! \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0438 Up\/Down \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0441 \u0443\u0436\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u0438 \u0442\u0430\u043a \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430, \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u0432 <em>bash<\/em>. \u0410 \u0432\u043e\u0442 \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 Shift-Up, \u0433\u043e\u0432\u043e\u0440\u044e \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0435\u043c\u0438 \u0436\u0435 Up\/Down \u0431\u0443\u0434\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043c\u0435\u0436\u0434\u0443 \u0443\u0436\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>foo bar<\/em>) \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u0441\u044f \u043d\u0430 \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0438, \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0432 <em>foo*bar<\/em> \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e\u0438\u0441\u043a\u0430.<\/p>\n<p>  \u041d\u0430\u0431\u0440\u0430\u0432 <em>u suck<\/em>, Shift-Up \u0434\u0432\u0430 \u0440\u0430\u0437\u0430, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0430\u0442 <em>mutt -f =suckless<\/em> \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 suckless \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438. \u041d\u043e \u0431\u0435\u0437 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432. \u0422\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043b\u0438 \u0434\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u0440\u0430\u0434\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f? \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0432\u0447\u0438\u043d\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u043a\u0438 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<pre> ----- ~\/.zshenv ----- HISTFILE=~\/secure\/.history HISTSIZE=10240 SAVEHIST=10240 <\/pre>\n<pre> ----- ~\/.zshrc ----- setopt APPEND_HISTORY SHARE_HISTORY INC_APPEND_HISTORY HIST_IGNORE_ALL_DUPS setopt HIST_IGNORE_SPACE HISTORY_IGNORE=&quot;(yt* *|t *|t|sdcv *|mmfileget *|arr)&quot; <\/pre>\n<ul>\n<li>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0432 \u0444\u0430\u0439\u043b \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u2014 \u043d\u0435 \u0445\u043e\u0447\u0443 \u0447\u0442\u043e\u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u043c\u043e\u0433 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u043c \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f, \u0435\u0441\u043b\u0438 \u0434\u0438\u0441\u043a \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u0447\u0443\u0436\u0438\u0445 \u0440\u0443\u043a\u0430\u0445.<\/li>\n<li>\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0432 10k \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0418 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0438 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439.<\/li>\n<li><em>APPEND_HISTORY<\/em>, <em>INC_APPEND_HISTORY<\/em> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b. \u0410 <em>HIST_IGNORE_ALL_DUPS<\/em> \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b.<\/li>\n<li><em>SHARE_HISTORY<\/em> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043e\u0431\u0449\u0435\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 instance-\u043e\u0432 <em>zsh<\/em> \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u042d\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0441\u0430\u043c\u0430\u044f \u0441\u0430\u043c\u0430\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0444\u0438\u0448\u043a\u0430 <em>zsh<\/em> \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043b\u044e\u0434\u0438 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 <em>bash<\/em>. \u041e\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e life-changing! \u0412\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043e\u043a\u043d\u0443, \u043e\u0434\u043d\u043e\u043c\u0443 instance-\u0443 shell.<\/li>\n<li><em>HIST_IGNORE_SPACE<\/em> \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0431\u044b\u0432\u0430\u044e\u0442 \u0432\u044b\u0437\u043e\u0432\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u043a\u0430\u0437 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043c\u0438 \u043c\u0443\u0441\u043e\u0440\u0438\u0442\u044c \u0432 autosuggestion-\u0430\u0445.<\/li>\n<li>\u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 <em>HISTORY_IGNORE<\/em>: \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0441\u043b\u043e\u0432\u0430\u0440\u044f, <em>youtube-dl<\/em>, \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 Mattermost (\u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u043e\u0447\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u043f\u043e\u0441\u043b\u0435).<\/li>\n<\/ul>\n<h2>ZLE<\/h2>\n<pre> ----- ~\/.zshrc ----- bindkey -v export KEYTIMEOUT=1 bindkey &quot;^[[1~&quot; beginning-of-line # Home bindkey &quot;^[[4~&quot; end-of-line # End  autoload -U edit-command-line zle -N edit-command-line bindkey -M vicmd v edit-command-line <\/pre>\n<p>  \u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0432 \u043c\u0438\u0440\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430: Vi(m) \u0438 Emacs. \u042f \u0431\u044b \u043d\u0435 \u0431\u044b\u043b \u0441\u0442\u043e\u043b\u044c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u043d \u0438 \u0435\u0449\u0451 \u0431\u044b \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e <a href=\"https:\/\/www.gnu.org\/fun\/jokes\/ed-msg.html\" rel=\"nofollow noopener noreferrer\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/a> <em>ed<\/em> \u0438 Acme \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438\u0437 Plan 9. <em>ed<\/em> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Emacs \u0438 Vi \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043e\u0431\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u0432\u043e\u0434\u0430. \u0414\u0430\u0436\u0435 POSIX \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u0431\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 shell \u0438\u043c\u0435\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0432\u0432\u043e\u0434\u0430: <em>set -o vi<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0439 vi-\u0440\u0435\u0436\u0438\u043c \u0432\u0432\u043e\u0434\u0430.<\/p>\n<p>  <em>bindkey -v<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 vi-\u0440\u0435\u0436\u0438\u043c \u0432 <em>zsh<\/em>. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f timeout \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 Escape \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u0432\u043e\u0434\u0430. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f binding \u043d\u0430 Home \u0438 End \u043a\u043b\u0430\u0432\u0438\u0448\u0438 (\u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c Ctrl-A (\u0432 Emacs \u0440\u0435\u0436\u0438\u043c\u0435) \u0438\u043b\u0438 Escape+^ \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u0438? \u041a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0441 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438?). \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c, \u043d\u0430\u0436\u0438\u043c\u0430\u044f <em>v<\/em> \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 vi. \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0436\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0441\u044f \u0441 ZLE \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c <em>zsh<\/em>.<\/p>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 vi-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 GNU Readline \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c:<\/p>\n<pre> ----- ~\/.inputrc ----- &quot;\\e[A&quot;: history-search-backward &quot;\\e[B&quot;: history-search-forward &quot;^B&quot;: backward-word &quot;^F&quot;: forward-word  set editing-mode vi set show-mode-in-prompt on <\/pre>\n<p>  \u0415\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f binding-\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 Up\/Down \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c (\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439, \u0432\u0432\u043e\u0434\u0430) \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 <em>libedit<\/em> (\u0432\u0435\u0441\u044c LLVM\/Clang \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439):<\/p>\n<pre> ----- ~\/.editrc ----- bind -v <\/pre>\n<h2>zsh prompt<\/h2>\n<p>  \u041a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f?<\/p>\n<pre> ~pyg\/src 0|0-% sleep 3 ; false ~pyg\/src 3|1+% <\/pre>\n<pre> ----- ~\/.zshrc ----- function zle-line-init zle-keymap-select {     mode_vi=${${KEYMAP\/vicmd\/+}\/(main|viins)\/-}     [[ $timer ]] &amp;&amp; timer_show=$(( $SECONDS - $timer ))     prompt=&quot;%2~ &quot;     prompt+=&quot;%U${timer_show}%u|&quot;     prompt+=&quot;%B%?%b&quot;     prompt+=&quot;${mode_vi}&quot;     prompt+=&quot;%B%F{magenta}%#%f%b &quot;     PS1=$prompt     zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select  preexec() { timer=$SECONDS } precmd() { printf &quot;\\a\\033]2;\\033\\\\&quot; } <\/pre>\n<ul>\n<li>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0443\u0442\u0438 \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0430\u043b\u0438\u0430\u0441\u043e\u0432 \u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e PyGOST \u043f\u0440\u043e\u0435\u043a\u0442 (<em>~pyg<\/em>) \u0438 \u0435\u0433\u043e <em>src<\/em> \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f. \u041e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c.<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u0442 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u044b\u0439 \u043f\u043e\u043a\u0430\u0437 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f hook <em>preexec<\/em>, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0443\u043d\u0434 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u0437\u043d\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0442\u044b \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0448\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c <em>time<\/em> \u043f\u0435\u0440\u0435\u0434 \u0435\u0451 \u0432\u044b\u0437\u043e\u0432\u043e\u043c.<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0436\u0438\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c (\u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0446\u0432\u0435\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435) \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0415\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u0448\u0442\u0443\u043a\u0430, \u0432\u0435\u0434\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0431\u0440\u0430\u0442\u044c <em>echo $?<\/em>, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e.<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c <em>&#8212;<\/em> \u0438\u043b\u0438 <em>+<\/em> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 vi-\u0440\u0435\u0436\u0438\u043c: \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439. \u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0431\u044b\u043b \u043d\u0430\u0436\u0430\u0442 Escape \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 vi-\u0440\u0435\u0436\u0438\u043c.<\/li>\n<li>\u0418 \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c \u0438 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0432\u0432\u043e\u0434\u0430. \u0424\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439 \u0446\u0432\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u0435\u043d \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u0430 \u0432\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430.<\/li>\n<\/ul>\n<p>  <em>precmd<\/em> \u2014 \u0430\u0440\u0445\u0438\u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0438\u0439 hook, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u043d\u0435\u0439 \u044d\u0442\u043e alert\/bell, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 active \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0443 tmux \u043e\u043a\u043d\u0430 \u0438 urgency \u0443 X11 \u043e\u043a\u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0432\u0451\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441\u0436\u0430\u0442\u0438\u044f \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430: \u043d\u0435 \u0431\u0443\u0434\u0443 \u0436\u0435 \u0441\u0438\u0434\u0435\u0442\u044c \u0438 \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441? \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0441\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 <em>tmux<\/em> tab. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0441\u0436\u0430\u0442\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f, \u0442\u043e, \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u043a\u0430\u0437\u043e\u043c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f, alert\/bell \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 <em>tmux<\/em> \u0438 <em>dwm<\/em> \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c urgency. \u0412\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0442\u044d\u0433\u043e\u0432 <em>dwm<\/em>, \u0438\u043b\u0438 \u0446\u0432\u0435\u0442\u0430 tab <em>tmux<\/em> \u0437\u0430\u043c\u0435\u0447\u0443 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u044f\u0441\u044c \u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u0430\u044f <a href=\"https:\/\/github.com\/dudik\/herbe\" rel=\"nofollow noopener noreferrer\">herbe<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 GUI \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0433\u0434\u0435 \u0431\u044b \u043e\u043d\u0430 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u0414\u0440\u0435\u0432\u043d\u0435\u0439\u0448\u0430\u044f \u0448\u0442\u0430\u0442\u043d\u0430\u044f urgency+bell \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0438 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0444\u043b\u0430\u0436\u043e\u043a \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043c\u043e\u0438\u0445 \u0437\u0430\u0434\u0430\u0447. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 XMPP \u2014 \u043d\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043b\u044e\u0434\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435.<\/p>\n<p>  \u041d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0443\u0436\u0435 \u043f\u0440\u0438\u0432\u044b\u043a \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430 <em>echo done | mailx -s whatever-compression stargrave@stargrave.org<\/em> \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 <em>precmd<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0447\u0438\u0449\u0430\u044e\u0449\u0435\u0439 title \u043e\u043a\u043d\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e \u0435\u0433\u043e \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0448\u0442\u0430\u0442\u043d\u043e \u0432\u044b\u0439\u0442\u0438 \u0438\u043b\u0438 \u0443\u043f\u0430\u0441\u0442\u044c.<\/p>\n<p>  \u042f \u0447\u0430\u0441\u0442\u043e \u0432\u0438\u0434\u0435\u043b \u0443 \u043b\u044e\u0434\u0435\u0439 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f: \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0441\u0442\u043e\u043b\u044c \u0431\u0435\u0437\u0443\u043c\u043d\u043e \u043d\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u044a\u0435\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443\u0431\u0435\u0436\u0434\u0451\u043d \u0447\u0442\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u00ab\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0443\u044e\u00bb \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u0430\u043a\u043e\u0439 \u0431\u044b\u043b \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0432\u0435\u0442\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0438 \u0442.\u0434\u2026 \u0410 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0440\u044f\u0434\u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0438 \u0438\u043b\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 WiFi \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441\u00bb: \u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 statusbar-\u0430\u0445. \u041f\u043e\u043a\u0430\u0437 \u0447\u0430\u0441\u043e\u0432 \u043c\u043e\u0433 \u0431\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0431\u044b\u043b\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430\/\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041d\u043e \u043e\u043d\u0438 \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u043e\u0442\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0442\u043a\u0443 git-\u0430 \u0432 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0438, \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. <em>zsh<\/em> \u0434\u0430\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0448\u0442\u0430\u0442\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 hook-\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439. \u041d\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u043f\u0443\u0441\u043a\u0430\u0439 \u0434\u0430\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u044d\u0448\u0438) \u2014 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0434\u0430\u0441\u0442 \u043e \u0441\u0435\u0431\u0435 \u0437\u043d\u0430\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u043f\u0440\u0438 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041b\u0438\u0447\u043d\u043e \u044f \u0438 \u0442\u0430\u043a \u0437\u043d\u0430\u044e \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e <em>Gb<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442.<\/p>\n<h2>zsh misc<\/h2>\n<p>  \u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f <em>zsh<\/em> \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/p>\n<pre> ----- ~\/.zshrc ----- setopt GLOB_STAR_SHORT GLOB_DOTS EXTENDED_GLOB setopt NO_NOMATCH setopt AUTO_PUSHD PUSHD_IGNORE_DUPS setopt PIPE_FAIL  setopt RM_STAR_SILENT export LISTMAX=9999 <\/pre>\n<ul>\n<li><em>EXTENDED_GLOB<\/em> \u043d\u0443\u0436\u0435\u043d \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043b\u044f \u043c\u043e\u0449\u043d\u043e\u0433\u043e globbing. <em>GLOB_STAR_SHORT<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c <em>**<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>**\/*<\/em>. <em>GLOB_DOTS<\/em> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0441 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432 \u043f\u043e\u0438\u0441\u043a.<\/li>\n<li><em>NO_NOMATCH<\/em> \u044f\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 globbing-\u0430, \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430, \u0430 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u042f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u043b\u043e\u0432\u043e globbing, \u0442\u0430\u043a \u043a\u0430\u043a matching \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a globbing, \u043d\u043e \u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044e \u043f\u0443\u0442\u0435\u0439 \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432: <em>echo =mutt<\/em> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 <em>\/home\/stargrave\/local\/bin\/mutt<\/em>.\n<p>  \u0422\u0430\u043a \u0432\u043e\u0442 <em>NOMATCH<\/em> \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 <em>echo =foo<\/em> \u0441\u043a\u0430\u0436\u0435\u0442 <em>zsh: foo not found<\/em>, \u0430 <em>NO_NOMATCH<\/em> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 <em>=foo<\/em>. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u044f\u0449\u0438\u043a\u0438 \u0434\u043b\u044f Mutt \u0442\u043e\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <em>=\u042f\u0429\u0418\u041a<\/em>, \u0442\u043e \u0441 <em>NO_NOMATCH<\/em> \u043e\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <em>mutt -f =arbeit<\/em> \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f <em>=arbeit<\/em> \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 Mutt-\u0443.<\/li>\n<li>\u041f\u0440\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c <em>autopushd<\/em> \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b.<\/li>\n<li><em>RM_STAR_SILENT<\/em> \u043e\u043f\u0446\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0447\u0442\u043e \u044f \u0441\u0430\u043c\u043e\u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0438 \u043d\u0435 \u043f\u043e\u0431\u043e\u044e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c <em>rm<\/em> \u0441\u043e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u043e\u0439. \u041d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0431\u044b\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u0432\u0435\u0437\u0434\u0435.<\/li>\n<li><em>LISTMAX<\/em> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f completion \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0441\u043e\u0442\u043d\u044f\u043c\u0438 \u0442\u044b\u0441\u044f\u0447 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u0435\u0447\u0430\u044f\u043d\u043d\u043e \u043d\u0430\u0436\u0430\u0432 tab, \u043d\u0435 \u0445\u043e\u0447\u0443 \u0436\u0434\u0430\u0442\u044c \u043d\u0438 CPU, \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f \u043c\u0435\u043d\u044f, \u043d\u0438 \u0441\u0435\u0442\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u043b\u0438\u0430\u0441\u043e\u0432:<\/p>\n<pre> ----- ~\/.zshrc ----- alias l=&quot;ls -AF &quot; alias ll=&quot;ls -AFl &quot; alias vi=&quot;vim&quot; alias m=&quot;less &quot; alias -g M=&quot;| less&quot; alias -g W=&quot;| wc -l | sed 's\/ \/\/g'&quot; alias ssh=&quot;TERM=xterm ssh&quot; alias sshnm=&quot;ssh -S none&quot; ssht() { ssh -C -t $1 tmux attach -t0 } <\/pre>\n<ul>\n<li><em>l<\/em> \u0438 <em>ll<\/em> \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u043b\u043e\u0448\u044c \u0438 \u0440\u044f\u0434\u043e\u043c, \u0434\u0430\u0436\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044f \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u041e\u0421. \u0410 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0446\u0432\u0435\u0442\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u0434\u0430\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:\n<pre> ----- ~\/.zshenv ----- export CLICOLOR=1 export LSCOLORS=BxGxcxdxCxegDxabagacad <\/pre>\n<p>  <\/li>\n<li>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0443\u0434\u043e\u0431\u043d\u0435\u0439\u0448\u0438\u0445 \u0444\u0438\u0447 <em>zsh<\/em> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u043b\u0438\u0430\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435. \u0412\u043c\u0435\u0441\u0442\u043e <em>whatever | less<\/em> \u043d\u0430\u0431\u0438\u0440\u0430\u044e <em>whatever M<\/em>. \u0410 \u0434\u043b\u044f, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e\u0433\u043e, \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e <em>W<\/em> \u0432 \u043a\u043e\u043d\u0446\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u0443 \u043c\u0435\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0443\u043a\u0432\u0430 \u00abm\u00bb \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f <em>less<\/em>? \u041f\u0440\u0438\u0432\u044b\u0447\u043a\u0430, \u0438\u0431\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>more<\/em>.<\/li>\n<li><em>TERM=xterm ssh<\/em> \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0435 \u043f\u043e\u0434\u0432\u043e\u0434\u044f\u0449\u0438\u0439 \u043d\u0438\u0433\u0434\u0435 \u0430\u043b\u0438\u0430\u0441. \u0414\u0430\u0436\u0435 <em>screen256-color<\/em> \u0435\u0441\u0442\u044c \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u043e \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043e\u0442 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0440\u0430\u0437 \u0434\u0432\u0430. <em>xterm<\/em> \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0437\u0434\u0435 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 is good enough \u043f\u0440\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/li>\n<li>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043c\u043e\u0439 OpenSSH \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <em>sshnm<\/em> (no master) \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 \u0430\u043b\u0438\u0430\u0441.<\/li>\n<li>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <em>tmux<\/em>, \u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430, \u043a\u0440\u043e\u043c\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a <em>tmux<\/em> \u0441\u0435\u0441\u0441\u0438\u0438, \u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043d \u0443\u0434\u043e\u0431\u043d\u0435\u0439\u0448\u0438\u0439 <em>ssht<\/em> \u0430\u043b\u0438\u0430\u0441. \u0410 \u0440\u0430\u0437 \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u0430\u043f\u0440\u0438\u043e\u0440\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u043e \u0432 \u043d\u0451\u043c \u0435\u0449\u0451 \u0438 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 <em>vi<\/em>, \u0442\u043e \u043f\u0440\u0438\u0432\u044b\u043a \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443: <em>vim<\/em> \u0443 \u043c\u0435\u043d\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f.<\/li>\n<\/ul>\n<h2>less<\/h2>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e \u0432\u044b\u0448\u0435, \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>less<\/em>:<\/p>\n<pre> ----- ~\/.zshenv ----- export PAGER=less export LESSHISTFILE=\/tmp\/.lesshst export LESSKEY=\/tmp\/.lesskey export LESS=RWXij2 export LESS=${LESS}&quot;Ps?f%f .?m(%i\/%m) .%lt-%lb?L\/%L. [%bB?B\/%B.]?B %pB\\%.?x N\\:%x.%t&quot; <\/pre>\n<pre> ----- ~\/.lesskey ----- #command ^N next-file ^P prev-file <\/pre>\n<ul>\n<li><em>~\/.lesskey<\/em> \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u043b\u0435\u0441\u0430 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0442\u0440\u044d\u043a\u0431\u043e\u043b\u0430.<\/li>\n<li><em>R<\/em> \u043e\u043f\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 ANSI \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439. \u041c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u0435\u043b\u0430\u044e\u0442 \u0446\u0432\u0435\u0442\u043d\u043e\u0439 \u0432\u044b\u0432\u043e\u0434.<\/li>\n<li><em>j2<\/em> \u043e\u043f\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0441\u0432\u0435\u0440\u0445\u0443\/\u0441\u043d\u0438\u0437\u0443 \u043e\u0442 \u0438\u0441\u043a\u043e\u043c\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0448\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u043e\u043c\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430.<\/li>\n<li><em>i<\/em> \u043e\u043f\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0435\u0441\u043b\u0438 \u0432 \u043d\u0435\u0442 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0431\u0443\u043a\u0432. \u041e\u0431\u043e\u0436\u0430\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u0434\u0435 \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e.<\/li>\n<li>\u0412\u0430\u0436\u043d\u0435\u0439\u0448\u0430\u044f \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 <em>W<\/em> \u043e\u043f\u0446\u0438\u044f \u2014 \u043e\u043d\u0430 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 italic-\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043c\u043d\u043e\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u043c\u0430\u0442\u044b\u0432\u0430\u044e \u044d\u043a\u0440\u0430\u043d. \u042d\u0442\u043e \u0446\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043b\u0430\u0441\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443: \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u044f \u0432\u0438\u0434\u0435\u043b, \u0430 \u0447\u0442\u043e \u043d\u0435\u0442.<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430: \u0432 \u043d\u0435\u0439 \u0445\u043e\u0447\u0443 \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0438 \u0432 Vim-\u0435, \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0435 \u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0438\u0445 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0436 \u043e\u0442 \u0442\u043e\u0433\u043e \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0445\u043e\u0447\u0443 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 <em>=<\/em> <em>less<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u0442\u0438\u043f\u0430 \u00abbytes\u00bb \u0438 \u00ablines\u00bb.<\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/habr.com\/ru\/post\/563428\/\">\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/563426\/\"> https:\/\/habr.com\/ru\/post\/563426\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e! \u042f \u043b\u044e\u0431\u043b\u044e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 dotfiles \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043b\u044e\u0434\u0438. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0442\u0440\u044e\u043a \u0438\u043b\u0438 \u0438\u0434\u0435\u044e. \u0410 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u041f\u041e \u0447\u0430\u0441\u0442\u043e \u0438\u0434\u0451\u0442 \u0437\u0430 \u0441\u0447\u0451\u0442, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043c\u0435\u043b\u043e\u0447\u0435\u0439 (\u043c\u043d\u043e\u0433\u043e \u043a\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u0442, \u0447\u0442\u043e Ctrl-T \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 SIGINFO \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <em>cp<\/em> \u0438\u043b\u0438 <em>dd<\/em>?). \u0412\u043e\u0442 \u0438 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0432\u043e\u0451 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 <a href=\"http:\/\/www.git.stargrave.org\/?p=dotfiles.git;a=tree\" rel=\"nofollow noopener noreferrer\">dotfiles<\/a>. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u043a\u0446\u0438\u0439 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0447\u0451\u043c \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c: \u0412\u0432\u043e\u0434, \u041e\u0421, \u0424\u0421, X11, MRA \u0438 MDA, \u0421\u0435\u0442\u044c, Jail, \u0414\u0435\u043c\u043e\u043d\u044b, MTA, MUA, WWW, PGP, IRC, st, tmux, cd, git, zsh, zsh completion, zsh history, ZLE, zsh prompt, zsh misc, less, grep, <em>.zshenv<\/em>, autoenv, <em>.zprofile<\/em>, t, \u041c\u0443\u0437\u044b\u043a\u0430, mpv, \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0410\u0440\u0445\u0438\u0432\u044b, Feeds, Hjson, <em>*tex*<\/em>, File transfer, Games, \u0411\u0414, \u042f\u041f, Python, Go, C, redo, TAI64, Vim, tags, <em>.vimrc<\/em>, <em>~\/.vim\/pack<\/em>, <em>~\/.vim\/plugin<\/em>, <em>~\/.vim\/ftplugin<\/em>. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u043e\u0440\u043d\u044b\u0435 holywar \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0435\u0437\u0434\u0435 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0440\u0430\u0437\u0443 \u00ab\u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8a8\/23c\/afc\/8a823cafcea760d9c1b54aa8b3f34543.jpg\">  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-325097","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325097"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325097\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}