викторина по shell

Разговоры ни о чём

Модератор: vadim64

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-26 17:50:10

предлагаю поиграться, заодно может узнать чего нового : )
типа я начну. один дает задачку, другие решают. например, проверить существует ли файл /etc/motd
решение мб таким

Код: Выделить всё

[ -f /etc/motd ]; echo $?
если 0 значит существует, 1 - нет
кто дает ответ, задает свое задание и т.д.
кто согласен?

1 задание: выдрать из текущего пути имя каталога : ) (из /usr/port/distfiles чтобы осталось distfiles)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение Alex Keda » 2007-11-26 19:27:46

Код: Выделить всё

man basename
вопрос - выдернуть путь из того же имени, без имени файла
Убей их всех! Бог потом рассортирует...

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-26 19:38:53

жесть но пашет %)

Код: Выделить всё

expr $PWD : '\(.*\)/'
строку из нижнего в верхний регистр?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение Alex Keda » 2007-11-26 19:45:33

catdog_ писал(а):жесть но пашет %)

Код: Выделить всё

expr $PWD : '\(.*\)/'
строку из нижнего в верхний регистр?
интересный ответ, но есть иное решение

Код: Выделить всё

dirname /parh/to/file
/parh/to
========

Код: Выделить всё

ussr# echo STROKA | tr "[:upper:]" "[:lower:]"
stroka
ussr#
==============
вопрос - есть файл:

Код: Выделить всё

ussr# more file.txt
stroka 1
stroka 2
stroka 3
stroka 4
sktroka 5
stroka 6
stroka7

ussr# одна команда без конвейеров - выбрал две строки выше 4 и одну ниже + сама 4-я
stroka 2
stroka 3
stroka 4
sktroka 5
ussr#    
огласите команду
Убей их всех! Бог потом рассортирует...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение kmb » 2007-11-26 19:58:45

Код: Выделить всё

awk "(NR>1 && NR<6)" test.txt
как вывести размер файлов, папок в текущей директории?
truth is out there...

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-26 20:05:51

задание вывести числа от 1 до 33 в 3 колонки

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение Alex Keda » 2007-11-26 20:05:58

Код: Выделить всё

ussr# grep --after-context=1 --before-context=2 "stroka 4" file.txt
stroka 2
stroka 3
stroka 4
sktroka 5
ussr#       
кругом извращенцы...
вы не ответили - лишь подогнали под ситуацию. условие было иное.
===========
du
=========
как изменить дату последнего доступа к файлу?
Убей их всех! Бог потом рассортирует...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение kmb » 2007-11-26 20:09:52

Задачу нужно правильно формулировать :P =)))
Тем более, мы же не знаем, что на строке 4 будет :)
Кстати, не du -sm, не du не показывают чего я просил :) первая выводит одно число, вторая выводи вместе с под папками, я же просил что-нибудь типа таблички наподобие df -m =)
truth is out there...

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-26 20:11:33

лис, можно же по разному ; ) я бы твою решил так (по извращенски)

Код: Выделить всё

sed -n '2,5p' file.txt
нада была в задании указать что файло может быть большииим заранее не известно на какой строке стоит нужная: )
Последний раз редактировалось catdog_ 2007-11-26 20:14:20, всего редактировалось 1 раз.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение Alex Keda » 2007-11-26 20:11:44

тогда :))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение Alex Keda » 2007-11-26 20:13:00

lissyara писал(а):

Код: Выделить всё

ussr# одна команда без конвейеров - выбрал две строки выше 4 и одну ниже + сама 4-я
помоему - условие чётче некуда..
и твое решение - тоже не катит.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-26 20:47:00

как изменить дату последнего доступа к файлу?
touch -t 11262000 file.txt ?

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение schizoid » 2007-11-28 18:01:48

а задание?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-28 21:51:37

я ж писал выше расположить числа от 1 до 33 в 3 колонки: )
вот так
1 2 3
4 5 6
........
или
1 12 ...
2 13
3 14
...

Гость
проходил мимо

Re: викторина по shell

Непрочитанное сообщение Гость » 2007-11-29 4:18:10

Код: Выделить всё

> jot 33 | rs 0 3
1   2   3
4   5   6
7   8   9
10  11  12
13  14  15
16  17  18
19  20  21
22  23  24
25  26  27
28  29  30
31  32  33
> jot 33 | rs -t 0 2
1   18
2   19
3   20
4   21
5   22
6   23
7   24
8   25
9   26
10  27
11  28
12  29
13  30
14  31
15  32
16  33
17  
Или нужно именно с 12-ки?

А пока я дам свою задачу:
есть файл rand.txt:

Код: Выделить всё

rmajjfia
uhfgkljv
skfuycar
gsalaoxy
lypcjesi
rnusfdnn
colaqtkd
xkprutze
gytxmkwv
krtuzrjd
rymtoatl
aotolxid
flcunoqv
shummdhn
uvotcnep
xstkwwls
edtrpqdl
aytnuaxe
tmepzwnh
galhuxgj
Нужно удалить диапазон от lypcjesi до uvotcnep включительно одной командой, не меняя имени файла. Чтоб такую команду можно было скормить find /path/to/smth -type f -exec <команда> {} +

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-29 4:42:26

Код: Выделить всё

sed '/^lyp/,/^uvo/d' rand.txt
не пойдет?

Гость
проходил мимо

Re: викторина по shell

Непрочитанное сообщение Гость » 2007-11-29 4:57:15

кое-чего не хватает, т.к. надо удалить в файле, а не считать и вывести отредактированный в stdout
а так, да, сойдет.

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-11-29 17:03:34

ну раз сойдет, тогда как подсчитать количество строк в фале без wc?

Гость
проходил мимо

Re: викторина по shell

Непрочитанное сообщение Гость » 2007-11-29 17:30:48

но мне все равно интересно отгадаешь ли ты правильный вариант, телепатией владеешь? :)
ответ на твой вопрос: sed -n '$='

Гость
проходил мимо

Re: викторина по shell

Непрочитанное сообщение Гость » 2007-11-29 17:35:04

вопрос: Как дождаться завершения выполнения определенного задания в асинхронном режиме (что-то типа cmd &)?

Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение RusBiT » 2007-12-02 13:12:44

Задание
Есть файл вида ip - mac
Для примера :)

Код: Выделить всё

(10.0.6.5) at 00:02:a5:fe:d9:fd
(10.0.6.6) at 00:13:02:4b:a4:04
(10.0.6.7) at 00:04:76:0e:9b:0a
(10.0.6.8) at 00:04:79:67:8e:ec
(10.0.6.23) at 00:04:61:43:ad:88
(10.0.6.28) at 00:0e:a6:95:07:3e
(10.0.6.36) at 00:04:79:67:8e:ec
(10.0.6.39) at 00:0d:87:cf:13:be
(10.0.6.42) a 00:04:79:67:8e:ec
(10.0.6.66) at 00:13:8f:ab:bc:c7
(10.0.6.72) at 00:0e:a6:95:07:3e
(10.0.6.75) at 00:04:79:67:8e:ec
(10.0.6.76) at 00:80:48:38:e8:4f
(10.0.6.81) at 00:0f:ea:33:f8:df
(10.0.6.100) at 00:80:48:19:63:f5
(10.0.6.103) at 00:0e:a6:95:07:3e
Нужно определить какой mac занимал какие ip
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение dikens3 » 2007-12-02 13:14:45

cat file | grep "00:00:00:00:00:00" | awk '{print $1}'
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение RusBiT » 2007-12-02 17:23:17

dikens3 писал(а):cat file | grep "00:00:00:00:00:00" | awk '{print $1}'
Имел ввиду чтоб автоматически определялся :) по маку, есть подмена или нет
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)

Гость
проходил мимо

Re: викторина по shell

Непрочитанное сообщение Гость » 2007-12-02 20:00:24

Код: Выделить всё

> sh test.sh test.data
00:04:79:67:8e:ec in test.data contains:
10.0.6.8
10.0.6.36
10.0.6.42
10.0.6.75
00:0e:a6:95:07:3e in test.data contains:
10.0.6.28
10.0.6.72
10.0.6.103
> cat test.sh
for file; {
    for mac_addr in $(sed 's/([.[:digit:]]*)[[:space:]]*at[[:space:]]*\([:[:alnum:]]*\)/\1/' "$file" | sort -d | uniq -d); {
        echo $mac_addr in $file contains:
        sed -n "/$mac_addr/{ s/.*(\([.[:digit:]]*\)).*/\1/; p; }" $file
    }
}
Так? Подозреваю, что можно обойтись чистым awk, где счетчик будет в основном скрипте, а вывод в END части.

Аватара пользователя
catdog_
сержант
Сообщения: 173
Зарегистрирован: 2007-10-10 1:23:21
Откуда: петрозаводск
Контактная информация:

Re: викторина по shell

Непрочитанное сообщение catdog_ » 2007-12-03 3:46:15

Гость, на предыдущий то свой вопрос ответь, а то никто видима не знает: )