Qiita最終日の記事です。私のxonshrc、業務用のコマンドとか含めると大体1500行くらいあるんでgithubで公開するんじゃなくて一部ずつ切り取ってここで紹介しようかなと思いました。なんか作る時の参考になれば幸いです。-以下に過去の大まかな設定が書いてあります。基本的な設定は大体以下のようになっています。}前年との違いで言えば以下辺りが大きい気がします。nameを出すようにしたPTK_STYLE_OVERRIDESによってstyleを上書きしたgithubの所持ユーザ名が増えて、関係ないリポジトリにvaaaaanquishでpushしてしまうみたいな事が2回起こったので確認するようにしました。後述しますが、gitユーザ変える関数とかも作っています。PTK_STYLE_OVERRIDESは以下のissueでも発言した通り、目がチカチカするのを抑えるために必須です。GitHubキー入力ごとに更新されるCOMPLETIONSですが、iTerm2のcolorと合わせて調整しています。補完の色合いとかxonshの補完はzsh風にもできるんですが、私はこちらに慣れてしまいました。aliasesエイリアスは別にgithubでxonshrcで検索して好きなだけ改造すればと思いますが一応省略して外観を。~/.ssh/config"...(gitとか色々etc)MacとLinuxで分けれるように書いてあります。xonsh起動するようにしています。xonshrcもすぐ開けるようにしておけば、xonsh本体の開発にコントリビュートする時に便利です。xontribxontribは以下に落ち着いています。coreutils最近はxonshもptkも開発が早く、まだptkのスピードに追いついてないxontribが見受けられます。書き直せばいいだけですが、自分は今の所こんな感じです。-ライブラリの管理はpipでやってます。その他import周りを工夫しておくことでより便利に扱う事ができます。installするようにしてあります。Stimulator以下のようにすることで、新しい環境でひとまずxonshだけ動かしたいという時に、xonshrcを送るだけで対応できます。_update_contextxonshアップグレードでPATHが見えなくなったりした時にも発動するので割と重宝しています。実際にライブラリなくてもインストールされる様子importの遅延ロード以下の記事で書いていますが、xonshrcでは起動が遅くなるのでimportしないけど、xonsh実行時に逐一import書く必要がないようにlazy_moduleを利用しています。exec(t)色々追加したり消したりしましたが、今は利用頻度高いけどimportにちょっと時間がかかる系統が残り上記で落ち着いています。-基本的にパスワード入力をpexpectで処理しています。大体以下にも書いています。Stimulatorssh等は2要素認証等も含めて自動でやるようにしています。私は、ワンタイムパスワードも利用したい事を理由に全てのパスワード管理に1password、それらをshell上で利用するため1password-cliを使っています。_get_opmasterパスワードをstrで取得する部分はファイル読み込みとかで自身で書いて欲しいです。これでコマンドで、パスワードやワンタイムパスワードを取得できます。yahoo987123これをpbcopyコマンドとかに送ればクリップボードから直接ペーストできます。最近の悩みは_pass_authが若干遅い事です。上記のパスワード取得の仕組みを利用しながらssh周りも自動化しています。サーバの接続の際にも踏み台などでパスワード、ワンタイムパスワードの入力が必須な作業環境で便利です。p.interact()こんな感じで書いておけば上手くいくと思います。ワンタイムパスワードの期限がきれても_get_opリトライしてくれるので便利です。これを利用してsshやscp周りを拡張しています。_scpaなんかたまに入るゴミのために変な処理が入ってますが、大体これでなんとかなると思います。$この辺柔軟に書けるのは良いところだと思ってます。会社でも趣味でもめちゃくちゃ沢山のhostにsshしたりコマンド飛ばしたりします。そのため~/.ssh/configがぐちゃぐちゃになってしまう問題があったので、xonshコマンドで管理しています。~/.ssh/configを雑にparseして表示、もしくはstrで返すxonsh関数です。ptkのstyleを利用して、colorで出したり出さなかったりしています。all_textaliases['host']=_get_hostこんな感じでhost一覧出したりgrepしたりpecoしたりしています。これを利用して~/.ssh/configも読み書きできるようにしておくと、柔軟にお仕事できます。一部切り抜いて紹介すると以下。_update_hostちょっと切り抜きなので雑ですが、こんなん作っとけば以下でconfig更新したりしてサーバが増減しても安心です。localhost:9920あとは、自身が欲しいままにconfig_generatorを作っておけば安心。オレオレdiscription出せるのでいい感じに使えます。gitアカウントの管理gheとかgitのcliは充実してますが、自分は以下だけ。いくつかあるgitアカウント間違えないように変更しやすくしています。環境変数」の項目で書いたようなスクリプトでshellのPROMPTに表示しています。$多分もっと優勝できると思ってます。-移動はもっぱらzとpecoを使っています。aroundxontrib-zを導入しても良いですし、以下のように書いても良い感じに使えると思います。以下の記事で紹介されているものを利用しています。Qiita以下の記事と書きましたが、書いたのは元同僚で私にxonshを薦めてきた諸悪の根源です。'\n'.join(cmds)後述するkeybindとpecoの連携によって、過去のコマンド実行をあいまい検索できるようにしています。移動したディレクトリは、on_chdirで発火する関数を作成しファイルでざっくり管理しています。file=dh)これも後述のkeybindとpecoの連携部分で最近行ったdirをpecoで利用したいがためです。普段はこれをもうちょっと拡張して、特定の作業ディレクトリに行きやすくなったりするようにしています。keybindingsキーバインドです。何でもかんでもpecoに流しています。....利用してるkeybinding、実際はもっとあるんですが、業務に関わる部分が多かったものは削っています。sshやcommandをpecoであいまい検索tコマンドは後述しますがGoogle翻訳としてよく使っているので書いときました。-大体上記のような環境でやっていってますが、他に結構使ってる便利なお手製コマンドを書いておきます。google-translation仕事で英語圏メンバーとMTGを毎日してますが、英語力低いので翻訳が手元に欲しかったりします。入力、あとは日本語か英数字か正規表現で判定してGoogle翻訳かけるというコマンドを作っています。VivaldiなるブラウザのWebパネルにもGoogle翻訳をセットしていますが、Shellだとそのままpbcopyでクリップボードに流したり、英語か日本語かの判定文自分で雑にかけるので何だかんだ結構こちらを使っています。translation最初はDMM英会話の「英語でなんていうknow」なるサービスがすごくよくてスクレイピングするコマンドを作って多用していましたが、慣用句以外なら単語さえわかればconversationに盛り込めるくらいにはなってきたので今はこれだけに落ち着いています。ドキュメントやコード内の謎の英語とか調べるのにも重宝しています。画像の表示ディレクトリ内の画像から雑にsampleして、iterm2経由で表示するやつです。画像処理なんかをやってる時に、「あ〜、このtrainディレクトリって何入ってんだっけ」となるので使ってます。_imglsディレクトリ内の画像をshell上でsample以下あたりを参考に作っていて、基づいて少し変更すればLinuxやwinでも動きます。Stimulatorこれが結構便利なので割と使います。Qiitaがまさかの大盛況で助かりました。業務部分を切り取ってとりあえず書いたので、今後もうちょっとこの記事は更新されると思います。業務的なところでは、社内サーバの起動から、GPUクラスタのGPUを監視してリソース奪い取るコマンド、勤怠や日報の自動化、社内チャットへの投稿、社内のMTGルームの取得...など全部適当に書いたコマンドで何とかしています。(なかなか切り分けできてないので見せられないですが)サッと書いたスクリプトがxonshrcに入り常用してしまうという1年だったため、結構rc自体が汚く肥大化しています。backendをAWSに乗せるとか、起動の高速化とかをやっていきたいと思ってるので2019年も更にがんばっていきたいと思います。