Bashで最後に実行されたコマンドを取得する方法は?わかりました!!:pは最後のコマンドを出力しますが、bashプロンプト以外には使用できないようです。試しましたがecho !!:p
印刷されました。
~/ダウンロード$pwd ダウンロード ~/ダウンロード$エコ!!:p エコパスワード
これを変数に使用したいPROMPT_COMMAND
ので、印刷できるように文字列としてインポートする必要があります。見つけることができるショートカットがありますか?私は間違った場所を探していますか?
まだ分からないと思います。出力後および次のプロンプトの前に再表示できるように、最後のコマンド実行を保存する必要があります。たとえば、出力が次のようになります。
~/ダウンロード$pwd ダウンロード パスワード ~/ダウンロード$
.bashrc
ファイルのプロンプトを変更しています。
PROMPT_COMMAND='echo -en "\033[38;5;2m"!!:p"\033[0m\n"') PS1='\W\$'
しかし!! :pはbashプロンプトでのみうまく機能します。それでは、後で再印刷できるように最後のコマンドをどのように保存しますか?
答え1
history
組み込みコマンドを使用して、実行したばかりのコマンドラインにアクセスできます。 (history 1
実行したばかりのコマンドラインを印刷するのに、なぜfc -nl -1
同じコマンドラインを印刷するのかわかりませんfc -nl 0
。)
PROMPT_COMMAND='echo -en "\033[38;5;2m"; history 1; echo -en "\033[0m\n"'
コマンドテキストの前に数字が印刷されます。その番号を削除したバージョンです。 (履歴行が99999本より多い場合は正確ではない可能性があります。bashがその数値の形式をどのように指定するのかわかりません。)
prompt_function () {
local prompt_history="$(history 1)"
prompt_history=${prompt_history:7}
echo -En $'\033[38;5;2m'"$prompt_history"$'\033[0m\n'
}
PROMPT_COMMAND=prompt_function
(これはecho -en ..."$prompt_history"...
コマンドラインでバックスラッシュを拡張するので、echo -E
シェル拡張を使用して.を使用して$''
制御文字を生成するようにしました。)