victorious_a
@victorious_a

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Linuxのパス名展開ができない

Linuxのパス名展開を学んでいたのですが、画像のような表示が出てきて、*, ?のどちらもうまくいきませんでした。原因は何でしょうか?
スクリーンショット 2024-11-15 190704.png

0

3Answer

回答ありがとうございます。lsの探す範囲がカレントディレクトリ内のみであることを理解できておらずこのようになっていたようです。オプションについても教えていただきありがとうございました。

1Like

引数なしでlsだけを試してみてください。
その結果、baで始まるファイルは存在しない、と思います。
現在のディレクトリ(カレントディレクトリ)はpwdコマンドで確認できます。
/home/Ayu ?)

0Like

Comments

  1. @victorious_a

    Questioner

    回答ありがとうございます。
    lsの探す範囲はカレントディレクトリ内のみということでしょうか?

  2. @victorious_a

    Questioner

    解決しました! lsはカレントディレクトリ内のみを探すということを理解できていませんでした。ありがとうございました。

  3. 解決でよろしければ、当Q&Aをクローズしてください。

パターン ba* は、 ba から始まるファイル名が1つもないとき文字列 ba* に展開されます。つまり画像の場合の ls ba*ls 'ba*' と書いたのと同じで、名前が文字通り ba* のファイルを開こうとして失敗しています。パターン ba?? についても同様です。

この挙動を変えることもできます。 Bash では、 nullglob オプションをセットすると一致しなかったパターンを空文字列に展開します。 failglob オプションをセットすると一致しないパターンを含むコマンド行は実行せずにエラーを出します。オプションのセットは shopt -s failglob のようにします。

0Like

Comments

  1. @victorious_a

    Questioner

    カレントディレクトリ内のみを探すということを理解できていませんでした。
    オプションや、詳しい挙動についても教えてくださりありがとうございました。

Your answer might help someone💌