Cシェルで端末履歴を同期する

Cシェルで端末履歴を同期する

ビジネス上のリモートデスクトップを使用して、bashの代わりにcシェルを使用してLinuxサーバーにリモートでアクセスします。セッション(セッション1と呼ばれる)では、指定された端末で複数のタブを開き、すべてのタブにコマンドを入力します。場合によっては、端末に複数のタブを持つ別のセッションを開き(セッション2とセッション3と呼びます)、すべてのセッションに多くのコマンドを入力することがあります。

どのセッションでも端末のどのタブからも履歴コマンドを呼び出すと、すべてのタブとセッションで使用されたすべてのコマンドが含まれていないことがわかりました。一部のコマンドのみが保存されます。

私は次の歴史が欲しい:

  • 覚えるみんな現在どのタブ、端末、またはセッションにあるかにかかわらず、コマンドを入力してください。
  • すべてのタブ/ターミナル/セッションから即座にアクセス可能

すばらしいことがありますが、郵便はがき約12年前にこれを行う方法、つまりacシェル環境ではなくbash環境について説明しました。したがって、一つではなく.bashrc一つです.cshrc。 Cシェル環境で動作するソリューションを探しています。

修正する:

私はこれをファイルの上部に追加しようとしました.cshrc

set history=10000
set savehist=(10000 merge)
alias precmd 'history -L, history -S'

そのうち set はhistory=10000履歴リストのサイズを設定し、

set savehist=(10000 merge).historyセッション終了時に履歴リストに格納される行数を設定し、Mergeは終了時にセッション履歴と全体の履歴をマージします。

alias precmd 'history -L; history -S'端末のすべてのコマンドの前に実行するコマンドをいくつか設定します。この-Lオプションは、現在の履歴リストに履歴ファイルを追加します。この-Sオプションは、履歴リストをファイルに記録します。

私が望む効果はありません。端末に履歴を入力するたびに、コマンド履歴リストのサイズが大きくなります。ドラマティックに。コマンド履歴一覧いいえセッション内の端末タブ全体で更新されます。

私も何の改善もせずに試しました。

set history = 10000
set histdup = erase
set savehist = (${history} merge lock)

alias precmd 'history -S'
alias postcmd 'history -M'

すべての行が何を意味するのか完全にはわかりませんが、precmdコマンドを実行する前にこれを行う必要があることを意味し、postcmdコマンドを実行した後にこれを行うことを意味しています。この-Mオプションは、履歴ファイルの内容を現在の履歴リストとマージし、各コマンドに含まれるタイムスタンプに基づいて結果リストをソートします。

.cshrcファイルに追加するいくつかのコア行が欠落しているか、順序を変更する必要があるかもしれないかのようにかなり近いようです。

関連情報