Secure Shell。 フリーな実装として OpenSSH がある。
ターミナルでの作業の内容をファイルに書き出しておきたいことがある。特に SSH で入ったリモートホスト上での作業内容を手間をかけずにローカルホスト上にもってきたいことがよくある。
tmux だと pipe-pane コマンドを使うと各ペインでの作業をパイプでコマンドに送っておけると教えてもらったので設定してみた。
cat でもいいのだけれど自分は日付別に保存したいので以下のようなシェルスクリプトを ~/.dotfiles/bin/log-tmux として作る。
#!/bin/sh DATE=`date "+%Y-%m-%d"` LOG_DIR=$HOME/var/tmux/log/$DATE LOG_FILE=$LOG_DIR/tmux-$DATE-$1.log mkdir -p $LOG_DIR tmux display-message "Started logging to $LOG_FILE" cat >> $LOG_FILE
~/.tmux.conf に以下を追加。
# # logging # # C-t C-p (toggle) bind-key C-p pipe-pane -o '$HOME/.dotfiles/bin/log-tmux "#S-#I:#W-#P"'
これで prefix*1 + C-p をタイプすると
~/var/tmux/log/2014-04-04/tmux-2014-04-0-0:bash-0.log
みたいな感じでファイルが作られてそこに pane に出力された内容が書き出されはじめる。もういちど prefix + C-p すると停止。複数のペインで同時に別のファイルにロギングしておける(それぞれで prefix + C-p をタイプして開始させておく)。
ちなみに #S とかは以下。
保存されたファイルにはエスケープシーケンスなども含まれるので見る時は less -R や lv -c あたりを使うとみやすい。
*1自分は C-t
ノート PC でサスペンドして移動してまた開いて使おうとすると SSH 接続が切れていてまた PuTTY で接続しなおしからとか、ちょっとコードを確認したり Emacs でノートを取りたい時に不便。
そんな場合は Mosh (mobile shell) を使うと良いらしい。
ただ Windows だと Cygwin かーと思ったら MobaXterm が Mosh をサポートしているとのことなので入れてみることにした。
ポータブルアプリケーション版があるのでアーカイブを展開してそのまま使える。 Pageant に対応しているので、PuTTY で Pageant で秘密鍵管理している端末ならそのままさくっと使えるのも良い。
実際に MobaXterm + Mosh と PuTTY + SSH の両方で接続した状態で、サスペンド後に再開してみたところ後者が切れている場合でも前者はきちんとつながったままだった。
いい感じ。ノート PC ではしばらくこれを使ってみることにする。
Windows で SSH ターミナルエミュレータは PuTTY を使っているんだけれど、ちょっと配色を変更しようと思って面倒で、ついでに別のターミナルエミュレータがないかなと思って探したら RLogin というのがちょっと評判が良さそうなので試してみた。
East Asian ambiguous width characters がデフォルトでいい感じに表示されたので幸先良い感じ。
Emacs を使っているため、キーボードのオプション設定の Metaキー設定では「すべてをセット」にした。
コピー&ペーストがうまくいかないのでもうちょっと操作方法と設定を確認するつもり。
昨晩「LINE: ディズニー ツムツム」を初めてインストールして一心不乱にツムツムした。時間を消費するのでアンインストールした方が良いかも。
あとは MacBook Pro の環境整備。SSH の設定をするのに今使っている鍵を確認したら古い 1024bit の RSA 鍵や DSA 鍵が残っていたので新しい鍵を作って置き換え。その後 dotfiles や Emacs を設定してようやく MacBook Pro がそれっぽくなってきた。
あとは、ゴールデンウィークに遊びに行きたいところを検討するのに本屋へ行って東京のガイドブックを買ってきた。今のところどこに行きたいかあんまり決まっていない。
今日プリンタで印刷をしようとしたらプリンタとうまく通信できていなくて、そういえば SSH も数日前から接続できないことがあって、あれっと思ったら App Store にもうまくつながらなかったり。考えられるのはノートン セキュリティを再インストールしたことぐらい。ファイアウォールの設定も見てみたけれど問題なさそうなので、このタイミングで macOS High Sierra に上げておくことにしました。
macOS Sierra 10.12.6 から macOS High Sierra 10.13.6 へのアップグレードになります。アップグレードした結果、印刷できるようになったし SSH 問題も解決したので良しとします。
ScanSnap Manager は要アップデート。
それから iTerm2 で新しいウィンドウを開くと
failed MSpanList_Insert 0x2d4000 0x3abc7c6fbf83 0x0 fatal error: MSpanList_Insert runtime stack: runtime.throw(0x277a4b) /usr/local/go/src/runtime/panic.go:491 +0xad fp=0x7ffeefbff550 sp=0x7ffeefbff520 runtime.MSpanList_Insert(0x296e48, 0x2d4000) /usr/local/go/src/runtime/mheap.c:692 +0x8f fp=0x7ffeefbff578 sp=0x7ffeefbff550 以下続く
とエラーを吐くようになりました。.bashrc の中で読んでいる direnv が出していたので自前でビルドしていたのを捨てて Homebrew で再インストール。
brew install direnv
途中
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Error: Failure while executing; `git config --local --replace-all homebrew.private true` exited with 1.
と出て git が動かなくなってしまっていることに気がついたので、こちらは
xcode-select --install
で対応。
Ulysses 18 for Mac になってプレーンテキストファイル編集できなくなったので、この nDiki の記事ファイル作成を含め、テキストファイル編集環境を見直し。 Emacs でもいいのだけれど、せっかくなので Visual Studio Code (VS Code)にしてみようかなと。
とりあえずリモートホスト上のファイル編集には拡張機能の SSH FS を入れればいいことがわかった。 これで Emacs みたいにリモートホスト上でも検索できるといいんだけれどな(Emacs の TRAMP でリモートホストで grep)。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。
ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。