シェル

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

操作

  • Ctrl-A カーソルを先頭に移動
  • Ctrl-E カーソルを末尾に移動
  • Ctrl-Z 中断(fgで戻る)
  • Ctrl-R コマンド履歴検索

リダイレクション

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

$ 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

標準入力から1行読み取る

read line
echo $line

標準入力が尽きるまで行を読み取る

while read line
do
  echo $line
done

ファイルから行を読み込みする

while read line
do
  echo $line
done < hoge.txt

ヒアドキュメントから行を読み込みする

while read line
do
  echo $line
done << EOS
1
2
3
EOS

rsync

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

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

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

date

フォーマット

date +%Y%m%d

エポック秒

date +%s

ファイルの更新日を取得

date -r ファイル名

フォーマット変換

date -d '2011/01/31 01:15:30' '+%Y-%m-%d %H:%M:%S'

指定日付の一ヶ月前を取得

date -d '2011/01/01 1 month ago' '+%Y-%m-%d'

dオプションはGNU dateのみ

gzip

圧縮ファイルを直接閲覧

gzip -c -d auth.log.2.gz | less 

cは元ファイルを削除せずに標準出力へ書き出するオプション

zcat auth.log.2.gz | less
 
shell.txt · 最終更新: 2012/01/10 22:03 by nullpon
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki