Дело в чём, 1й семестр изучения предмета "операционные системы" подошёл к концу. Получили варианты задач от препода и у группы отвисли челюсти. Если самая последняя лабораторная работа была - решение систем 3х уравнений с 3я неизвестными, то на экзамене нам надо писать то с чем уравнения и рядом не лежали. Пожалуйста помогите, через 4 дня экзамен. Возможна символическая плата...
8.
написать shell-процедуру,которая вводит символьную строку,содержащую некоторое сообщение, проверяет наличие в своем почтовом ящике такого же сообщения, если в почтовом ящике имеется введенное сообщение, то выводит его на экран и посылает на терминалы всем пользвателям в данный момент работающим в системе из тех числа чьи имена передаются в качестве параметра, всем остальным пользователям чьи имена передаются в качестве параметров, рассылает введенное сообщение по почте
9.
написать shell-процедуру,которая вводит символьную строку,содержащую текст некоторого сообщения, проверяет регистрацию в системе пользователей, чьи имена переданы вторым и последующими параметрами. всем пользователям, чьи имена передаются в качестве второго и следующих параметров и работающх в системе в течение заданного первым параметров времени, рассылает введенное сообщение по почте, всем остальным пользователчм работающим в системе рассылает прямые сообщения, содержащие введенную символьную строку.
Shell-процедуры
сколько вы готовы заплатить?
2модераторы - это в раздел "работа" надо перенести.
ладно. сделаем тему:
Типовые задачи по bash с решением :)
Возможна символическая плата...
не отделаетесь. задачи простые, но писать долго.
В общем как:
Наилучший вариант, дать консультацию по этим задачам, чтобы понять и научиться их делать.
Либо задачи с построчным комментированием, рублей 30 за задачу... что скажете?
Наилучший вариант, дать консультацию по этим задачам, чтобы понять и научиться их делать.
Либо задачи с построчным комментированием, рублей 30 за задачу... что скажете?
скажу, что за 30 рублей в Питере даже бутылки нормального пива не купить (любимый бичами и алкашами ёрш - балтика №9 стоит 33..37р).
Потому ваши задачки я буду решать от нечего делать, ради лулзов.
(лулзы лулзами, а на яд 41001666004238 переводить трицатники не забывайте ;) )
Написать процедуру, которая в заданном первым параметром каталоге находит все простые файлы, число ссылок на которые максимально и удаляет их; удаляет все пустые каталоги; выдает на экран сообщения о каждом удаленном файле и каталоге.
какие ссылки? симлинки или хардлинки?
2.
написать процедуру, которая вводит 2 символьных строки, в каждой введенной строке ищет подстроку, передаваемую в качестве параметра. Заменяет каждую найденную подстроку на пробел, образует из полученных строк третью строку так, чтобы в ней чередовались слова из первой и второй строк. выводит на экран введенные строки и нову. строку
[console]$ ./ff.sh
input line 1: first second
input line 2: zzzxyyyxwww
s1 = first second, s2 = zzzxyyyxwww, sub = x
---- s1:
first
second
---- s2:
zzz
yyy
www
first
zzz
second
yyy
www
first zzz second yyy www
[/console]
#!/bin/sh
function ff()
{
read -p"input line 1: " s1
read -p"input line 2: " s2
echo "s1 = $s1, s2 = $s2, sub = $1"
s1=`echo "$s1" | sed "s/$1/ /g"`
s2=`echo "$s2" | sed "s/$1/ /g"`
echo "$s1" | sed -r 's/\s*(\<\w+\>)/\1\n/g' >tmp.s1
echo "---- s1:"
cat tmp.s1
echo "$s2" | sed -r 's/\s*(\<\w+\>)/\1\n/g' >tmp.s2
echo "---- s2:"
cat tmp.s2
sed 'R tmp.s2' tmp.s1 | tee tmp.s3
sed -rn 'H; ${ g; s/\n/ /gp; }' tmp.s3
}
ff "x"
написать процедуру, которая вводит символьную строку, проверяет введенную строку на совпадение со строкой, переданной в качестве первого параметра, если строки совпадают,то выдает на экран приглашение повторить ввод, если не совпадает, то сравнивает длину введенной строки с длиной 2-го параметра и в случае их равенства выводит на экран введенную строку в обратном порядке составляющих ее символов
[console]ksu@ksu:~$ ./fx.sh
input '123' 123
equivalent line '123'.
repit 12
second line - '12'
ksu@ksu:~$ ./fx.sh
input '123' 12345
len '12345' == len 'abcde'
54321
[/console]
#!/bin/sh
function ff()
{
read -p"input '$1' " s1
if [ "$s1" = "$1" ]; then
echo "equivalent line '$s1'."
read -p"repit " s2
echo "second line - '$s2'"
else
if [ ${#s1} = ${#2} ]; then
echo "len '$s1' == len '$2'"
echo $s1 | sed -rn '
s/.*/\n&\n/
:l
s/\n(.)(.*)(.)\n/\3\n\2\n\1/
t l
s/\n//g
p'
fi
fi
}
ff "123" "abcde"
где там мои 60 руб? ;)
Спасибо за помощь=) перешлем все вовремя, без обмана Gard пошел на кошелек деньги класть)
положил денюшку на счёт, как придут - вышлю, на счёт 20й - с хардлинками,
и если не трудно, можешь комментарии писать, чтоб разобраться можно было в коде, а то проги защищать нужно... спасибо
Написать shell-процедуру, которая вводит символьную строку, проверяет строку на совпадение со строками содержащимися в файле, имя которого пеедается в качестве первого параметра, для всех найденных совпадений заменяет соответствующие строки в файле на строку, переданную в качестве 2-го параметра. выводит на экран старое и новое содержимое файла а также число найденных совпадений.
[console]$ ./fy.sh
input 'fx.sh'
---------- old file:
#!/bin/sh
function ff()
{
read -p"input '$1' " s1
if [ "$s1" = "$1" ]; then
echo "equivalent line '$s1'."
read -p"repit " s2
echo "second line - '$s2'"
else
if [ ${#s1} = ${#2} ]; then
echo "len '$s1' == len '$2'"
echo $s1 | sed -rn '
s/.*/\n&\n/
:l
s/\n(.)(.*)(.)\n/\3\n\2\n\1/
t l
s/\n//g
p'
fi
fi
}
ff "123" "abcde"
---------- new file:
#!/bin/sh
# sub
function ff()
{
read -p"input '$1' " s1
if [ "$s1" = "$1" ]; then
echo "equivalent line '$s1'."
read -p"repit " s2
echo "second line - '$s2'"
else
if [ ${#s1} = ${#2} ]; then
echo "len '$s1' == len '$2'"
echo $s1 | sed -rn '
s/.*/\n&\n/
:l
s/\n(.)(.*)(.)\n/\3\n\2\n\1/
t l
s/\n//g
p'
fi
fi
}
# sub
ff "123" "abcde"
---------- substitutions count:
2
[/console]
#!/bin/sh
function ff()
{
read -p"input '$1' " s1
echo "---------- old file:"
cat $1
echo "---------- new file:"
sed -r "
/^$s1$/{
s//$2/
H
}
$ {
x
s/^\n//
w tmp.x
x
}
" $1
echo "---------- substitutions count:"
sed -n '
1{
${
/^$/{
s/.*/no sub/p
q
}
}
}
$=' tmp.x
}
ff "fx.sh" "# sub"
положил денюшку на счёт, как придут - вышлю, на счёт 20й - с хардлинками,
и если не трудно, можешь комментарии писать, чтоб разобраться можно было в коде, а то проги защищать нужно... спасибо
не... комменты лениво писать. да и времени сейчас уже нет :( работать надо :)
спрашивайте, если что непонятно..
7.
написать shell-процедуру,которая вводит символьную строку,содержащую имя некоторого файла, проверяет наличие файла в домашнем каталоге или в одном из подкаталогов, если файл существует, то выдает на экран его содержимое, если файл не существует то создает его и записывает в него с консоли некоторый текст, устанавливает для файла права доступа передаваемые в качестве параметра
[console]ksu@ksu:~$ ./fz.sh
input file_name: fz.sh
/home/ksu/fz.sh
#!/bin/sh
function ff()
{
read -p"input file_name: " file_name
find $HOME -maxdepth 1 -name "$file_name" | tee tmp.z
if [ -s tmp.z ]; then
cat `cat tmp.z`
else
echo "input in file '$file_name':"
cat >$file_name
chmod -v $1 $file_name
fi
}
ff "644"
ksu@ksu:~$ ./fz.sh
input file_name: zzzz
input in file 'zzzz':
x
y
z
mode of `zzzz' retained as 0644 (rw-r--r--)
[/console]
*примечание1:
-maxdepth 1 нужно заменить на нужный уровень вложенности, или вообще убрать, если смотреть весь домашний каталог (у меня это очень долго - файлов много).
*примечание2:
этот файл ищет сам себя и сам себя выводит в первом примере. во втором создаёт файл zzzz
*примечание3: завершать ввод файла нужно комбинацией CTRL+D, что значит "конец файла" или EOF
*примечание4:
cat `cat $tmp.z`
интересная строчка; она выводит содержимое файла tmp.z, в который записала имя найденного файла команда find. это имя передаётся первой команде cat, которая и выводит найденный файл. Такое хитрое косвенное обращение.
про остальные команды см:
man команда
help команда
а про if [ ... ]; then
читайте man bash
и man test
Gard, вы какую почту изучали у себя?
что пишет
[console]$ ls -l `which mail`[/console]
?
извиняюсь за задержку оплаты - с терминала на кошелёк деньги приходят с большой задержкой...
Gard, вы какую почту изучали у себя?
что пишет
[console]$ ls -l `which mail`[/console]
?
не изучали почту...
с терминала на кошелёк деньги приходят с большой задержкой...
а я никогда не спешу ;)
не изучали почту...
ну... будем делать для mailx :)