私はチュートリアルを進めていますが、このコマンドを実行することを言及しています:
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-15joeがそのユーザーリストに含まれている場合は、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何をするかわからない場合は、何かを試しても安全です。