
次のようにコマンドを繰り返し、コマンドの後にテキストを追加する方法を知っています!!
。
ls -l
!! tmp
2行目はに展開されますls -l tmp
。
しかし、単語の間にコマンドにパラメータを追加するにはどうすればよいですか?たとえば、次のようにした場合:
ls tmp
-l
...その後、内容全体を再入力するか、上矢印キーを押して矢印キーを使用してカーソルを正しい位置に設定せずにコマンドにパラメータを追加したい場合がよくあります。無効に!! -l
なるため動作しませんls tmp -l
。 (実際にここで使用した簡単な例よりもコマンドがはるかに長いです。)
つまり、?? -l
whereが??
前のコマンドを繰り返すが、-l
最初の単語と2番目の単語の間に追加するものなどを探しています。
明確にするために、ls -l tmp
これは単純化された例にすぎません。実際のユースケースは同様の状況に近いです/very/long/path/to/very-long-command --with=a --very=long --parameter=list
。
答え1
!!:0
は前のコマンドの0番目の単語で、!!:*
0番目の単語を除くすべての単語です。
!!:0 -l !!:*
あなたが探しているコマンドです。
源泉https://www.gnu.org/software/bash/manual/bash.html#Word-Designators
答え2
あなたはできます:
$ ls -l
[..]
$ !:0* /tmp
[..]
次に、マンページをls -l /tmp
参照してください。bash
Word Designators
Word designators are used to select desired words from the event. A : separates the
event specification from the word designator. It may be omitted if the word
designator begins with a ^, $, *, -, or %. Words are numbered from the beginning of
the line, with the first word being denoted by 0 (zero). Words are inserted into the
current line separated by single spaces.
0 (zero)
The zeroth word. For the shell, this is the command word.
n The nth word.
^ The first argument. That is, word 1.
$ The last argument.
% The word matched by the most recent `?string?' search.
x-y A range of words; `-y' abbreviates `0-y'.
* All of the words but the zeroth. This is a synonym for `1-$'. It is not an
error to use * if there is just one word in
the event; the empty string is returned in that case.
x* Abbreviates x-$.
x- Abbreviates x-$ like x*, but omits the last word.
If a word designator is supplied without an event specification, the previous command
is used as the event.
答え3
Bashを使用すると、プロンプトで履歴からコマンドをすばやく検索して返すことができ、実行する前に手動で編集できます。
プロンプトによると:
- ~によるとCtrl-R(図右反転):現在の反転モードになっていることを知らせるために、プロンプトを変更する必要があります。
- コマンドの任意の部分を入力し始めます(例えば、またはmatchを入力することもできます
ls
)tmp
。mp
入力ls tmp
すると、キーストロークと一致する最後のコマンドが表示されます。 - コマンドが見つかったら、
tab
通常のプロンプトでそのコマンドを入力するだけです。まだ実行されておらず、ここでパラメータの追加、削除、変更、その他のコマンドの適用などの修正を待っています。同じファイルが待っています。
答え4
前のコマンドを起動し、コマンド名の直後にオプションを追加するには、次のキーを押します。
Up Home Ctrl+ Right Space(オプション入力)Enter
カーソルキーがシステムで動作しない場合は、代わりにEmacsアクションキーを使用できます。
Ctrl+++ P Ctrl(入力オプションA Meta)F SpaceEnter
コマンド名に複数の単語が含まれている場合(たとえば、スラッシュがあるパスなど)、Ctrl+はRight最初のスラッシュを過ぎて移動します。代わりに、最初のスペースを検索します。
Up Home Ctrl+ S Space Esc Space(入力オプション) Enter
Ctrl+++ (入力P CtrlオプションA Ctrl)S Space Esc SpaceEnter
この検索を使用すると、++ではなくUp Up、Up HomeまたはCtrl++の代わりに始めることができます。キー入力の数は同じですが、入力は少し簡単ですが、直感的ではありません。P CtrlPCtrlP CtrlA
必要に応じて使用できます歴史的な代替施設、コマンドにスラッシュが含まれていると、キー入力の数が減ります。
^ ^ --option
オプションの後のスペースに注意してください。コマンドの最初のスペースをスペース、新しいオプション、その他のスペースで置き換えます。