вторник, 25 апреля 2017 г.

Переменные в консоли...

Заметочка для памяти для себя, ибо в Slackware никак не мог определить консольный текстовый редактор по-умолчанию: всё возвращается в первоначальное состояние. Оказалось, переменные надо прописывать не в .xinitrc, .Xresources (.Xdefaults по-старому), xprofile (устаревший) и.т.п. подобные файлы xorg, а в файл настройки bash - ~/.bash_profile, либо просто в ~/.profile , например, так:
TERMINAL=xterm
TERM=xterm
EDITOR=nano
Эти строчки определяют какая программа по эмуляции терминала будет использоваться, последняя - какой редактор установлен по-умолчанию. Как оказалось, .bash_profile и запускаются один раз, при входе, а .bashrc - столько. сколько запускается интерпретатор bash, и, в archlinux он содержит, как правило, только переменную приглашения рабочей строки:
PS1='\u@\h:\w$ '
Это вид приглашения, включающий: логин@доменное имя хоста текущая директория $. (mylogin@localdomain ~$)

Вообще-же посмотреть какие переменные установлены в системе, можно командами export (без аргументов, с аргументами вроде тех, что показаны выше, - это команда назначения значений переменным), так же есть команды env и printenv.

понедельник, 24 апреля 2017 г.

CD/DVD eject

В linux есть две утилиты eject для открытия/открытия лотка CD/DVD и udevil - для монтирования/размонтирования подключаемых дисков. Решил две эти утилиты объеденить в одну:

#!/bin/bash

insertdisk=`udisksctl info -b  /dev/sr0 | grep 'Size' | gawk '{ print $2 }'`
echo $insertdisk
echo $1


if [[ $insertdisk -ne 0 ]]
    then
        if [ -z "$1" ] ;
            then
                mountingdisk=`mount | grep sr0`
                echo "mountingdisk="$mountingdisk
                if [ -z "$mountingdisk" ] ; then udevil mount /dev/sr0 ; else udevil umount /dev/sr0 ; /usr/sbin/sdparm -C unlock /dev/sr0 ; eject ; exit 0 ; fi ;
            else
                case    $1    in
                    j|J|о|О)    udevil umount /dev/sr0 ; echo "Извлекаем..." ; /usr/sbin/sdparm -C unlock /dev/sr0 ; eject ; exit 0 ;;
                    *)        udevil umount /dev/sr0 ; echo "Размонтируем" ; /usr/sbin/sdparm -C unlock /dev/sr0 ; exit 0  ;;
                esac
        fi
    else
        eject -T
fi
Скрипт сам проверяет пустой-ли привод: если да - открывает, если нет, и не примонтирован - монтирует, иначе - размонтирует и открывает. Скрипт можно разместить в /usr/local/bin/j и разрешить запуск для пользователя

chown root:storage /usr/local/bin/j && chmod a+x /usr/local/bin
Требуются предустановленные udiscs2, udevil

UPD: оператор sdparm -C unlock /dev/sr0 введён для предотвращения ошибки "eject: unable to eject, last error: Inappropriate ioctl for device" на некоторых ОС, вроде Slackware