履歴ユーティリティを使用して、以前に入力したコマンドを再度実行せずにコピーするにはどうすればよいですか?


14

historyCentOSでコマンドを使用して以前に入力したコマンドのリストを取得できますが、次のような操作を行うと!372、historyは参照されたコマンドを実行しようとします。

現在のカーソルに表示される前の実行コマンドが必要です。以下に例を示します。

[dev@home ~]$ previous_command_no_execute!372  

回答:


25

どうですか、これをコマンドラインに入れてください:

$ !372

次にを押し、ESC続いてを押しCTRL+Eます。これにより、実際に実行せずにコマンドラインで自動展開されます。(env varsを含む行の他のすべても展開します)

私の知る限り、これはBashでのみ機能します。


はい、これは正確な解決策です。
セントスヌーブ

1
zshのソリューションの場合、入力後にTab !372キーを押すと、自動的に展開されます。
リード

10

Ctrlr元のコマンドからいくつかの文字を使用して入力できます

(reverse-i-search)`/etc': sudo /etc/init.d/apache2 restart

上記のように入力Ctrl-r /etcしてsudo /etc/init.d/apache2 restart、履歴からコマンドを取得しました


6

history | grep 372 動作するはずですよね?

編集:

さらにecho !372 > /dev/clip、コマンドディレクトリをクリップボードに配置するようなこともできます。


いつも私のために働いた
...-voretaq7

いいえ、以前に実行された特定のコマンドを見つけるだけです。
セントスヌーブ

それから、私と@ voretaq7の両方があなたの質問を誤解しています。おそらくもう少し明確にできますか?
-MDMarra

@MDMarra質問を更新しました。それがさらに光を放つことを願っています。
セントスヌーブ

@centosnoobはあなたのアップデートを見て、コンソールがマウスとコピー&ペーストをサポートしていると仮定します(そして最近ではコピー&ペースト機能のない端末スタイルのコンソール上に直接いることはまれです)コピー&ペーストソリューションは本当に痛みが少ないです。私は私の答えに概説されているよう編集VI-styleコマンドは、別のオプションですが、私はviの狂信者だとさえ私は ...のvi形式のコマンド行編集を使用していない
voretaq7

4

MDMarraは簡単な方法を提供しました(history|grepデスクトップ環境がある場合は、デスクトップ環境を使用してコピー/貼り付けします)。あなたデスクトップ環境やマウスを持っていない場合に動作するハードな方法を提供します。

シェルとしてbashを実行していると仮定します。

$ set -o vi
$ ESC372k

(あなたは今、あなたがライン上で、372個のコマンド前に走ったコマンドがあるでしょう、そしてあなたはになりますviスタイルのコマンドモード。Editを使用していた場合は、同じようにex/ vi


面白い。これは、「set -o vi」を早い段階で実行している場合にのみ機能するようです。それをbashプロファイルなどに入れる必要があるかもしれません。
マット

それは、「私は常にviを使用しているのに、なぜviバインディングを使用してbashの行を編集しないのか」ということの1つです。慣れるまで少し時間がかかりますが、他の人が使うemacsスタイルのバインディングは奇妙で役に立たないと感じます。
cjc

@Mattはい-編集モードを-style編集に設定する必要がありますvi。これは、必要があるとすぐとして働きset -o vi、そして(編集モードは、シェルのコマンド履歴や他のものへの単なるインターフェースである)あなたの全体の歴史のために働く必要があります。
voretaq7

@cjc私は選択したエディターとしてviを使用していますが、コマンドラインの編集にviスタイルのバインディングを使用していません(たまたまviモードでこれを行う方法を知りましたが、 emacs-modeの同等のもので、より友好的かもしれません:)。
voretaq7

4

実行する最も簡単で迅速な方法は、次のとおりです。

!372:p

続くEnter


0

デスクトップシステムまたはサーバーを使用していますか?

シェルを開いた状態のKubuntuデスクトップシステムでは、マウスによる強調表示がサポートされています。通常、テキストをマウスで強調表示し、マウスの中ボタンをクリックして貼り付けます。

そのため、コマンドをgrepできます。テキストを強調表示します。マウスの中ボタンで貼り付けてから編集します。

より良い方法があるかもしれませんが、これは私のために動作します。


0

自動貼り付けを行うコマンドはありませんが、実行する前にエディターにコマンドを呼び出して編集することができます。これはあなたが探しているものを達成するかもしれませんが、コマンドを終了すると実行されるので、中止したい場合は、エディターを終了する前に編集バッファーをクリアする必要があります。

fc -e vi 372 372

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.