シェルスクリプト

xargsコマンドの中(引渡し先コマンド)でパイプを使うには

ずっと自分の中でやり方が謎だったがようやく解決。xargsがデータを引き渡すコマンドの中で処理ごとに随時パイプを使いたいが、普通に使うとxargsが全部処理を終了してからパイプに引き渡される。そこで登場するのがksh。 ls | xargs -i ksh -c 'grep {} dat…

SSHログイン時のコマンド実行

sshでコマンドをリモート実行すると、sshを実行したサーバーに戻ってきてしまう。 # hostname local.machine # ssh user@host "cd /home/user/test" # hostname local.machine しかし"-t"オプションとコマンドのあとに" && /bin/bash"を追加するとリモートに…

Bashのforループ、if文

普段Perlに頼り切ってるのでシェルスクリプトの勉強も開始 array=(a b c d e f) for item in ${array[@]}; do echo $item done 1から100までループ for i in `seq 1 100`; do echo $i done if文はこんな感じ [注] []の両内側にスペースが必要 if [ $var == '…

SCPの巧妙な罠

今日気が付いたSCP(cpコマンドでもそうだが)の微妙な動作・・・ 以下がその違い これは"/tmp/a"フォルダーの中にdir1フォルダーとその中身がコピー my_dir=dir1 scp -r $my_dir example.com:/tmp/a これは"/tmp/a"フォルダーの中にdir1フォルダーの中身が…

sendmailやpostfixの設定

sendmailをインストール yum -y install sendmail postfixをインストール yum -y install postfix MTAを切り替えるためのsystem-switch-mailプログラムをインストール yum -y install system-switch-mail MTAを切り替える system-switch-mail

rpmコマンドを使う

インストールされているパッケージを調べる rpm -qa mysql-serverを削除 rpm -e mysql-server

サブバージョンの使い方ノート

サブバージョンでコミットする前にどのファイルが変更されるかをチェック svn status -u ログを過去5件見る svn log --limit 5 リビジョン1234を指定して、その詳細を表示 svn log -vr 1234 過去のリビジョンにリポジトリを戻す。 [注] ワーキングコピーの中…

xargsコマンドがすごすぎる

こんなUNIXコマンドがあったなんて・・・ xargsで複数の結果をパイプでつないで随時実行できる。ただし空白や特殊文字を含むファイルを正しく処理するため、findコマンドには必ず「-print0」オプションを付け「xargs -0」で受け取るようにする。 PWDのサブフ…

nkfコマンドで文字コードを変更

nkf(net kanji filter)で文字コードを変更 EUCに変更 cat file | nkf -e >> file.euc S-JISに変更 cat file | nkf -s >> file.sjis

Perlワンライナーで正規表現の文字列抽出

.cppファイルを探して行数でソート。 Perlのワンライナーで行数を抜き出す。 find . -name "*\.cpp" -exec wc -l {} \; | perl -ne 's/ .*//; print' | sort -gr cutコマンドでもいける find . -name "*\.cpp" -exec wc -l {} \; | cut -d " " -f 1 | sort -…

gccの使い方

gccのオプション -v デバッグできるようにコンパイル -l インクルードパスを追加 -c オブジェクトファイルの生成 -o 実行ファイル名を指定 -Wall ワーニング全開 gcc -g -Wall helloworld.c foo.c -c gcc helloworld.o foo.o -o helloworld

よく使うgrepのオプション

よく使うgrepのオプション r フォルダー内ファイルを再帰的に検索 n 結果の行番号も表示 i 大文字小文字の区別無し I バイナリファイルを無視 v 結果を反転(マッチしなかったもの) A マッチした行の後ろも分表示 B マッチした行の前も分表示 C マッチした…

実行ファイルや.soファイルの関数名を調べる

-g オプション付きでコンパイルする必要があるかも・・ /usr/bin/objdump --all-headers [ファイル] | grep [関数名]

LVMにディスクを追加してみた

LVMにディスクを拡張追加 物理的に/dev/hdbを追加 (今回はVMWare Serverに追加なので以下の設定をする) "Edit virtual machine setting" -> "Hardware" -> "Add" -> "Next" -> "Hard Disk" -> "Next" -> "Create a new virtual disk" -> "IDE" -> "Next" -> …

watchコマンドでリアルタイムに監視

フォルダーの中身を監視 watch ls -la netstatを毎秒起動しネットワークを監視 watch -n 1 netstat -lanput

IP設定の便利ツール

IP設定後にnetworkをリスタートせずに変更を反映するには: ifdown eth0 ifup eth0 1枚のNICに複数のIPを追加できる。 ip addr add 192.168.1.101/24 broadcast 192.168.1.255 label eth0:0 dev eth0

Vimの小技達

以下は「Esc」を押してから実行 Vimで「hello」という文字列を検索 /hello 「hello」を大文字小文字区別せずに検索 /hello\c 「hello」を「bye」に全て置換 :%s/hello/bye/g 行番号表示 :set number :se nu 行番号非表示 :set number! :se nu! 今いる場所か…

findコマンドもすごい

PHPファイルを探して行数で降順ソート find . -name '*.php' -exec wc -l "{}" \; | sort -g -r | head

lsコマンドはすごい

サブフォルダーの中身も含めてリスト表示 ("du -a"コマンドをさらに強化した感じ) ls -lR ディレクトリのみをリスト表示 ls -ld */

簡単HTML作成シェルスクリプト

#!/bin/sh var="$(pwd)/$1" echo "hello" > $var chown $2:$3 $1

Linuxで結果を出力する。

結果とエラーをファイルに出力 # ./test.sh > result 2> error 結果のみ表示 # ./test.sh 2> /dev/null エラーのみ表示 # ./test.sh > /dev/null Reference: http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231093/