コンソール(端末)で十分な時間を費やしていることが判明しました。 時々、そこでいくつかのコマンドを実行し、それらの結論を注意深く研究します。 特定のコマンドの結論に戻らなければならないことがよくありますが、それは絶えず失われます:端末が非難されてから
tmux
でウィンドウを閉じてから、他のコマンドの結論がずっと前に非常に有用な行を打ち込んで埋めました。
ユーティリティの出力を保存するために、私は多くの人と同じように
tee
使用しました。 それは機能しましたが、無限の
error.log
、
out.log
、
output.log
、
err.log
log.log
、
lll.txt
などの間で絶え間なく大騒ぎし、それが
log.log
狂わせなかった場合、それはめちゃくちゃ迷惑でした。 一定の順序を維持する代わりに、これらの同じログを埋め、定期的に埋葬地をバックアップする新しいフォルダー(1)を作成することは常に魅力的でした。
それから私は
ahを書きました。これは私の人生を大きく改善した小さなユーティリティです。
ahは、ほとんどすべてのシェルに組み込まれている組み込み履歴コマンドへの小さな追加であると想定されていました。 ただし、ahは、zsh(私は自分で使用するため)とbash(zshを使用しないほとんどの人が使用するため)の2つでしか動作しません。 これは決して歴史に代わるものではなく、むしろ歴史への追加です。 ああ、基本的に、4つのことを行うことができます。履歴を表示し、コマンドストリームの出力を保存し、履歴内の数値にバインドし、要求に応じて表示します。 さらに、ブックマークなどの些細なこともあります(履歴からのエントリには名前を付けることができます)。
コマンド出力の保存
ahは、コマンドの出力を組み合わせて保存する方法を知っており、それ自体をカタログ化します。 最も単純なケースでは、これを行うだけです:
➜ ah t -- find ./app -name "*.go" -type f ./app/historyentries/get_commands.go ./app/historyentries/parser.go ./app/historyentries/keeper.go ./app/historyentries/history_entry.go ./app/historyentries/history_processor.go ./app/environments/environments.go ./app/utils/re.go ./app/utils/logging.go ./app/utils/synchronized_writer.go ./app/utils/exec.go ./app/utils/utils.go ./app/commands/bookmark.go ./app/commands/remove_bookmarks.go ./app/commands/gc.go ./app/commands/list_trace.go ./app/commands/tee.go ./app/commands/execute.go ./app/commands/show.go ./app/commands/list_bookmarks.go ./app/slices/slices.go
出力は保存され(stdoutとstderrの両方で結合されます)、後で要求することができます。 たとえばティーとの違いは何ですか? ティーを使用すると、そのようなものも書くことができます
➜ find ./app -name "*.go" -type f |& tee output.log
実際、これらのチームは同等ではありません。 事実、teeの場合、stderrをstdoutにリダイレクトするため、teeの後にそれらをフィルタリングする機能が失われます。 ああはこの分離を保持します。 つまり、次のように書くことができます
➜ ah t -- find ./app -name "*.go" -type f > /dev/null
そして、画面にstderr出力のみを取得します。 そして、ああ保存するものは何ですか? 両方のスレッドが保存されます。 そして戻りコード。 はい、ああは前のコマンドが動作したのと同じコードで終了します。 ここでncursesアプリケーションを実行しても、Ahはsshで正常に動作します。 必要に応じて、擬似TTYのサポートと、実際のインタラクティブシェルで実行する機能があります。
ストーリー表示
➜ ah s 10 ... !10109 (02.11.14 18:05:14) nvim main.go !10110 (02.11.14 21:48:12) * ah t -- find ./app -name "*.go" -type f
はい、ahは
HISTFILE
の内容を表示でき、
HISTFILE
を知ってい
HISTTIMEFORMAT
。 番号の横に感嘆符がある理由を推測してください。 しかし、星は
ah t...
前にどういう意味ですか
ah t...
? これは、ahがこのコマンドの出力を保存することを意味します。
l
サブコマンドを使用して出力を表示できます。
➜ ah l 10110 ./app/historyentries/get_commands.go ./app/historyentries/parser.go ./app/historyentries/keeper.go ./app/historyentries/history_entry.go ./app/historyentries/history_processor.go ./app/environments/environments.go ./app/utils/re.go ./app/utils/logging.go ./app/utils/synchronized_writer.go ./app/utils/exec.go ./app/utils/utils.go ./app/commands/bookmark.go ./app/commands/remove_bookmarks.go ./app/commands/gc.go ./app/commands/list_trace.go ./app/commands/tee.go ./app/commands/execute.go ./app/commands/show.go ./app/commands/list_bookmarks.go ./app/slices/slices.go
ところで、10 in
ah s 10
文字通り「最後の10チームを表示する」という意味です。 同時に、スライス構文がサポートされます(Pythonの場合のように1:1):
ah s 10 20
は、11から20までのすべてのコマンドを表示します
ah s 10 _20
から20まで(
_
でなく
-
)。 正規表現で検索することもできます+原始的なあいまい一致があります。
さらに、サブコマンド
b
をブックマークし、
lb
でスクロールし、
rb
で削除し、
gt
で古い結論を消去できますが、これらは些細なことです。
私は他の誰かがより簡単に生きることを願っています
だからそこに。
github.com/9seconds/ah