Сайт | Скачать | Видео | Wiki

Автор Тема: Bash-измы и стиль написания кода  (Прочитано 3048 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Bash-измы и стиль написания кода
« : 18 Январь 2017, 13:33:34 »
При написании PFS-utils изначально применялось несколько принципов разработки:

   Одна задача - один скрипт.
   Весь функционал в консольных скриптах (GUI скрипты - это обёртки на консольными).
   Универсальность (дистро-спец. вещи - отдельно, работоспособность с любым шеллом).
   Отсутствие зависимости консольных скриптов от локали (тексты только англ. краткие).
   Читаемость кода (отступы, компактность кода отдельных задач, последовательность).


Как мне кажется, было бы очень хорошо, если при дальнейшей коллективной разработке эти принципы оставались актуальными.
В будущем это значительно упростит вхождение в тему для других, возможно будущих пользователей и разработчиков скриптов.

Bash-измы, как мне кажется, в коде основных (консольных) скриптов лучше не использовать.
Возможность использовать их с любым шеллом (в т.ч. встроенным в busybox) - преимущество.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Bash-измы и стиль написания кода
« Ответ #1 : 18 Январь 2017, 13:40:49 »
Одна задача - один скрипт.
Покрутил libpfs - Дядя шурик был прав. В таком виде не удобно.
Переменные надо в initvars, а функции разбодяжить обратно на скрипты
Аналоги mount и т.п. удобно иметь оттельно и что-то тестить в ком. строке
Делаю?

Заодно - у betcher
Код
function qwqwqw () { .. }
Это чем-то лучше чем ?
Код
qwqwqw () { .. }
зачем лишнее слово?
« Последнее редактирование: 18 Январь 2017, 13:42:28 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Bash-измы и стиль написания кода
« Ответ #2 : 18 Январь 2017, 14:51:50 »
Аналоги mount и т.п. удобно иметь оттельно и что-то тестить в ком. строке
. /usr/lib/libpfs ; mountb ... Вот и все.

С переменными не пойму что не так. /etc/initvars создается initrd если он есть SYSMNT берется из него, если его нет где брать? Остальные пути где брать? Они к initvars отношения не имеют. Если не в libpfs, то pfs.cfg все одно нужен.


Это чем-то лучше чем ?
Да ничем, на сколько мне известно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Bash-измы и стиль написания кода
« Ответ #3 : 18 Январь 2017, 15:16:44 »
С переменными не пойму что не так. /etc/initvars
Я просто все загнал в initvars. Наверное для uird их все придется поменять
. /usr/lib/libpfs ; mountb ... Вот и все.
ок

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Bash-измы и стиль написания кода
« Ответ #4 : 18 Январь 2017, 15:20:46 »
Я просто все загнал в initvars. Наверное для uird их все придется поменять
initvars в составе pfs-utils создаст проблемы для initrd. Если его изначально нет то initrd его просто создает и записывает туда свои переменные. А ели есть? Удалять целиком и писать новый? Мержить? Использовать initvars как конфиг для чего-то еще кроме хранения переменных из initrd не правильно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Bash-измы и стиль написания кода
« Ответ #5 : 18 Январь 2017, 15:36:11 »
Не знал этих тонкостей. Перенесите лишнее в libpfs

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Bash-измы и стиль написания кода
« Ответ #6 : 18 Январь 2017, 17:22:10 »
если он есть SYSMNT берется из него, если его нет где брать?
Код
[ "$SYSMNT" ] || SYSMNT=$(cut -f2 -d/ /sys/fs/aufs/si_*/br0)
Остальные пути где брать?
Код
 # losetup|cut -f3 -d' '|cut -f-5 -d/|sort -u
/mnt/sda1/219/base
/mnt/sda1/219/modules
initvars в составе pfs-utils создаст проблемы для initrd.
Разве? ???
Перенесите лишнее в libpfs
Лишнее лучше выкинуть.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Bash-измы и стиль написания кода
« Ответ #7 : 18 Январь 2017, 17:39:45 »
Остальные пути где брать?
Еще раз по кругу.
/etc/packages или его замена где записаны?
copyramdir="/tmp/.mountRAM" - это где?
    initvars в составе pfs-utils создаст проблемы для initrd.
Разве? ???
Я объяснил, что вас удивляет?
losetup|cut -f3 -d' '|cut -f-5 -d/|sort -u
В магос не возвращает ничего. Но идея понятна.
Лишнее лучше выкинуть.
Тут согласен, главное полезное не выкинуть  в порыве чистки всего подряд.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Bash-измы и стиль написания кода
« Ответ #8 : 18 Январь 2017, 17:54:58 »
В моем варианте initvars - все нужное, но можно что угодно перенести в libpfs (если в initvar мешает)

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Bash-измы и стиль написания кода
« Ответ #9 : 18 Январь 2017, 18:10:06 »
(если в initvar мешает)
Я считаю, что туда ничего писать не нужно. Это переменные из инитрд.
ThinkPad bin # cat /etc/initvars
LIVEKITNAME=MagOS
SYSMNT=/memory
uird_config=MagOS.ini
uird_copy2ram=kde
uird_cp=*/photoscripts,*/wifi
uird_find_params=-maxdepth_3
uird_from=/dev/sda1/MagOS,/dev/sda3/MagOS-Data
uird_home=/dev/sda3/homes
uird_load=/base/,/modules/,rootcopy
uird_mode=clean
uird_mounts=/MagOS-Data/vartmp::/var/tmp
uird_noload=/MagOS-Data/changes,/MagOS-Data/homes
uird_ramsize=70%
uird_ro=*.xzm,*.rom,*.rom.enc,*.pfs
uird_rw=*.rwm,*.rwm.enc
uird_swap=/dev/sda2
uird_syscp=/livekitlib::/usr/lib/magos/scripts,/uird.scan::/usr/lib/magos/scripts,/liblinuxlive::/mnt/live

Здесь более точная инфа о загрузке чем из
cat /proc/cmdline
quiet xdriver=fglrx uird.from=/dev/sda1/MagOS;/dev/sda3/MagOS-Data vga=791 uird.home=/dev/sda3/homes uird.mounts=/MagOS-Data/vartmp::/var/tmp uird.cp=*/photoscripts;*/wifi  blacklist=bcma  rd.driver.blacklist=bcma   uird.copy2ram=kde uird.swap=/dev/sda2 

Я против использования этого файла как конфига для pfs-utils. Задумывался он иначе.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Bash-измы и стиль написания кода
« Ответ #10 : 18 Январь 2017, 19:22:44 »
Я против использования этого файла как конфига для pfs-utils.
Да, вся нужная для pfs-utils информация есть в /sys/fs/aufs/si_*/
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64