履歴から最後のN個のコマンドを取得する方法は?


37

私は私の最後のNコマンドが何であるかを見たいですhistory。うまくいくと思いましたhistory | tail -n 5が、複数行のコマンドは、それが持つ行の数だけカウントされることに気付きました。

$ echo "hello
how are you"
$ history | tail -2
how are you"
1051  history | tail -2

だから私の質問は次のとおりです:これを達成するためにコマンドの出力を解析する必要がありますか?


1
私はstackexchangeを好きな理由//、これがある
ネイサンBasanese

回答:


46

見つけた!

履歴[n]

引数nは、最後のn行のみをリストします。

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2

4
それはのためのようだtcshyashbash。あなたは他のようなシェルの対応する情報を提供したいことがありzshfishksh、およびPOSIXの方法。
ステファンシャゼル

1
私はこれらがコンピュータにインストールされていませんが、私は大好きです。情報を取得するための特定のソースをお勧めしますか?OpenGroupでは、私はへの参照を参照pubs.opengroup.org/onlinepubs/9699919799
fedorqui

6
fc -l -2も動作します(ただしfc -l -2、出力に電流を追加しません)
Evgeny Vereshchagin


fcちなみに、最後のn個のコマンドはで表示されます-n。表示from n commands until lastのみですn(合計数を知る必要があるため、あまり意味がありません)。ドイツ語で言うと、ein kleiner aber feiner unterschied小さいながらも楽しいデフ。-lすでに指摘した@EvgenyVereshchaginとして使用することを忘れないでください。
ティモ

0

OpenBSD 6.3(PD KSH v5.2.14 99/07 / 13.2)でテスト済み。

history [b]

番号[b]のエントリから始まるすべての履歴を表示します

history [b] [e]

[b]から[e]までの履歴間隔を表示します


0

次のような負の数を使用することもできます。

history -1

または、範囲(最後の10)を使用します。

history -1 -11 

bash 5.0.11では動作しません。
joelostblom

0

履歴を適用すると、最後の履歴コマンドも表示されます。スペースの浪費を防ぐには、このようなエイリアスが便利です。

alias hs=' history 16 | head -n 15'

(コマンド自体history 16 | head -n 15

別の便利な履歴エイリアス:

  alias hsg=' history | grep ' 

(ctr + Rが小さすぎて選択できない場合)

_historyの前のスペースは、履歴に書かれていないコマンドを実行します

fc -l#は、最後の16個のコマンド(およびそれ以上)もリストします。


2
本当ですが、これはいずれも当面の問題に対処していません。
ジェフシャラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.