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