コマンドのヘルプを見る
rm のヘルプを見たい場合には
man rm
巨大ファイルを取り込むとき
set global max_allowed_packet = 16777216
mysqlの基礎
update
update people set birth_date = '1987-11-27' where id = 10096; # updateする テーブル名 set 変更内容 where 変更箇所 # peopleテーブルのidが10096のbirth_dateを'1987-11-27'にアップデートする
delete
delete from テーブル名 where 該当箇所;
insert
insert into people (id, birth_date, created_at, updated_at) values ('10097', '1987-03-03', NOW(), NOW()); # created_atとupdated_atがないと更新できない仕様に作られているテーブルにインサートする場合 NOW()は現在の時刻をタイムスタンプで記録してくれる
select inner_memoに'テスト'という文字列を含む行のidを取得
select id from people where memo like '%テスト%';
%テスト → で終わる
テスト_ → テストではじまりその後ろに任意の1文字がある
show databases;
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | 家計簿 | | blog_app | | mysql | | sys | | testdb | +--------------------+
desc テーブル名
カラム一覧を取得
コミットをまとめる
git rebase -i --keep-empty --autosquash $(git show-branch --merge-base master HEAD)
vimに以下のような状態で開かれる
pick 05eb1e4 test2rb pick 7dc17cc add test.rb # Rebase 7802bc5..7dc17cc onto 7802bc5 (2 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # d, drop = remove commit # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. #
pickの部分を以下のように変更 (まとめたいコミットをpick→fにかえる) 一行目は残しておくのでpickのまま
pick 05eb1e4 05eb1e4 test2rb f 7dc17cc add test.rb
vimで直前のコミットメッセージを修正
git commit --amend
git push --force-with-lease
CSVファイルの中身を置換する sed
sedは与えられた文字列を,ルールに従って変換するコマンド
置換したいと思って調べたら、かなり色々できるようです
とりあえずよく使用するであろうCSVの中身の置換を覚えてみる
sed -e s/置換条件/置換文字/
list.csvの株式会社を(株)にしてlist_new.csvに書き出す
sed -e "s/株式会社/(株)/g" list.csv > list_new.csv
list.csvの株式会社を(株)にして上書きする
sed -i -e "s/株式会社/(株)/g" list.csv
さらに詳しく、これだけでも結構覚えごたえがある・・・
sed -e "s/aaaa/bbbb/" # 行で最初に出てきた'aaaa'を'bbbb'に置換 sed -e "s/aaaa/bbbb/g" # 入力の全行に渡って置換 G = Global sed -e "s/^aaaa/bbbb/" # 行頭(^)に'aaaa'のもの aaaabbbb => bbbbbbbb sed -e "s/aaaa\$/bbbb/" # 行末($)に'aaaa'のもの。$は\でescape bbbbaaaa => bbbbbbbb sed -e "s/~/bbbb/" # 行頭に'bbbb'を追加 aaaa => bbbbaaaa sed -e "s/\$/bbbb/" # 行末に'bbbb'を追加 aaaa => aaaabbbb sed -e "s/.*/abcd/" # すべての行を'abcd'に置換 sed -e "s/aa.*bb//" # aa*bbを削除
エラー回避 rescue
rescueを使うことによって、エラーを回避して処理ができる
beginとrescueの間で実行する処理で何らかのエラーが発生しても処理を中断しないようになる
begin 例外を発生させる可能性のある処理 rescue 例外が起こった場合の処理 end
rescueに続けて変数名を指定、上がってきた例外が指定した変数に代入される
begin 例外が起こる可能性のある処理 rescue => 例外オブジェクトが代入される変数 例外が起こった場合の処理 end
raiseで意図的に例外を発生させてみる
raiceは検証に便利
数に型を渡さないと、 RuntimeErrorを発生させる
RuntimeError : 特定の例外クラスには該当しないエラー
begin raise rescue => e p "error" end
結果
"error"
rescueのあとにクラスを指定すると、その例外のときのみ処理を中断しないようになる
begin raise StandardError rescue StandardError => e p "StandardErrorが発生していますが処理は中断していません" end
結果
"StandardErrorが発生していますが処理は中断していません"
指定した以外のエラーが発生すると
begin raise ArgumentError rescue ZeroDivisionError => e p "ZeroDivisionErrorが発生していますが処理は中断していません" end
結果
csv_test.rb:2:in `<main>': ArgumentError (ArgumentError)||<
例外オブジェクトからメソッドを呼んで、例外に関する情報を取得できる。
class ... 例外の種類
message ... 例外のメッセージ
backtrace ... 例外の発生した位置に関する情報($@ = $!.backtrace)
begin raise StandardError rescue StandardError => e p "StandardErrorが発生していますが処理は中断していません" p e.class end
"StandardErrorが発生していますが処理は中断していません" StandardError