misc/class
lib/jquery_pnotify, lib/moment, lib/lodash, misc/notification, site/engine, misc/social
if( $.browser.msie && $.browser.version <= 8 ) include('lib/respond'); $._social.__cfg = {"init":[{"service":"basic"},{"fb_app_id":"1997094873850041","service":"fb"},{"vk_app_id":"2978320","service":"vk"},{"service":"twi"}],"like":[{"service":"fb"},{"service":"vk"},{"via":"","channel":"","hash_tag":"","service":"twi"}]}; window._SiteEngine = new classes.SiteEngine( { user_id: 0, controller: 'content_tape', action: 'tag', content_css_version: '1459538664', social_enabled: 0} );

Faiwer

Блог web-программиста

Поиск по метке: Linux

Пара мелочей о терминале в Linux

14 февраля 2017

История и дубликаты

Чтобы, во время листания истории введённых команд (стрелками на клавиатуре), терминал не предлагал вам одни и те же строки-дубликаты добавьте к .bashrc это:

export HISTCONTROL=ignoreboth:erasedups

Autocomplete

Если у вас имеется некий большой скрипт, и вы всё никак не можете уложить в голове все его многочисленные параметры, то можно создать свой собственный autocomplete-список для этого скрипта/программы. Сами скрипты обычно кладутся в ~/.bash_completion.d,  но это зависит от настроек вашей системы и профиля. Можно сделать, к примеру так (.bashrc):

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . your_script's_path
fi

Где вместо your_script's_path путь к вашему скрипту. В самом скрипте уже может быть всё что угодно. Самый простой вариант с заранее заготовленными строками для автокомплита (бездумного):

complete -W "option1 option2 option3" your_program

Это приведёт к тому, что вбив "your_program " и нажав Tab дважды вам будут предложены все три опции. Если же нужно что-то хитрее, например специфическую фильтрацию, то можно указать отдельный метод, для обработки уже введённых символов. Или, скажем, вам может потрбоваться в качестве списка вариантов список директорий/файлов в каком-то конкретно заданном месте.

_your_program()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W " $( ls some_directory's_path )" -- $cur) )
}
complete -F _your_program your_program

Этот код позволит по Tab-у получать в помощь список файлов из some_directory's_path.

#!/bin/sh

Столкнулся с тем, что указывая вначале bash-скриптов этот интерпретатор, часть правильно записанных bash-команд не срабатывает, а ругается с ошибками. Оказалось всё дело в том, что в Ubuntu-based дистрибутивах в качестве sh-интерпретатора используется некий dash, и он не в полной мере совместим с bash. Поменяв sh на bash в этой строке проблемы испарились.

В моём случае dash ругался на:

DIR=$(dirname "$(readlink -f "$0")")

Эта строка, кстати, аналог получения __dirname.

 

Как докачать файл на сервер, если scp-ssh-соединение разорвалось?

20 января 2017

Положим вы закачивали на сервер большой файл. Но с дуру выключили на ночь компьютер. Или, скажем, у вас отключили интернет. Или свет. Да мало ли что. Как докачать файл? Оказалось очень просто и без бубнов:

rsync --partial --progress -rsh=ssh %file% %destination%

 Формат для %file% и %destination% тот же, что и у scp. Как всегда, спасибо stackoverflow.

Как удалить мёртвый deb-пакет (YandexDisk)

17 ноября 2016

Случилось так, что неудачное обновление YandexDisk-а, либо же их кривые dpkg-скрипты поломали мне пакетный менеджер (dpkg). Его просто парализовало. Пришлось его насильно убивать (sudo killall -9 dpkg), пытаться починить (dpkg --configure -a), но тщетно. Обновил данные с репозиториев (sudo aptitude update), и попробовал просто обновить сами пакеты (sudo aptitude upgrade). Тщетно, оно почти на любой операции дохнет на попытке обработать пакет yandex-disk. Попробовал его remove и purge. Не шмогло оно. Попробовал напрямую через dpkg, тщетно. Попробовал даже чёрную магию (sudo dpkg --remove --force-remove-reinstreq yandex-disk) всё равно зависает. 

Старый добрый stack-overflow подсказал, что в таких случаях нужно править сами install-скрипты. Нужным оказался этот: /var/lib/dpkg/info/yandex-disk.prerm. Внутри буквально 1 строка. В ней killall -qw yandex-disk. Обратите внимание на флаг w. Wait. Оно ждёт смерти yandex-disk, который у меня не был запущен. Ждёт вечно. Руками убрал эти флаги и повторно заpurge-ил пакет. На этот раз всё прошло без запинки.

Дааа. Linux пока ещё сильно далёк от user-friendly интерфейсов. Как бы такую проблему смог бы самостоятельно решить не IT-ик я не представляю.

Unix-Win path separator

20 октября 2016

Столкнулся с неожиданной для себя проблемой. Сборка проекта под Windows шла криво, в то время как под Linux без проблем. Вначале грешил на обратные и прямые слеши (/ & \). Беглый поиск по этой проблематике дал мне понять, что никаких проблем с unix-like слешами под Windows быть не должно. Оказалось, что всё немного хитрее. Я в некоторых местах работах с путями как со строками, игнорируя тот факт, что пути в процессе работы могут быть сторонним кодом преобразованы. 

Скажем был у вас путь path/path/path. В процессе работы какого-нибудь gulp-плагина он исправился на windows-правильный путь path\path\path. А у вас далее по коду какой-нибудь .replace('path/path', ''). И вот оно сломалось. 

Бесплатная версия Lightworks

5 марта 2016

В поисках замены для OpenShot я наткнулся на Lightworks. В статьях про это ПО указывается, что есть и FREE версия, с урезанным функционалом. Причём без деталей о том, в чём именно этот функционал урезан. Проставил, покопался, склепал элементарный ролик, теперь знаю. Это невозможность экспорта никуда, за исключением прямой заливки видео на Youtube или Vimeo. Т.е. сохранить файл на диск нельзя.

По сути я могу это трактовать только как отсутствие бесплатной версии. Потому что такой вот use case нафиг никому не нужен. Рассматривать Lightworks можно только как альтернативу другим платным профессиональным инструментам. Так что прекратите размещать его в свои обзоры бесплатных видеоредакторов.

Некоторое время назад я попробовал воспльзоваться действительно бесплатным редактором ― Shotcut. Но оказалось, что за красивой обёрткой скрывается ― ничего. Этот редактор не умеет практически ничего. Это даже не редактор, это какое-то недоразумение (ИМХО), если честно. Уж на что OpenShot кажется топорным, но Shotcut переплюнул и его :)

Что ж. Буду и дальше искать. Хочется чего-нибудь средне-функционального и, разумеется, бесплатного. Т.к. монтирую относительно простые  и некоммерческие ролики, к тому же, довольно редко. В мире граф. редакторов подобного софта навалом.