コピペコードで快適生活

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

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

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

# 素数を出す
# 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 メンテナンスや高負荷など

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

随時追加していく。

# 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}"

gitでたまに使うコマンド集

たまにしか使わなくて、よく忘れるコマンドをメモしていく。

リモートリポジトリ系

# リモートリポジトリの変更
git remote set-url origin <新しいリポジトリURL>

# リモートリポジトリの追加
git remote add hogehoge <追加したいリポジトリURL>

# リモートリポジトリの削除
git remote rm hogehoge

# リモートリポジトリ名の変更
git remote rename <old_name> <new_name>

やりなおし系

# 間違ってaddしたやつを取り消す
git reset config/environments/development.js

# commitを打ち消し(逆向きのcommitをする)
git revert コミットのハッシュ値

# 直前のcommitをなかったことにする
# --hardオプション:コミット取り消した上でワークディレクトリの内容も書き換えたい場合に使用。
git reset --hard HEAD^

# 特定のコミットまで戻す
git reset --hard #{コミットハッシュ}

# 間違ってcommitしたものをステージ前まで戻す
git reset --soft HEAD^
git reset HEAD

# 直前のコミットの差分を見る
git diff HEAD^ HEAD

# ステージしたファイルと最新コミットの差分を見る
git diff --staged

# 直前のコミットメッセージを修正する
git commit --amend

タグ系

# タグを作る
git tag TAGNAME

# タグでブランチ切る
git checkout -b 1.6 refs/tags/v1.6

# タグ一覧
git tag

# タグの削除
git tag -d TAGNAME

# タグのpush
git push origin TAGNAME

# リモートのタグを消す
git tag -d TAGNAME
git push origin :TAGNAME

その他

# コミット間のファイル差分を出力する
# --statは編集量表示 / --name-onlyはファイル名のみ出力の意味
git diff --stat --name-only <コミットID A> <コミットID B>

# 大文字小文字の違いもファイル変更と認識させる
# Macで作業する時用
git config core.ignorecase false

# git add . で deletedが反映されない時
git add -u .