端末でこのようなコマンドを実行すると、
$ tyop --count 3 --exact haveibeenpwned
このコマンドは、次のエラーコードを返します。
command not found: tyop
、
コマンドライン引数を--count 3 --exact haveibeenpwned
別のコマンド名(たとえばtypo
代わりにtyop
)に保ちながら最後のコマンドを再実行するにはどうすればよいですか?
$ typo --count 3 --exact haveibeenpwned
!!
可能であれば、またはなどのショートカットキーまたはシェル機能を探しています!^
。
答え1
typo !*
~からman 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.
* 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.
答え2
上矢印を押して入力行を手動で編集するなど、明らかなものに加えてGNUリードライン(および他の多くのプログラムで使用されていますbash
)には、いくつかの便利な履歴編集機能が組み込まれています。 !*
他の答えで述べたように、それはその一つです。
別の方法は、文字列置換機能を使用することです^
。からman bash
:
^string1^string2^
迅速な交換。前のコマンドを繰り返して、string1を
string2に置き換えます。 (以下の修飾子を参照)と同じです!!:s^string1^string2^
。
^tyop^typo^
この機能を使用すると、Enter を入力して押してコマンドを変更できます。
Bashの歴史を通してできることははるかに多いです。実行しman bash
て検索して、HISTORY EXPANSION
このセクションとすべてのサブセクション(Event Designators
、、Word Designators
およびModifiers
)を読んでください。
ちなみに、タイトル付きのセクションを読んだり、少なくともREADLINE
それが何をしているのかをおおよそのアイデアを得るために見ることも価値があります。 readline の完全なドキュメントは以下にあります。https://tiswww.cwru.edu/php/chet/readline/rltop.htmlそしてhttps://tiswww.cwru.edu/php/chet/readline/readline.html
答え3
この!$
変数は、前のコマンドの最後のパラメータを保存します。
例:
touch hello
cat !$ #equivalent to "cat hello"
!*
$_
すべてのパラメータを保存します。
詳細と代替コマンドを含む同様の質問ここ