Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

© 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文字削除 このあたり覚えるとホームポジションから手を動かすことが少なくなるはず

Slide 8

Slide 8 text

© 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ワード後ろに移動 ここまでできると省力化

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

© 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} 変数が未定義の場合デフォルト値を使う 変数置換

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

© 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 そのほか

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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