あ、sudoつけ忘れたってときに便利なやつ シェル関連 2017年01月18日 おはようございマンモス! いまだに『君の名は』を見られていないベル子です。 見たいなー見たいなー。私も誰かと入れ替わりたいなー。 今日は、少し前にジェフリーに教えてもらった便利技をみんなに教えてあげようと思います。 ジェフリーって誰だよと思った人も多いと思いますが、 ベル子愛用のスクリーンキャスト「Laracasts」のマスターです。 Laracastsという名前ですが、内容は非常に多岐に渡っていてLaravel以外にPHPの基礎から始まり、オブジェクト指向プログラミングとかPHPのデザインパターンとかVimマスターコースとかES2015とかVue.js 2.0コースとか、 とにかくカバー範囲が広くてほぼ毎日のように更新があるというのが特徴です。 フリーで見られる動画も多いのですが、あまりにも充実してるので感謝の気持ちを込めて私は購読しています。 Laracastsで私が一番好きなポイントは、実はカバー範囲が広いという以外に、ジェフリーのコーディングの速さです。 私は人がコーディングしているのを見るのが大好きという、少しアレな性質を持ち合わせているので、見てるだけでとてもワクワクして時間を忘れてしまいます。うっとり。 あと、コーディング中のちょっとしたTipsも本筋とは関係なくさりげに教えてくれます。 そういうところも好きです。 という感じで先日ジェフリーがこっそり教えてくれた便利技です。 $ rm -rf kuro_rekishi とかした場合に rm: cannot remove `kuro_rekishi/yonaka_no_tweet.json': 許可がありません とか出て、「あ、sudoつけ忘れた」と思ったりラジバンダリすることがあると思います。 そんなときは $ sudo !! と打ち込みエンターを叩き込むと ドーーーーーーーーん $ sudo rm -rf kuro_rekishi 前のコマンドーにsudoが追加されて蘇ります。 なんて便利なんや!! このビックリマーク戦法(専門的には履歴展開history expansionというらしい)には他の使い方もあるようで たとえばhistory打って直近が以下のような履歴になってるとして 10021 git remote -v 10022 history 10023 history 10 10024 ls -al 10025 ls app 10026 ls -al app 直前のコマンドを展開 $ !! $ ls -al app hogeから始まる直近のコマンドを展開 一番最近 ls 使ったときのオプションと引数を展開 $ !ls $ ls -al app history番号を指定して展開 $ !10022 $ history n個前のコマンドを展開 2個前のコマンドを展開 $ !-2 $ ls app コマンドの一部を検索して展開 一番最近のgit remote -vのような間にある文字で検索して展開 $ !?remote? $ git remote -v n番目の文字を展開(0始まり) $ !!:1 $ -al lsをcdにしたい ls -alの場合は引数は2番目となるので $ cd !!:2 $ cd app 最後の引数 もっと簡単に最後の引数を代入したいときは$を使えばいい $ cd !!:$ $ cd app 最初の引数 $ cd !!:^ $ cd -al コマンド以外全部持ってくる $ !!:* $ -al app 1番目以降全部持ってくる $ !!:1* $ -al app 拡張子を除いたファイル名 圧縮ファイルを解凍して展開しcdでディレクトリに入る 直前のコマンドの最後の引数の拡張子を削除(:r) $ tar xzvf keshite_aketehaikenai.tgz $ cd !!:$:r 直近のコマンドの一部を置換 そのようなディレクトリはないと怒られたときは^置換前^置換後で直近のコマンドを置換できる $ cd ppap cd: そのようなファイルやディレクトリはありません: ppap $ ^ppap^app $ cd app ここまで書いたけど、もっと詳しくまとまってるページがあったので ▼詳しいことは以下を参照 http://d.hatena.ne.jp/zariganitosh/20131108/bash_history_expansion ということで、とりまsudoを忘れたときは sudo !! 「すーどぅーべんべん」と覚えましょう! Goodbye Everyoneのフランス語を調べたら、 Au revoir tout le mondeと出てきたのでやっぱりフランス語は難しい。 アデュー皆様。 [0回]PR