Linux за българи: Форуми

Програмиране => Конкурс bash-майсторът => Темата е започната от: zeridon в Dec 11, 2007, 21:10



Титла: Задачи кандидати
Публикувано от: zeridon в Dec 11, 2007, 21:10
В тази тема може да публикувате задачки които бихте искали да видите решени в този конкурс.

Може да публикувате задача тук спазвайки следните изисквания.

 * Задачката трябва да е по реална тема касаеща широк кръг от потребители. Нещо от реалният живот е добър избор.
 * Задачката не трябва вече да е публикувана. Ако все пак е много интересна и заслужава второ решение, заповядайте
 * Задачката не трябва да е супер сложна или да изисква голяма инвестиция за решаването и.
 * Трябва да предоставите референтно решение. По него ще се ориентираме ние.
 * Трябва да предоставите тестов комплект данни (вход, изход).
 * Особенни условия/изисквания/ограничения.


Титла: Задачи кандидати
Публикувано от: thegold_u в May 14, 2008, 12:50
И така, тъй като форумът е хубав, а досега не съм видял задачи, то аз ще пусна първата.

Наскоро ми се наложи да си правя Package файл за свалените Debian-ски файлове. Пфу...
Много времеемка задача, ако имаш само архиватор и текстов редактор. За един или два файла сигурно става, но за стотици - не. Затова поставям задачата да се направи скрипт, който да взима всички файлове с разширение .deb, да прочита информацията от тях и да я запазва във файл с име Package. Не забравяйте да добавите и информация за размера на файла и MD5 проверка, а също, и името на файла. За онези, които не са запознати с формата на Package файла, да не се занимават. За останалите, смятам да пусна отговор на задачата си две седмици след пускането й, а именно от 14 май 2008г.

ЗАВИНАГИ ВАШ thegold_u


edit by neter: Редактирано, съгласно т.3 от правилата на форума. Нека не се повтаря ;)





Титла: Задачи кандидати
Публикувано от: thegold_u в May 29, 2008, 09:08
както казах при пускането на задачата, след две седмици ще пусна своя отговор.
сега го правя. Моля онези които мислят че могат да подобрят по някакъв начин
скрипта да го направят и да се свържат с мен.

/*---------------------------packscript.sh------------------------------*/

#!/bin/bash

#########################################################################
#                           #
#   Прави автоматично Packages файл за Дебиански пакети      #
#   от директорията в която е бил извикан и записва изхода в   #
#   директорията подадена като аргумент 1            #
#   Променливата packdir е тази променлива която определя      #
#   местоположението на .deb файлът в самият Package файл.      #
#   По принцип тя е празна но може да бъде подадена само       #
#   като втори параметър.                  #
#   При подаването й накрая след името на директорията      #
#   трябва да има наклонена черта               #
#                           #
#   Следват няколко примера с извикване на скрипта         #
#      ./packscript.sh . paketi/            #
#      ./packscript.sh ~               #
#      ./packscript.sh /mnt/distro paketni_fileove/      #
#      ./packscript.sh
#                           #
#                           #
#                  Написан от thegold_u   #
#                           #
#########################################################################

outdir="."
ORIG_PACK_FILE=""
niz=""
tmp_str=" "
nwl='
'
packdir=""

if [ $# -eq 2 ]
    then
   packdir="$2/"
    fi

if [ `ls Packages`='Packages' ]
    then
   ORIG_PACK_FILE=`cat Packages`
   ORIG_PACK_FILE="$ORIG_PACK_FILE$nwl$nwl$nwl"
    fi

for debfile in *.deb
    do
   dpkg --control $debfile contdir
   tmp_str=`cat contdir/control`

# конкатенираме променливата niz с информация за името на файлът

   niz="$niz$tmp_str$nwl"
   fileinfo="Filename: $packdir$debfile"
   niz="$niz$fileinfo$nwl"

# конкатенираме променливата niz с информация за md5 проверката

   integer=1
   for md5var in `md5sum $debfile`
       do
      if [ $integer -eq 1 ]
      then
          md5info="$md5var"
      fi
      let "integer = $integer + 1"
       done
   md5info="MD5sum: $md5info"
   niz="$niz$md5info$nwl"

# конкатенираме променливата niz с информация за размера на файлът

   integer=1
   for sizevar in `ls -la $debfile`
       do
      if [ $integer -eq 5 ]
          then
         sizeinfo="$sizevar"
          fi
      let "integer = $integer + 1"
       done
   sizeinfo="Size: $sizeinfo"
   niz="$niz$sizeinfo"
   niz="$niz$nwl$nwl$nwl"
    done

# Премахваме директорията contdir където сме съхранили файловете
# от control.tar.gz архива след това проверяваме дали на командния
# ред има зададени по-вече от нула параметъра и ако е така взимаме
# първият параметър като считаме че това е директорията където
# потребителят иска да запише Packages файлът.

rm -fr contdir

if [ $# -ge 1 ]
    then
   outdir=$1
    fi

echo "$ORIG_PACK_FILE$niz" > $outdir/Packages


Искрено ваш thegold_u


Титла: Re: Задачи кандидати
Публикувано от: shadowx в Dec 08, 2011, 11:33
Дали скоро няма да има пак някоя 'bash-майстора' задачка ? :)
Бяха интересно и забавно и разнообразяващо занимание ...


Титла: Re: Задачи кандидати
Публикувано от: Demayl в Mar 21, 2013, 23:24
Май ще е интересно да се направи конкурс за най-малко използвани символи в програма за изпълнение на дадена задача. Така ще е интересно да си ги мериме с даден език :D


Титла: Re: Задачи кандидати
Публикувано от: mafix в Nov 10, 2017, 19:45
здравейте
това ми е първия пост във форума и не знам на правилното  имам една "задачка", ако може така да се каже
на компютър с lubunto е зададена една снимка на десктопа (тип шега), която   и да се махне при всеки рестарт или логване на юзъра отново тя е зададена за background. И да се изтрие снимката от директорията където е няма ефект.
Знам, че е създадено чрез терминала
задачата е да премахна изображението напълно и "трайно" :)


Титла: Re: Задачи кандидати
Публикувано от: Acho в Nov 10, 2017, 19:49
Къде ги намирате тия дъртите теми ?


Титла: Re: Задачи кандидати
Публикувано от: 4096bits в Nov 11, 2017, 04:34
Темата не е лоша.