Re: echo * の実行結果について
ktkyz
投稿数: 22
modukuさん
>どういった理屈で、0以上の文字列である「*」がAAAA BBBB CCCCというファイル名に展開されるんでしょうか?
についてですが、メタキャラクタ(*)の意味は「カレントディレクトリにあるすべてのファイル名又はすべてのディレクトリ名の一覧で条件が0以上の文字列にマッチするものをスペース区切りしたもの」理屈を説明するため、あえて回りくどい表現に;
<言い換えればカレントディレクトリにあるすべてのファイル名やディレクトリ名の文字列をスペース区切したものに展開
ファイル名は少なくとも1文字以上のため、すべてのファイル名・ディレクトリ名を示します。
検証環境の例では、カレントディレクトリにファイル名「AAAA」と「BBBB」と「CCCC」の3つのファイルがある例です。3つのファイル名とも0以上の文字列条件にマッチする、言い換えればすべてのファイル名の間にスペースを入れて
「*」=「AAAA BBBB CCCC」と展開されます。
展開された後に、コマンドに渡されます。
例えば、「echo *」は「*」=「AAAA BBBB CCCC」と展開されechoコマンドに渡され
「echo *」= 「echo AAAA BBBB CCCC」 となります。
文字列をメタキャラクタを使用して「AA*」とした場合は、ファイル名「AAAA」にしかマッチしないため、
「A*」=「AAAA」と展開されます。
>どういった理屈で、0以上の文字列である「*」がAAAA BBBB CCCCというファイル名に展開されるんでしょうか?
についてですが、メタキャラクタ(*)の意味は「カレントディレクトリにあるすべてのファイル名又はすべてのディレクトリ名の一覧で条件が0以上の文字列にマッチするものをスペース区切りしたもの」理屈を説明するため、あえて回りくどい表現に;
<言い換えればカレントディレクトリにあるすべてのファイル名やディレクトリ名の文字列をスペース区切したものに展開
ファイル名は少なくとも1文字以上のため、すべてのファイル名・ディレクトリ名を示します。
検証環境の例では、カレントディレクトリにファイル名「AAAA」と「BBBB」と「CCCC」の3つのファイルがある例です。3つのファイル名とも0以上の文字列条件にマッチする、言い換えればすべてのファイル名の間にスペースを入れて
「*」=「AAAA BBBB CCCC」と展開されます。
展開された後に、コマンドに渡されます。
例えば、「echo *」は「*」=「AAAA BBBB CCCC」と展開されechoコマンドに渡され
「echo *」= 「echo AAAA BBBB CCCC」 となります。
文字列をメタキャラクタを使用して「AA*」とした場合は、ファイル名「AAAA」にしかマッチしないため、
「A*」=「AAAA」と展開されます。
投稿ツリー
-
echo * の実行結果について
(moduku, 2013-7-6 14:34)
-
Re: echo * の実行結果について
(ktkyz, 2013-7-6 17:37)
- Re: Re: echo * の実行結果について (moduku, 2013-7-6 18:02)
- Re: echo * の実行結果について (arashi1977, 2013-7-6 18:11)
- Re: echo * の実行結果について (ktkyz, 2013-7-6 20:52)
- Re: echo * の実行結果について (moduku, 2013-7-7 16:27)
- Re: echo * の実行結果について (ktkyz, 2013-7-7 19:14)
-
Re: echo * の実行結果について
(arashi1977, 2013-7-8 8:42)
- Re: Re: echo * の実行結果について (moduku, 2013-7-9 0:17)
- Re: echo * の実行結果について (takenin, 2013-7-15 5:41)
-
Re: echo * の実行結果について
(ktkyz, 2013-7-6 17:37)