Форум программистов, компьютерный форум, киберфорум
nezabudka
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Заберите себе весь мир, оставте мне один компьютер.

bash: Бросаем библиотечные файлы где ни попадя или Порядок нужен слабакам, гений властвует над хаосом.

Запись от nezabudka размещена 21.10.2018 в 19:08
Показов 3170 Комментарии 0

В bash подключение библиотеки
происходит следующей командой
. /dir/to/lib или
source /dir/to/lib
То есть надо знать где именно находится библиотека и ввести путь к ней.
Спортивного интереса ради я решила добавить немного беспорядка
и придумала апгрейд своей файлопомойки univertaz/, расширив
ее до пределов домашней директории.
Для начала создаем директорию под базу данных
Code
1
sudo mkdir /usr/pl
Добавим права доступа к директории для пользователя nez.
Ведь нам нужно создать и изменять в дальнейшем базу данных без рутовских привилегий.
Code
1
sudo setfacl -m u:$USER:rwx /usr/pl
Создаем базу:
Code
1
updatedb -l 0 -o /usr/pl/plocate.db -U $HOME
(Для mlocate: locate -d /usr/ml/mlocate.db -qer /$1$)
В файле .bashrc пишем функцию, берущую на себя всю рутину по обработке
действий связанных с подключением или обновлением базы.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
include() {
        while (( $# )); do
                file=($(locate -d /usr/pl/plocate.db -er /$1$))
                if [ "${file[1]}" ]; then
                        echo Need a unique file, received: ${file[@]}
                        exit 1
                fi
                if [ "$file" ]; then
                        source "$file"
                else
                        if [ "$flag" ]; then
                                echo No such library $1
                                exit 1
                        fi
                        updatedb -l 0 -o /usr/pl/plocate.db -U $HOME
                        flag=1
                        continue
                fi
                shift
                flag=
        done
}
export -f include
Перечитаем bashrc или перелогинемся.

Создадим тестовые библиотеки и поместим их в любые места в директории $HOME
cat libhello
Bash
1
2
3
hello() {
    echo hi from libhello
}
cat libbye
Bash
1
2
3
bye() {
    echo bye
}
Зайдем в любую директорию, отличную от той где находится
библиотека и напишем тестовую программу cat test.sh
Bash
1
2
3
4
#!/bin/bash
include libhello libbye
hello
bye
Запустим и получим 2 строчки практически без задержки
Code
1
2
hi from libhello
bye
Значит все файлы дерева из корня $HOME
проиндексированы. Полные пути к библиотекам найдены и они
успешно подключились в скрипте.

Работа утилиты plocate построена так что по времени поиска в большинстве
случаев вполне допустимо по времени выполнения использовать все поддерево
$HOME файловой системы. Но ничто не мешает при необходимости сузить это
пространство.
Храните библиотечные файлы практически в любом удобном месте при условии соблюдения
уникальности их имен. Главное теперь помнить имена всех созданных вами библиотек
разбросанных по всему домашнему пространству))) или же придумать какое-нибудь хитрое расширение
для своих библиотечных файлов.
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru