bash と tcsh の違いに混乱する(笑)ので、まとめてみる。
set history= ( 1000 "%h %Y/%W/%D %T %R\n" )
export HISTTIMEFORMAT='%F %T '
ファイルに残したくない場合はそれぞれ unset savehist, unset HISTFILE。
tcsh で月を表すのがなぜ %W なのかはよくわかってない。bash は strftime にわたると書いてある。
参考文献: historyコマンドに日付を加える
if ($?SSH_TTY) then hogeratta else bakeratta endif
参考文献: http://okwave.jp/qa/q5459175.html
-n は -z でも可。その場合は条件が反転する。
if [ -n "$SSH_TTY" ]; thrn hogeratta else bakeratta fi
if test "x$1" = "x"; then echo "argv #1 is null" else echo "argv #1 is not null" fi
x をつけているのは、$1 が空だと test = "" となり、"unexpected operator" と怒られてしまうため。ぶっちゃけ、空文字列にならなければ何でもいい。
DAY=`/bin/date +%d if test $DAY -le 15; then echo "First half of the month" else echo "Second half of the month" fi
if test $DAY -le 10; then echo "First third of the month" elif test $DAY -le 20; then echo "Second third of the month" else echo "Last third of the month" fi
条件文の後ろに ";" を入れることで、if と then を1行にまとめることもできる。
if [ -s file2test ]; then echo "file2test is not empty" else echo "file2test is empty file" fi
if [ ! -s file2test ]; then echo "file2test is empty" fi
if ($1 == "") then echo "argv #1 is null" else echo "argv #1 is not null" endif
if (`/bin/date +%d` < 15) then echo "First half of the month" else echo "Second half of the month" endif
if (`/bin/date +%d` < 10) then echo "First third of the month" else if (`/bin/date +%d` < 20) then echo "Second third of the month" else echo "Last third of the month" endif
bash の 2>&1 は、stderr の出力を stdout と同じにするの意味だが、適用順序に注意。3番目の例では、strerr のみが stdout に出力され、stdout そのものは file_from_stdout に出力される
tcsh には、bash の最初の例のように、stdout と stderr を別々のファイルに書き出す方法はないらしい…
Copyright © 2013 Yuuichirou Oka, oka AT a-f DOT jp
All Rights Reserved. International Copyright Secured.