3

2行のコードがあります

1) 次のコードを使用:

for i in `ls *.properties`; do cat $i; done

エラーが発生します:

cat: file_name.properties: No such file or directory.

2)一方で:

for i in *.properties; do cat $i; done

正常に動作します!

どちらも同じだと思いました。誰かが2つの違いを理解するのを手伝ってくれますか? bash シェルの使用。

4

2 に答える 2

6

次のコマンドは何を出力しますか?

cat -v <<< `ls *.properties`

問題は、それlsが奇妙なエイリアスであることだと思います。たとえば、次のようなものです

ls='ls --color'

編集:これは前に見たことがあります。エイリアスは次のとおりです。alias ls='ls --color=auto'

于 2012-05-15T20:54:13.617 に答える
0

ほとんどの場合、一致するディレクトリがあり*.propertiesます。次にls、このディレクトリ内のファイルをディレクトリ名なしで出力します。その場合、catは指定されたファイル名を見つけられません。

したがってfile_name.properties、実際のディレクトリにあるか、サブディレクトリにあるかを確認してください。

編集

問題を再現するには、これを試すことができます:

# cd /tmp
# mkdir foo.properties
# touch foo.properties/file_name.properties
# for i in `ls *.properties`; do cat $i; done
cat: file_name.properties: No such file or directory
于 2012-05-15T20:56:17.987 に答える