私はチュートリアルを進めていますが、このコマンドを実行することを言及しています:
sudo chmod 700 !$
私はよく知らない!$
。どういう意味ですか?
echo $(rm -rf /)
--no-preserve-root
、そこにオプションが必要になります。プログラムで「保存しない」という言葉が表示される場合は、その機能について慎重に考えてください。
私はチュートリアルを進めていますが、このコマンドを実行することを言及しています:
sudo chmod 700 !$
私はよく知らない!$
。どういう意味ですか?
echo $(rm -rf /)
--no-preserve-root
、そこにオプションが必要になります。プログラムで「保存しない」という言葉が表示される場合は、その機能について慎重に考えてください。
回答:
基本的に、それは前のコマンドの最後の引数です。
!$
前のコマンドの「終了」です。次の例を考えてみましょう。ファイル内の単語を探すことから始めます。grep -i joe /some/long/directory/structure/user-lists/list-15
joeがそのユーザーリストに含まれている場合は、joeを削除します。引数としてその長いディレクトリツリーを使用してviを起動するか、
vi !$
Which bashが次のように展開するように単純に実行できます。vi /some/long/directory/structure/user-lists/list-15
(ソース ;ところで、便利なガイド)
この!$
トークンと特別なシェル変数の違いは何の価値もありません$_
。実際、両方とも前のコマンドの最後の引数に展開されます。ただし、!$
は履歴の展開中$_
に展開され、パラメータの展開中に展開されます。これの重要な結果の1つは、を使用する!$
と、展開されたコマンドが履歴に保存されることです。
たとえば、キーストロークを考えます
echo Foo
Enter echo !$ Jar
Enter Up Enter; そして
echo Foo
Enter echo $_ Jar
Enter Up Enter。
(変更された文字は$!
と$_
の中央のみです。)
前者では、を押すUpとコマンドラインがを読み取るecho Foo Jar
ため、stdoutに書き込まれる最後の行はFoo Jar
です。
後者では、を押すUpとコマンドラインが読み取りますがecho $_ bar
、$_
以前とは異なる値になりました。実際は$_
isですJar
ので、stdoutに書き込まれる最後の行はJar Jar
です。
別の結果として_
、コマンドのシーケンスなど、他のパラメーター展開で使用できます
printf '%s ' isomorphism
printf '%s\n' ${_%morphism}sceles
印刷しisomorphism isosceles
ます。しかし、類似の「${!$%morphism}
」拡張はありません。
Bashでの拡張のフェーズの詳細についてはEXPANSION
、man 1 bash
(オンライン版ではシェル拡張と呼ばれる)のセクションを参照してください。HISTORY EXPANSION
セクションは別のものです。
!$
insert-last-argument
、通常はにバインドされたによって、前のコマンドの最後の引数を挿入できますM-.
。
厳密に言えば!$
、履歴リストの最後のコマンドの最後の単語です。
word-シェルによってユニットとして扱われる一連の文字。単語に引用符で囲まれていないメタキャラクターを含めることはできません。
メタ文字-引用符で囲まれていないときに単語を区切る文字。メタキャラクターは、空白または次の文字のいずれかです: '|'、 '&'、 ';'、 '('、 ')'、 '<'、または '>'
空白-スペースまたはタブ文字。
例:
set -o history # enable command history
set -o histexpand # enable ! style history substitution
HISTSIZE=10
# save all lines on the history list
HISTCONTROL=
HISTIGNORE=
date
echo !$ # prints date
date>/dev/null
echo !$ # prints /dev/null
echo a b c>/dev/null
echo !$ # prints /dev/null
HISTCONTROL=ignorespace # lines which begin with a space character are not saved in the history list
echo a b c
echo d e f # space at the beginning
echo !$ # prints c
echo
何をするかわからない場合は、何かを試しても安全です。