Bashシェルを使用して分析を実行するときに良い結果を与えるコマンドを同じディレクトリ(名前で「LOGBOOK」)のファイルに保存して、私がどのコマンドを実行したかを確認できることがよくあります。このような結果を得るためにこうしました。これまでは、端末からコマンドをコピーして貼り付けたり、「上」を押してコマンドをに変更したり、他の同様echo"my command" >> LOGBOOK
のいたずらを意味します。
以前はツールがあることがわかりましたがhistory
、以前に実行したコマンドをインポートしてそのようなタスクを実行する方法を見つけることができませんでしたgetlast >> LOGBOOK
。
これを行う良い簡単な方法はありますか?それとも、他の人は自分が得た結果を保存するコマンドをどのように処理しますか?
ベストアンサー1
を使用している場合は、bash
次のfc
コマンドを使用して希望の方法で履歴を表示できます。
fc -ln -1
これにより、最後のコマンドが印刷されます。-l
リストを示し、-n
コマンド番号を行プレフィックスとして使用しないことを示し、最後のコマンドのみが表示されることを-1
示します。行の先頭の空白(複数行のコマンドの最初の行のみ)が面倒な場合は、簡単に削除できますsed
。これをシェル関数に置き換えることで、要求された解決策を得ることができます(getlast >> LOGBOOK
)。
getlast() {
fc -ln "$1" "$1" | sed '1s/^[[:space:]]*//'
}
質問に応じて動作します。
"$1" "$1"
コマンドに追加していくつかの変更を追加しましたfc
。たとえば、最後にgetlast mycommand
呼び出されたコマンドラインを印刷できるmycommand
ため、他のコマンドを実行する前に保存するのを忘れた場合でも、コマンドの最後のインスタンスを簡単に保存できます。引数を渡さないとgetlast
(fc
asを呼び出すと、fc -ln "" ""
最後のコマンドだけが印刷されます)
[注:@Bramのコメントと@glenn jackmanの回答に記載されている問題を説明するために回答を編集しました。 ]