___

___

Fishに入力すると、history | less以下が表示されます。

history | less
export HISTTIMEFORMAT="%h/%d - %H:%M:%S "
bash

Bashでは、以下を見ることができます。

  491  18/04/16 14:31:02 cd
  492  18/04/16 14:31:02 ls -l
  493  18/04/16 14:31:02 less .bashrc

したがって、!491を使用してコマンドを再実行でき、私のサーバーでも監査できますが、Fishではこれを表示する方法はありません。また、時間と日付を追加してみましたが、export HISTTIMEFORMAT="%h/%d - %H:%M:%S "何も追加しませんでした。 bashのように追加する方法についてのアイデアはありますか?

ベストアンサー1

パラメータを使用してフィッシュを実行すると、組み込みの履歴コマンドでタイムスタンプがサポートされるようになりました--show-time

(2016年10月にリリースされたFishバージョン2.4以降を使用する必要があります。)

元の例に基づいて、次の形式を指定できます。

$> history --show-time='%h/%d - %H:%M:%S '

または関数に保存します(1.再帰的および2.長いため、ここではエイリアスは使用されません)。

# ~/.config/fish/functions/history.fish

function history
    builtin history --show-time='%h/%d - %H:%M:%S ' | tail -r
end

bashのように上から下に読めるようにtail-reverseに追加のパイプを追加しましたhistory

これを魚の機能に追加すれば十分でしょう。

___

「履歴インデックス」(与えられたコマンドに対応する「行番号」)を印刷する方法がないようです。比較のために私が好むbash履歴フォーマットは次のとおりです。

  228  01/05/17 14:47:53 $> history
  229  01/05/17 14:48:11 $> vim .bash_profile
  230  01/05/17 14:48:42 $> source .bash_profile
  231  01/05/17 14:48:45 $> history
  232  01/05/17 15:15:29 $> ls
  233  01/05/17 15:15:30 $> clear
  234  01/05/17 15:15:32 $> history

そして私がこの記事を書いている間、その魚の歴史は次のとおりです。

  01/05/17 15:05:53 $> vim history.fish
  01/05/17 15:10:01 $> man history
  01/05/17 15:14:50 $> history | tail -r | less
  01/05/17 15:15:01 $> history | tail -r
  01/05/17 15:15:11 $> ls
  01/05/17 15:15:14 $> vim history.fish
  01/05/17 15:15:41 $> history

正直十分に近いです。

___

更新:しばらくすると、結果をパイプしてその行番号を取得できます。完璧ではありませんが(複数行のコマンドは、入力された各行ごとに新しい「行」として扱われます)、bashのフィッシュ履歴と同様に、必要なほとんどすべてを提供します。これが私の最終history.fishファイルです。

function history
    builtin history --show-time='%m/%d/% %T $> ' | tail -r | less -N +G
end

less -N行番号を指定し、less +G一番下からファイルを起動します(したがって、最新の項目を自動的に表示できます)。

tail -rFreeBSDベースのシステム(Mac OS Xを含む)でのみ互換性がありますが、tac(またはGNU coreutilsを使用している場合はgtac)などの同様の代替方法を使用できます。

おすすめ記事