bash, несколько вопросов

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
TWINc
Сообщения: 179
ОС: Arch Linux Current

bash, несколько вопросов

Сообщение TWINc »

1)
TEST="foo"
как мне узнать длину строки $TEST?

2)
как мне узнать размер файла и занести его в переменную?

3)
есть файл
A
B
C
D
XXX
1
2
3
4

как мне из этого файла вычленить строчки 1 2 3 4... те что до пометки (в данном случае XXX)
Registered Linux user number #434194
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

1. ${#TEST}
2. stat
Спасибо сказали:
Аватара пользователя
TWINc
Сообщения: 179
ОС: Arch Linux Current

Re: bash, несколько вопросов

Сообщение TWINc »

Спасибо, разобрался
Registered Linux user number #434194
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: bash, несколько вопросов

Сообщение sash-kan »

Signate
3.

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

sed -e '/^XXX$/Q' /path/to/file
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

можно я тоже вопрос задам?:)
можно ли относительно легко удалить строку из файла, в которой содержится определенный текст?
естественно на bash.
заранее спасибо.
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: bash, несколько вопросов

Сообщение sash-kan »

Malcolm

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

sed -i -e '/определенный текст/d' /path/to/file
и вообще man sed
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

sash-kan
спасибо большое.
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

дабы не плодить темы, спрошу здесь
Решил написать свой первый скрипт на bash.
Решил с помощью скрипта банить людей на фтп.

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

ban <ip> <time> <reason>

файл ban -
записывает правило в таблицу firewall'а, и заставляет перечитать правила. Это сделать не проблема, и я это сделал. но хочется, чтобы бан ставился на время.
Мне нужно, чтобы через <time> часов бан сам снимался. скрипт unban опять же написан. Ему должен быть передан <ip> как аргумент.
Можно это делать через crontab, но там надо высчитывать, в какое время именно надо запустить команду. Можно через at. но тут опять проблема.
как я понял команды вводятся через "интерактив". Можно задавать команду через файл (в файле храниться путь к команде и аргумент.
Короче. я вот думаю там чтобы для каждого ip'а создавать файл с содержанием /path/to/unban <ip> и делать
at -f /path/to/file/with/ip now + N hour
Хочу спросить совета, может есть более "элегантный" способ?
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

Есть, crontab с запуском каждый час, например.
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

IFL писал(а):
21.08.2006 20:09
Есть, crontab с запуском каждый час, например.

хм..а по-подробней можно?
это cron.hourly? оно?
например, через 60 часов надо снять бан.
если через crontab, то надо "высчитывать" когда именно запустить unban, например сегодня понедельник, 14:00, я баню человека на 48 часов, это надо занести в cron записать типа "разбанить в среду в 14:00". Это же надо высчитать, когда через at всё делается проще.
Или я недопонимаю суть cron'а или at?
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Grom
Сообщения: 260
ОС: Debian Etch, RHEL-5.4

Re: bash, несколько вопросов

Сообщение Grom »

Создай файл, в который прописывается время разбанивания каждого IP. at может не сработать, если по какой-либо причине потребуется рестартануть сервер (мало ли что в жизни бывает).
Послужной список: Slackware-3.x, RedHat-4.x,5.x,6.x,7.x, FedoraCore-3, Debian Etch/Lenny
Осваиваю: RHEL-5.4
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

Grom писал(а):
21.08.2006 20:42
Создай файл, в который прописывается время разбанивания каждого IP. at может не сработать, если по какой-либо причине потребуется рестартануть сервер (мало ли что в жизни бывает).

т.е. всё-таки придётся высчитывать время(день, неделя и др.), когда надо разбанить?
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

Malcolm писал(а):
21.08.2006 21:00
Grom писал(а):
21.08.2006 20:42

Создай файл, в который прописывается время разбанивания каждого IP. at может не сработать, если по какой-либо причине потребуется рестартануть сервер (мало ли что в жизни бывает).

т.е. всё-таки придётся высчитывать время(день, неделя и др.), когда надо разбанить?

Есть предложение почитать про unix timestamp.
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

вот блин, не понимаю:) можно немного проще, и если не трудно, ссылки на доки.
Премного благодарен.
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

Malcolm писал(а):
21.08.2006 22:11
вот блин, не понимаю:) можно немного проще, и если не трудно, ссылки на доки.
Премного благодарен.

Пожалуйста: http://www.google.ru/search?hl=ru&rls=...&lr=lang_ru
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

IFL писал(а):
21.08.2006 23:39
Malcolm писал(а):
21.08.2006 22:11

вот блин, не понимаю:) можно немного проще, и если не трудно, ссылки на доки.
Премного благодарен.

Пожалуйста: http://www.google.ru/search?hl=ru&rls=...&lr=lang_ru

первым делом туда заглянул. спасибо.
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
backslash
Сообщения: 125

Re: bash, несколько вопросов

Сообщение backslash »

А почему нельзя сделать так:

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

echo "unban ${ip}" | at "now + ${hour}hours"

?
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

backslash писал(а):
22.08.2006 11:20
А почему нельзя сделать так:

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

echo "unban ${ip}" | at "now + ${hour}hours"

?

точно:) вот я ступил:) спасибо.
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
backslash
Сообщения: 125

Re: bash, несколько вопросов

Сообщение backslash »

Всегда пожалуйста!
...и еще. Советую обратить особое внимание на диагностику и обработку исключительных ситуаций: не запущен atd, машина будет перезагружаться (правильно в ветке заметили) и пр. и пр. Стоит протестировать скрипты в намеренно "жестких" условиях, так как, я полагаю, задача из разряда серьезных.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: bash, несколько вопросов

Сообщение sash-kan »

(backslash @ Aug 22 2006, в 11:13) писал(а):машина будет перезагружаться
и что — задание потеряется???
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Fatal
Сообщения: 49
ОС: UNIX

Re: bash, несколько вопросов

Сообщение Fatal »

подскажите, пожалуйста, как без вымудрёжа с head и tail напечатать строку по номеру? К примеру, напечатать строку 213.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

sed, вестимо
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: bash, несколько вопросов

Сообщение diesel »

Fatal писал(а):
22.08.2006 16:34
подскажите, пожалуйста, как без вымудрёжа с head и tail напечатать строку по номеру? К примеру, напечатать строку 213.


cat file|head -213|tail -1
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

diesel писал(а):
22.08.2006 19:02
Fatal писал(а):
22.08.2006 16:34

подскажите, пожалуйста, как без вымудрёжа с head и tail напечатать строку по номеру? К примеру, напечатать строку 213.


cat file|head -213|tail -1

Мусье мастер извращений)

Вообще, есть такая хорошая вещь про bash: Advanced Bash Scripting(или попросту ABS).
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: bash, несколько вопросов

Сообщение diesel »

IFL писал(а):
22.08.2006 19:57
diesel писал(а):
22.08.2006 19:02

cat file|head -213|tail -1

Мусье мастер извращений)

Вообще, есть такая хорошая вещь про bash: Advanced Bash Scripting(или попросту ABS).


много раз начинал читать :)

а .. огласите правильный вариант? мне показывали этот как наиболее простой в свое время :)
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

diesel писал(а):
22.08.2006 21:50
много раз начинал читать :)

а .. огласите правильный вариант? мне показывали этот как наиболее простой в свое время :)

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

cat file | sed -n '213p'
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: bash, несколько вопросов

Сообщение diesel »

IFL писал(а):
22.08.2006 22:24
diesel писал(а):
22.08.2006 21:50

много раз начинал читать :)

а .. огласите правильный вариант? мне показывали этот как наиболее простой в свое время :)

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

cat file | sed -n '213p'



спасибо :) не догадался :) хотя про "p" вроде даже знал :)
Спасибо сказали:
Аватара пользователя
Malcolm
Сообщения: 860
Статус: Изменник
ОС: Archlinux on IBM Z60m

Re: bash, несколько вопросов

Сообщение Malcolm »

можно ли на bash'е вставить строку в файл, после определённого слова?
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: bash, несколько вопросов

Сообщение KiWi »

Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: bash, несколько вопросов

Сообщение sash-kan »

(Malcolm @ Aug 28 2006, в 00:26) писал(а):можно ли на bash'е вставить строку в файл, после определённого слова?

на bash-е — нет. а вот с помощью, например, sed-a ... may be helpful
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: