シェル

Bシェル系、Cシェルは知らん。

リダイレクション

コマンド実行時の標準出力と標準エラー出力は、いずれもディスプレイ(コンソール画面)。出力先を切り替えるには > を使う

$ command 1>/dev/null 2>&1

「commandを実行、1(標準出力)の出力先を/dev/nullに、2(エラー出力)の出力先を1と同じに」という意味。

間違いの例として以下のようなものがある

$ command 2>&1 >/dev/null 

これは「commandを実行、2の出力先を1(シェルの画面)と同じに、1の出力先を/dev/nullに」という意味になる。

1と2を変数だと思えば分かりやすい。

$ command 1>/dev/null 2>&1 

#リダイレクション処理
# var _1 = "コンソール画面"
# var _2 = "コンソール画面"
# _1 = "/dev/null"
# _2 = _1
#結果
# _1 => /dev/null
# _2 => /dev/null

いろいろ小技

ImageMagicでフォルダ内の画像を全部処理

for i in *; do convert ${i} -resize x130 "x_${i}"; done

空白の入ったファイル名も上手い事やってくれるようにする

find * -maxdepth 0 -print0 | xargs -0 -i convert {} -resize x130 "x_{}"  # 引数の場所指定

指定の文字列を持つファイルを探す

grep Hogehoge -nrH ./lib

.svnフォルダを削除

find . -name ".svn" -exec rm -rf {} \;
find . -name ".svn" | xargs rm -rf

svn管理下にないファイルをファイルをまとめてadd

for i in `svn status | grep '^\?' | awk '{print $2}'`; do svn add $i; done

シェルスクリプト

たぶんbashのスクリプト

演算子

  • -e ファイルが存在すればtrue
  • -f 通常ファイルならtrue
  • -d ディレクトリならtrue
  • -L シンボリックリンクならtrue
  • -r 読み込み可能ならtrue
  • -w 書き込み可能ならtrue
  • -x 実行可能ファイルならtrue 
  • -z 文字列長が0ならtrue
  • -n 文字列長が0でなければtrue

一行読む

read line
echo $line

rsync

指定のファイルだけ更新する

rsync -a --include=*/ --include-from=list.txt --exclude=* hoge@192.168.1.2:~/syncdir/ ~/syncdir/

更新対象のファイル一覧は –include-from オプションで指定する。–includeオプションで指定してもいいが、こういうケースでは対象が多くあると思われるのでファイルに記述するのが楽だろう。

 
shell.txt · 最終更新: 2010/01/05 15:18 (外部編集)
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki