$30 off During Our Annual Pro Sale. View Details »

SRETT#4黒い画面をもっと効率的に(使って自動化の時間を捻出)

 SRETT#4黒い画面をもっと効率的に(使って自動化の時間を捻出)

SUZUKI Masashi

August 04, 2022
Tweet

More Decks by SUZUKI Masashi

Other Decks in Technology

Transcript

  1. 黒い画面をもっと効率的に(使って自動化の時間を捻出)

    View Slide

  2. © 2021 3-shake Inc. 2
    自己紹介
    - 所属
    - Sreake 事業部
    - 5/1入社
    - 経歴
    - ネットワーク系ソフトウェア代理店 サポートエンジニア/開発エンジニア
    - PerlでWebアプリ開発してる会社 Webアプリケーションエンジニア /インフラエンジニア
    - 電子契約サービスの会社 SRE
    - 株式会社スリーシェイク <= now
    すずきまさし (@masasuz)

    View Slide

  3. © 2021 3-shake Inc. 3
    黒い画面をもっと効率的に
    - 昔のようにサーバに sshして作業するということはなくなりましたが、それでも開発運用作業をしてると、
    それなりにコマンドラインを触ることが多いと思います。
    - 今回はそんなコマンドライン操作を省力化、効率化するための Tipsを紹介したいと思います。
    - 基本的にはmacのzsh前提で話していきます
    - % zsh --version
    - zsh 5.8.1 (x86_64-apple-darwin21.0)
    - bashで差異があるものは適宜触れます
    - fish使う人はほぼ知ってると思うので触れません
    - windows端末を持ってないのでだいぶケアできないです
    なんだかんだでターミナルで作業することが多い

    View Slide

  4. © 2021 3-shake Inc. 4
    目次
    - キーバインドの話
    - シェルとコマンドの話
    - プロンプトの話

    View Slide

  5. © 2021 3-shake Inc. 5
    キーバインドの話
    - 矢印キーをなるべく使わないで最小限のショートカットを覚えるだけでだいぶ作業時間短縮ができると
    思います
    - その空いた時間でさらに自動化を進めると良いのではないでしょうか
    ショートカットを使う

    View Slide

  6. © 2021 3-shake Inc. 6
    キーバインドの話
    - emacライクキーバインド
    - デフォルトなのでこのキーバインドを覚えるとよいです
    - set -o emacs で切り替えられる
    - viライクキーバインド
    - set -o vi で切り替えられる
    - bindkeyで現在のキーバインドを見れるので確認してください
    - bashならbind -p
    キーバインドの種類

    View Slide

  7. © 2021 3-shake Inc. 7
    キーバインドの話
    - Ctrl+m or j Enterと同じ
    - Ctrl+a 頭に移動
    - Ctrl+e 末尾に移動(end)
    - Ctrl+n 履歴を後ろ(next)↓
    - Ctrl+p 履歴を前(previous)↑
    - Ctrl+f 前に移動(forward)→
    - Ctrl+b 後ろに移動(back)←
    - Ctrl+h 1文字削除
    このあたり覚えるとホームポジションから手を動かすことが少なくなるはず

    View Slide

  8. © 2021 3-shake Inc. 8
    キーバインドの話
    - Ctil+l スクリーンをクリア
    - Ctrl+r 履歴を検索
    - Ctrl+s 履歴を検索前に
    - 端末の設定でstopが優先される可能性あり
    - Ctrl+w 1ワード削除
    - Ctrl+k 現在カーソル位置から末尾まで削除
    - Ctrl+[ ESCと同じ
    - ECS+f 1ワード前に移動
    - ESC+b 1ワード後ろに移動
    ここまでできると省力化

    View Slide

  9. © 2021 3-shake Inc. 9
    キーバインドの話
    - シェルのキーバインド設定より優先されます
    - stty -aで現在の設定が確認できます
    - Ctrl+sで画面停止されるので
    - stty stop undefで抑止すると良いかも
    端末のキーバインド

    View Slide

  10. © 2021 3-shake Inc. 10
    目次
    - キーバインドの話
    - シェルとコマンドの話
    - プロンプトの話

    View Slide

  11. © 2021 3-shake Inc. 11
    シェルとコマンドの話
    - 変数置換
    - コマンド置換
    - プロセス置換
    - ちょっとしたTips
    - fcコマンド
    - 事前に打ったコマンドの一部置換
    - ブレース展開
    覚えておくと便利な話

    View Slide

  12. © 2021 3-shake Inc. 12
    シェルとコマンドの話
    - シェルのvarという変数は ${var} もしくは $var という形でアクセスできますが、それだけではなく変数
    単体で文字列処理ができたりします。
    - 例
    - ${var/before/after} 最短マッチで置換
    - ${var//before/after} すべて置換
    - ${var#pattern} 先頭の最短マッチ部を削除
    - ${var##pattern} 先頭の最長マッチ部を削除
    - ${var%pattern} 末尾の最短マッチ部を削除
    - ${var%%pattern} 末尾の最長マッチ部を削除
    - ${var:-default} 変数が未定義または空の場合デフォルト値を使う
    - ${var-default} 変数が未定義の場合デフォルト値を使う
    変数置換

    View Slide

  13. © 2021 3-shake Inc. 13
    シェルとコマンドの話
    - `command`もしくは$(command) の形式でcommand 実行した結果の標準出力を文字列として扱うこ
    とができます。
    - コマンドの結果をログに残したいとき、とか dateで今日の日付を出してそれをログの名前にしたいとき
    とか
    - somecommand > $(date +%Y-%m-%d).log
    コマンド置換

    View Slide

  14. © 2021 3-shake Inc. 14
    シェルとコマンドの話
    - プロセス置換を使うことで一時ファイルを作らずに直接コマンドの標準出力をファイル扱いできます。
    - <(command) コマンドの標準出力をファイルとして扱う
    - >(command) コマンドの標準入力をファイルとして扱う
    - 便利な場面としては、コマンドの出力結果同士の diffを取りたいときとか。
    - diff -y <(command1) <(command2)
    プロセス置換

    View Slide

  15. © 2021 3-shake Inc. 15
    シェルとコマンドの話
    - fcコマンド
    - コマンドラインをEDITORで編集、実行できます
    - 事前に打ったコマンドの一部置換
    - ^before^after
    - ブレース展開
    - {1..10} => 1 2 3 4 5 6 7 8 9 10
    - cp text{,.bak} => cp text text.bak
    そのほか

    View Slide

  16. © 2021 3-shake Inc. 16
    目次
    - キーバインドの話
    - シェルとコマンドの話
    - プロンプトの話

    View Slide

  17. © 2021 3-shake Inc. 17
    プロンプトの話
    - 一番目にするので知っておきたい情報をひと目で分かるようにしておくとはかどります。
    - ここまで紹介してきた要素を使って自分はプロンプト設定してます
    - このあたりについて話します
    - プロンプトの変更
    - 変数、コマンドの結果をプロンプトに表示する
    - プロンプトに表示させると便利なもの
    一番目にする部分なのでカスタマイズしたいところ

    View Slide

  18. © 2021 3-shake Inc. 18
    プロンプトの話
    - PROMPT変数に書かれたものがプロンプトに出力されます
    - bashはPS1
    - 右プロンプトはRPROMPT変数
    - 可変のパスとかは右プロンプトに仕込むとよいかも
    - プロンプト変数で使える記号 (zsh)
    - %n user
    - %m host
    - %~ current directory
    - %* HH:MM:SS
    - %D YY-mm-dd
    -
    プロンプトの変更

    View Slide

  19. © 2021 3-shake Inc. 19
    プロンプトの話
    - 基本的にシェル起動時に PROMPT変数に値が読み込まれるので、その時点で代入された結果が表
    示されます
    - 現在の状態をプロンプトに出すためには、 precmdフックでPROMPTを更新するfunctionを登録してあ
    げる必要があります
    - autoload -Uz add-zsh-hook
    - add-zsh-hook precmd update_prompt
    変数、コマンドの結果をプロンプトに表示する

    View Slide

  20. © 2021 3-shake Inc. 20
    プロンプトの話
    - 時刻
    - ユーザ、ホスト名
    - 端末を複数台使わない人は不要かも
    - カレントディレクトリ
    - 直前のコマンドの成否
    - 見た目上はエラー出てないのに失敗してる場合があるので気づきたい
    - gitの状態
    - AWS_RPOFILEの中身
    - kubernetsのcurrent-context
    - うっかり違う環境をいじるのを防ぎたい
    プロンプトに表示させると便利なもの

    View Slide

  21. © 2021 3-shake Inc. 21
    まとめ
    - 覚えておくと捗るというTipsを紹介しました
    - シェルは沼にはまるときりが無いので使える部分だけ取り入れていただけ
    たらと思います
    - 自分自身も全然使いこなせてるというわけでもないので、便利なTipsが
    あったら教えて下さい
    - イチから設定いじるの辛い人はoh-my-zshとか使うといいかもです
    - では、快適なコマンドラインライフをこれからもお過ごしください

    View Slide