コマンド履歴をシェルスクリプトにエクスポートする

コマンド履歴をシェルスクリプトにエクスポートする

ソースからインストールするアプリケーションに対してビルドツールへの依存関係を構築する必要があるなど、複雑なインストールプロセスに従う必要があることがよくあります。

一度やった後、私が行ったすべてのステップを覚えようとしたくありません。

zsh(および他のシェル)のコマンド履歴には、すでに私が行った操作の履歴があります。たとえば、最近実行された100のコマ​​ンドを.shスクリプトにエクスポートできますか?

その後、このスクリプトを編集し、インストールを開始する前にコマンドを削除し、誤ったコマンドを削除し、同様の環境にいる他のユーザーに提供できるインストールスクリプトを残すことができます。 (または他のコンピュータで自分自身を使用してください。)

私のコマンド履歴は、私のホームディレクトリのドットファイルの1つにすでに保存されているようです。

ベストアンサー1

組み込みコマンドを使用すると、fc複数の条件を使用して履歴からコマンドを抽出できます(参考man zshbuiltins文献を参照)。

fc「修復コマンド」を示し、引数なしで呼び出されると、最後に入力したコマンドを含むエディタが開きます。エディタのすべての機能を使用してコマンドを変更し、zsh保存および終了時に固定コマンドを実行できます。デフォルトでは、使用されるエディターですが、シェル変数を使用する場合、またはコマンドを使用して特定のエディターを使用したい場合は、viそれをオーバーライドできます。EDITORfcFCEDIT

fc最後のコマンドに加えて、記録を操作するためのさまざまなオプションがあり、それらのいくつかはユーザーが要求するものを正確に提供します。

この-lオプションは履歴の内容を「表示」します。デフォルトでは、最後の16個のコマンドがリストされていますが、下限と上限を指定して履歴へのインデックスとして指定することも、コマンドの開始テキストとして指定することもできます。負のインデックスは最後のコマンドで機能するため、最後の15行が抽出されます。

fc -l -15

デフォルトでは、fc -l履歴インデックスは出力の最初の列として含まれます。必要な正確な範囲が得られたら、-n数字を削除できます。

fc -ln -12 -5

その行(12行から5行)のみがスクリプトに適した形式で抽出されます。

コマンドを境界として使用すると便利です。

fc -l rm ls

rm最後の項目から始まり、最後の項目で終わるすべての履歴をリストします。したがって、ls出力には1つのコマンドがありますが、複数のコマンドがある可能性があります。rmls

タイムスタンプの追加、部分コマンドの置き換え、部分履歴のロードと保存、完全な履歴スタックの切り替えなど、さまざまなオプションがあります。

おすすめ記事