「Hagi utils」の版間の差分
提供: Wikinote
(→plog コマンド) |
(→plog コマンド) |
||
行32: | 行32: | ||
=== plog コマンド === | === plog コマンド === | ||
プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。 | プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。 | ||
+ | |||
+ | Usage: | ||
+ | plog [-d] [-i INTERVAL] [-n] command | ||
+ | plog -h | ||
+ | Options: | ||
+ | -d 時刻に加えて日付を付加する。 | ||
+ | -h 使い方を表示する。 | ||
+ | -i INTERVAL コマンドを実行する間隔(秒)。デフォルトでは 1 秒。 | ||
+ | -n 時刻等を付加せず、コマンドの実行結果のみを出力する。 | ||
#!/bin/bash | #!/bin/bash | ||
行44: | 行53: | ||
### flags & variables ### | ### flags & variables ### | ||
GETOPT_ERR=0 | GETOPT_ERR=0 | ||
− | + | ||
### functions ### | ### functions ### | ||
function usage() { | function usage() { |
2009年5月13日 (水) 22:46時点における版
【秘密】(笑)
ちょっとしたコマンドやライブラリを自宅と会社で同期するためのページ。 学生時代に作ってたヤツは今じゃ全然使い物にならない…。
C 言語
printb() 関数
整数を 2 進数で表示する関数。
#include <stdio.h> void printb(unsigned num) { int i; for (i = 31; i >= 0; i--) { putchar(((num >> i) & 1) + '0'); } } void printb64(unsigned long long num) { int i; for (i = 63; i >= 0; i--) { putchar(((num >> i) & 1) + '0'); } }
使用例:argv[1]
を atoi()
に渡して printb()
にかけるコマンド
[hagio@lab ~]$ printb 1234567890 01001001100101100000001011010010 [hagio@lab ~]$ printb -1 11111111111111111111111111111111
bash スクリプト
plog コマンド
プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。
Usage: plog [-d] [-i INTERVAL] [-n] command plog -h Options: -d 時刻に加えて日付を付加する。 -h 使い方を表示する。 -i INTERVAL コマンドを実行する間隔(秒)。デフォルトでは 1 秒。 -n 時刻等を付加せず、コマンドの実行結果のみを出力する。
#!/bin/bash ### parameters ### INTERVAL=1 PRINT_TIME=1 PRINT_DATE=0 ### constants ### CMD_NAME=$(basename $0) DEFAULT_SCRIPT='{ print strftime("%T"), $0 }' ADDDATE_SCRIPT='{ print strftime("%F %T"), $0 }' ### flags & variables ### GETOPT_ERR=0 ### functions ### function usage() { echo "Usage:" echo " $CMD_NAME [-d] [-i INTERVAL] [-n] command" echo " $CMD_NAME -h" echo "Options:" echo " -d Print date besides time." echo " -h Print this help." echo " -i INTERVAL Specify the interval between executions. (seconds) Default is 1 s." echo " -n Do not print time or date. Print command output only." } ### main ### while getopts "i:ndh" opt; do case $opt in i) INTERVAL=$OPTARG;; n) PRINT_TIME=0;; d) PRINT_DATE=1;; h) usage; exit 0;; ?) GETOPT_ERR=1;; esac done shift $(( $OPTIND - 1 )) if [ $GETOPT_ERR -eq 1 -o $# -eq 0 ]; then usage exit 0 fi CMD=$@ while : ; do if [ $PRINT_TIME -eq 0 ]; then $CMD elif [ $PRINT_DATE -eq 1 ]; then $CMD | gawk "$ADDDATE_SCRIPT" else $CMD | gawk "$DEFAULT_SCRIPT" fi sleep $INTERVAL done