「Hagi utils」の版間の差分

提供: Wikinote
移動: 案内検索
(plog コマンド)
行33: 行33:
 
プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。
 
プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。
  
※後日追記すること
+
#!/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

2009年5月13日 (水) 22:45時点における版

【秘密】(笑)

ちょっとしたコマンドやライブラリを自宅と会社で同期するためのページ。 学生時代に作ってたヤツは今じゃ全然使い物にならない…。

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 コマンド

プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。

#!/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