コピペコードで快適生活

明日使えるソースを自分のために

ssh-agentのコマンド

# ssh-agentの起動
eval `ssh-agent`

# 鍵の登録
ssh-add ~/.ssh/id_rsa

# 鍵の確認
ssh-add -l

# -Aオプションつきでログインすると、接続先でも秘密鍵の情報が引き継がれる
# (秘密鍵をもったssh-agentも一緒にログインしてついてくる)
ssh -A hostname

# 鍵の全削除
ssh-add -d ~/.ssh/id_rsa

# 鍵の全削除
ssh-add -D

# ssh-agentの停止
eval `ssh-agent -k`

※起動と停止でevalが必要な理由
ssh-agentコマンドを実行すると、ssh-agentを使用するために必要な環境変数の代入処理が"標準出力"される。
この代入処理をssh-agent起動と同時に実行するためevalをかませている。

シェルでいつか使うかもしれないコマンド・オプションまとめ

便利かどうかはわからないけど、いつか使うかもしれないコマンド・オプションを随時追加していく。

# 素数を出す
# factorコマンドは素因数分解するコマンド
seq 1 20 | gfactor | awk 'NF==2{print $2}'

# 文字の16進数変換
# -p で 16進数にして出す
# -p -r で元に戻す
echo おはようございます | xxd -p | xxd -p -r

# アスキーコード出力
man ascii

# アニメーション
seq 10 | while read n; do clear; echo $n; sleep 1; done

# 100日後を出す
gdate -d '100 day' '+%F'

# xargs 一度に渡す値の数を変えることができる
# コマンドの指定なしの場合は、echoが暗黙的に呼ばれる
# -Pコマンドで並列処理になる
seq 1 5 | xargs -n 3 -P 4
1 2 3
4 5

よく使うステータスコード

APIのレスポンスコードをどうするか毎回迷うので。
下記より転記させていただきました。
http://ruby-rails.hatenadiary.com/entry/20141125/1416918957#render-ctrl-status-code

Code シンボル 説明
200 :ok レスポンスが正常に終了した
201 :created createなどのアクションの結果などでリソースが正常に作成された。作成されたリソースに対するlocationヘッダも指定する
302 :found 他のURLへのリダイレクトを示す。redirect_toメソッドが内部的に使っていて明示的に使うことは少ない
400 :bad_request リクエストチェックをした結果、不正だった
401 :unauthorized 認証に失敗した
403 :forbidden アクセスが禁止されている
404 :not_found 対象のURLやリソースが存在しない
406 :not_acceptable 指定されたフォーマットでレスポンスを返せない。respond_toの指定ミスなどで起こる
422 :unprocessable_entity バリデーションエラーなど
500 :internal_server_error サーバー側が現認のシステムエラーが発生した
503 :service_unavailable メンテナンスや高負荷など

Windows10でhosts編集ウィンドウを一発で開く

powershell -NoProfile -ExecutionPolicy unrestricted -Command "start notepad C:\Windows\System32\drivers\etc\hosts -verb runas"

これを edit_hosts.bat みたいな名前で保存して、ダブルクリックで起動したらOK。

シェルで便利だったコマンド&オプションまとめ

随時追加していく。

# grepでOR検索
cat file.txt | grep -e hoge -e fuga

# grepで前後行も出力
# -A -> 後の行数
# -B -> 前の行数
cat file.txt | grep -A 10 -B 5 hoge -e fuga

# xargsでパイプで渡された値を任意の場所に突っ込む
cat file.txt | grep "hoge" | awk '{print $1}' | xargs -IXXX grep XXX file2.txt

# tail -F をリアルタイムで grep する
tail -f production.log | grep --line-buffered "hogehoge"

# gz形式のファイルを解答せずに中身を見る
gzip -dc production.log-yyyymmdd.gz | less

# 全検索
sudo find / -name filename

# <() コマンド結果をファイルのようにして入力値として与える
diff <(seq 1 3) <(seq 2 4)

# trで文字列置換(改行コードも扱える)
cat file.txt | tr 'A' 'B' # AをBにする
cat file.txt | tr -d '\n'  # 改行を消す
cat file.txt | tr -dc 1 # => 1以外を消す

# 指定文字数で改行させなおす
# 一度改行消して、60文字区切りで改行させる
cat file.txt | tr -d '\n' | fold -w60

# ImageMagickで画像変換
convert test.png test.jpg # フォーマット変換
convert -geometry 50% testimg.png testimg.50p.png # サムネイル
convert -geometry 100x100 testimg.png testimg.50p.png # サムネイル
convert -rotate 90 server.jpg server_90.jpg # 時計回りに90度回転

# xargsで複数のコマンドを実行
# (shコマンドの中で複数のコマンドを実行させて実現する)
seq 10 | xargs -I@ sh -c 'echo @; sleep 1'

# 乱数を出力する
# /dev/urandomは乱数を出す / tr-dcで0-9以外を消す
cat /dev/urandom | gtr -dc 0-9 | fold -w 10 | head

# テキストブラウザ
w3m http://google.co.jp 
w3m http://google.co.jp --dump # 表示出力

# bcコマンド 電卓
# オプション obase(output10進数)
# オプション ibase(input16進数)
echo 'obase=10;ibase=16; F + F' | bc

# ファイルに差分があるかどうかだけ返す
diff -q a.txt b.txt
ls | xargs -IX diff -q X ~/app2/X

# グローバルIDを知る
curl ifconfig.io

# 列指定でsort
sort -k2 # 2列目でソート

# 無限ループ
while true
do
  echo hogehoge
done

# 1行無限ループ
while :; do ps aux | grep unicorn; sleep 1; done

# ディレクトリ配下のファイルの拡張子を一斉置換
for filename in *.txt; do mv $filename ${filename%.txt}.csv; done

My.tmux.conf

随時更新していく

bind s split-window -v
bind v split-window -h
bind j select-pane -D
bind k select-pane -U
bind h select-pane -L
bind l select-pane -R
bind r source-file ~/.tmux.conf \; display "Reloaded!"

set -g pane-active-border-fg red
set -sg escape-time 1
setw -g mode-keys vi

bind c new-window -c "#{pane_current_path}"
bind % split-window -hc "#{pane_current_path}"
bind '"' split-window -vc "#{pane_current_path}"