全文検索:
- 01 Bash - 制御文
- 、elifは省略可能です。thenは必須となります。</color> ==== 構文 ==== <code> if [ 条件1 ]; または if test 条件 then 条件1が成立した... 実行するコマンド else 条件1と条件2が不成立の時に実行するコマンド fi </code> ==== if文 使用例 ==== testコマンドによる、if分岐 test01.sh <code> #!/bin/sh if test $1 -le 0 then echo "Number i... l 0." else echo "Number is grater than 0." fi </code> 実行例 <code console> $ sh test01.sh 6 Number is L
- 03 特殊な変数展開
- thを省略すると最後までとして解釈します。 * 変数VARの値の2番目から6個を切り出す。 <code console> $ VAR=0123456789 $ echo ${VAR:2:6} 234567 </code> ===== 合致する変数名を表示 ===== ${!prefix*} 文字列prefixで... 前の**変数名**を全て表示します。 * VAR*と合致する**変数名**を全て表示する。 <code console> $ VAR_1=0123 $ VAR_2=abcd $ VAR_3=wxyz $ echo ${!VAR*} VAR_1 VAR_2 VAR_3 </code> ===== 値の文字数を表示する ===== ${#variable} 変数variab
- 06 Bash リダイレクション
- リダイレクション ====== ===== 書式 標準入出力のリダイレクション ===== <code> > File 標準出力の内容をFileに書き込む >> File 標準出力の内容をFi... イルディスプリタm番からとする。) <&- 標準入力のファイルディスプリタを閉じる </code> ===== 書式 ファイルディスプリタ番号を指定したリダイレクション ===== <code> n> File ファイルディスプリタn番の内容をFileに書き込む n>&m ファイルデ... をファイルディスプリタn番の入力とする n<&- ファイルディスプリタn番を閉じる </code> ===== ファイルディスプリタ番号 ===== 0(標準入力)と1(標準出力)は省略する事
- 22 Bash flock 2重起動防止 @bash:script
- h flock 2重起動防止 ====== ===== Cronで実行する場合 ===== <code> flock -n /tmp/somthing.lock something.sh </code> ==== 実行例 ==== <code| console1> $ flock -n /tmp/flock.lock sleep 360 </code> 「-n」オプションだと、実行せずに終了します。 <code| console2> $ floc
- 09 color表示 @bash:script
- ====== 09 color表示 ====== <code> $ echo -e '\e[VALUE[;VALUE..]mSTRINGS\e[m' </code> VALUE <code> Text attributes 0 All attributes off 1 Bold on 4 Underscore (on monochrome display adapt... n 43 Yellow 44 Blue 45 Magenta 46 Cyan 47 White </code> 1.赤文字にする。 <code console> echo -e "\e[31m AAAA
- 01 ファイルの指定行を抜き出す @bash:script
- ===== 指定行を表示 ===== これで、hogehoge.confの100行目を表示 <code console> $ sed -n 100p /etc/hogehoge.conf </code> ===== 指定行間を表示 ===== これで、hogehoge.confの100行目~120行目を表示 <code console> $ sed -n 100,120p /etc/hogehoge.conf </code> ===== 指定行目以降を表示 ===== これで100行目以降を表示 <code> $ t
- 05 Bash 正規表現
- ====== 05 Bash 正規表現 ====== <code> 記号 意味 . 改行文字以外の任意の1文字 * 直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない ^ 行の... グループ化する。マッチした内容は参照できる \ 正規表現に使われる記号を普通の文字として扱う </code> <code> 記号 意味 Hogege Hogegeに一致 [0-9] 1文字の数字に一致 [a-z] 1文字の小文字アルファベットに一致 [A-Z] 1文字の大文字アルファベットに一致 [0... 行 test\|TEST testまたはTEST Woo* Woo,Wooo....に一致 </code> <code> [:alnum:](英数字[0-9A-Za-z]), [:alpha:](英字
- 10 IPアドレス判定 @bash:script
- ====== 10 IPアドレス判定 ====== <code console> if [ -n "`echo $IP |sed 's/^\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)... echo "IPアドレスではありません。" exit fi </code> ===== 単純にgrepで検索 ===== <code console> grep -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/secure </code> こっちの方が正確 <code console> grep -e "[0-9]\{1,3\}\
- 13 簡単なパケロスチェックプログラム @bash:script
- チェック ===== 60回ずつpnigを打ち続けるプログラム 毎日00:00にローテートする <code console> #!/bin/sh IP=$1 LOG_DIR="./logs" LOG_FI... FILE echo -n > $LOG_FILE fi fi done </code> ===== Pingパケロス時Tracerouteチェック ===== 1秒毎にpingを打... って、パケロスが発生した時にtracerouteを打つプログラム 毎日00:00にローテートする <code console> #!/bin/sh IP=$1 LOG_DIR="./logs" LOG_FI... echo -n > $LOG_FILE fi fi sleep 1 done </code> ===== Macの場合 ===== Macはpingのオプションがちょっと違うので、ちょっ
- 15 awkでカウント @bash:script
- ==== awkを使って行数のカウントを行ってみる ==== 下記のリストを利用 ==== <code console> $ cat list A B C D E F G H I C D C </code> ==== どの文字列が何個あるのか出してみる ==== <code console> $ cat a | awk '{count[$0]++} END {for(i in count) {print ... : 3個 D : 2個 E : 1個 F : 1個 G : 1個 H : 1個 I : 1個 </code> ==== 2個以上存在するもののみ表示 ==== <code console> $ cat
- 19 expectで自動su @bash:script
- く実行するコマンドを自動で実行できるようしてみる。 ===== 1.シェルを用意 ===== <code |~/bin/su.sh> #!/bin/sh PW="[PASSWORD]" expect -c... su - expect matsui: send -- ${PW}\n interact " </code> ==== 実行権追加 ==== <code> $ chmod 755 ~/bin/su.sh </code> ===== 2.bashrcに追加 ===== <code |~/.bashrc> if [ -f ./bin/su.sh ]; the
- 24 バックアップシェル(backup.sh) @bash:script
- バックアップシェル(backup.sh) ====== Cronでバックアップ用シェルのメモ <code> #!/bin/bash BACKUP_DIR=/home/backups BACKUP_LIS... fi done < $BKLIST } rsync_dir exit; </code> ===== conf file ===== <code> # cat /home/backups/conf/host_name ## directory rsync /var/www/vhos... mysql:all ## mysqldump each db #mysql:hogedb </code> ===== Cron ===== <code> # crontab -l PATH=/sbi
- 04 ヒアドキュメント
- = 改行やホワイトスペースなどが、書いたとおりに適用されるヒアドキュメントが構文に存在する。 <code console> $ cat << EOM > aaa > bbb > ccc > ddd > EOM aaa bbb ccc ddd </code> ===== 変数に代入 ===== <code console> $ a=`cat << EOM > aaa > bbb > ccc > ddd > EOM` $ echo $a aaa bbb ccc ddd </code> {{tag>bash}}
- 09 While 内でSSH
- ====== 09 While 内でSSH ====== これだと、1行しか表示されない。 <code> while read NAME HOST CMD do ssh $NAME@$HOST "$CMD" done </code> SSH を実行すると、標準入力がそちらに振り向けられるため、read で読んだ1行のみならず、... レクトし、標準入力をリダイレクトしないようにする。 ===== こちらだとOK ===== <code> while read NAME HOST CMD do ssh -n $NAME@$HOST "$CMD" done </code> {{tag>bash ssh while}}
- 11 Cronが動かない時
- nが動かない時 ====== ===== 「2&>1」を付けて、ログ出力してみる ===== <code> 05 20 * * * bash -x /root/bin/backup.sh > /tmp/log.log 2&>1 </code> ===== PAHTが通ってない可能性 ===== <code> PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/bin </code> {{tag>cron}}