Регистрировать любую команду, похожую на `time` [duplicate]

Вы можете:

#! /bin/sh -
while [ "$#" -ge 2 ]; do
  proto=$1 port=$2
  shift 2
  iptables --append INPUT --protocol "$proto" --destination-port "$port" \
    --match state --state NEW --jump ACCEPT || exit 1
done

С помощью zsh :

#! /bin/zsh -
for proto port do
  iptables --append INPUT --protocol "$proto" --destination-port "$port" \
    --match state --state NEW --jump ACCEPT || exit 1
done

Одно отличие состоит в том, что при нечетном количестве аргументов будет выполнено дополнительное выполнение с $ proto , содержащим последний аргумент, и $ port установленным, но пустым (как если бы мы использовали ["$ #" -gt 0] вместо ["$ #" -ge 2] в предыдущем примере).

2
17.12.2016, 11:03
2 ответа

Попробуйте annotate-output из пакета Debian devscripts . Он показывает временные метки и пишет «O» перед стандартным выводом и «E» перед стандартной ошибкой. Пример:

# run `ls` on one file that exists, and one that doesn't...
annotate-output ls /bin/bash /tmp/boosh

Вывод:

03:30:52 I: Started ls /bin/bash /tmp/boosh
03:30:52 O: /bin/bash
03:30:52 E: ls: cannot access '/tmp/boosh': No such file or directory
03:30:52 I: Finished with exitcode 2
3
27.01.2020, 21:51

Вы можете использовать ts (1) из moreutils.


ts из moreutils добавит временную метку к каждой строке ввода, которую вы ему вводите. Вы также можете отформатировать его с помощью strftime.

$ echo 'foo bar baz' | ts
Mar 21 18:07:28 foo bar baz
$ echo 'blah blah blah' | ts '%F %T'
2012-03-21 18:07:30 blah blah blah
$ 

Чтобы установить его:

sudo apt-get install moreutils

Содержимое скопировано из этого ответа: https://stackoverflow.com/a/9813614/221689

5
27.01.2020, 21:51

Теги

Похожие вопросы