私は簡単なスクリプトを書いて、grep、find、sedなど、私のお気に入りのコマンドをすべて保存したいと思います。
シェルで履歴コマンドを使用する場合(history)を使用して、すべての履歴コマンドを表示できます。 「!」(感嘆符)記号を再利用して、前のコマンドをインポートできます。
2099 -> ls -lah(私の記録から)を仮定しましょう。
>!2099 <- ENTER
>ls -la[CURSOR]
次の行に を入力します'!2099 <- ENTER'
。'ls -la[CURSOR]'
シェルスクリプトでこれを実装する方法を知っている人はいますか?
入力文字列から削除しようとしましたが、'\r'
これまでは機能しません。
答え1
このfc
コマンドを使用すると、履歴内のコマンドを編集して一覧表示できます。これは、歴史に関連するすべてをスクリプト化するときに非常に便利です。リスト項目:
fc -ln [first] [last]
-l
-n
履歴番号の表示を防止するリストフラグで、[first]
履歴[last]
コマンドの番号です。単一のコマンドをリストするには、その番号を繰り返します。したがって、あなたの例を使用して:
cmd=$(fc -ln 2099 2099)
echo "$cmd"
ls -la
出力には最初にタブがあるので、fc
パイプまたはsed 's/^\t//'
tr -d '\t'