Пред- и пост-команды в bash

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

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

Cargo
Сообщения: 13

Пред- и пост-команды в bash

Сообщение Cargo »

Всем привет!

Кто-нибудь знает и может подсказать, существует ли в bash такая возможность: задать текст/команды, которые выполнялись бы перед и после любой вводимой команды? Ещё лучше, если бы от результата выполнения этих команд зависело решение о выполнении основной команды.
Зачем это надо:
- предупреждение перед каждой командой, что работаешь на удалённом сервере, а не локально
- смена цвета терминала во время выполнения команды на другой и т.д.
- запрос (время ещё раз подумать) перед выполнением опасных команд (dd и т.п.)
?

Есть мысль сделать обёртку над bash, но боюсь проблем при работе системы в автоматическом режиме...
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: Пред- и пост-команды в bash

Сообщение anonymous.ru »

перед: определи значение PS1
После: установи trap на DEBUG
:drinks:
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Пред- и пост-команды в bash

Сообщение SLEDopit »

Cargo писал(а):
13.11.2010 07:50
- предупреждение перед каждой командой, что работаешь на удалённом сервере, а не локально
Имхо, проще установить на разных серверах разные promt'ы. Можно даже разными цветами.
Cargo писал(а):
13.11.2010 07:50
смена цвета терминала во время выполнения команды на другой и т.д.
По моему цвет всего терминала поменять не получится. Только цвет фона где пишется текст выполнения команды.
Cargo писал(а):
13.11.2010 07:50
- запрос (время ещё раз подумать) перед выполнением опасных команд (dd и т.п.)
это он после каждой команды спрашивать будет?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Пред- и пост-команды в bash

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

anonymous.ru писал(а):
13.11.2010 08:08
После: установи trap на DEBUG
см.
$ man -P 'less -rp "PROMPT_COMMAND"' bash
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: Пред- и пост-команды в bash

Сообщение anonymous.ru »

sash-kan писал(а):
13.11.2010 21:32
$ man -P 'less -rp "PROMPT_COMMAND"' bash

Тоже хорошо trap [-lp] [аргумент] [сигнал ...] если в качестве сигнала указано DEBUG, команда-аргумент выполняется после каждой простой команды

PROMPT_COMMAND Если значение задано, оно выполняется как команда перед выдачей каждого первичного приглашения.
:drinks:
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Пред- и пост-команды в bash

Сообщение sgfault »

anonymous.ru писал(а):
13.11.2010 21:54
sash-kan писал(а):
13.11.2010 21:32
$ man -P 'less -rp "PROMPT_COMMAND"' bash

Тоже хорошо trap [-lp] [аргумент] [сигнал ...] если в качестве сигнала указано DEBUG, команда-аргумент выполняется после каждой простой команды

Вы, наверно, хотели сказать перед?
If a sigspec is DEBUG, the command arg is executed before every simple command

(Bourne-Shell-Builtins)

Что-то типа такого, видимо,

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

trap 'echo $BASH_COMMAND; sleep 2' DEBUG

- примерно то, что хотел Cargo. Вот только после нажатия Ctrl-C во время слипа (у меня), trap на DEBUG перестает работать и BASH_COMMAND больше не определяется корректно.
Спасибо сказали:
Cargo
Сообщения: 13

Re: Пред- и пост-команды в bash

Сообщение Cargo »

Всем спасибо.
Помогло.
Спасибо сказали: